Habilitar – Deshabilitar el touchpad en GNU/Linux

Me compré una nueva portátil, luego de 4 años utilizando la misma tablet, la he comprado más que todo por su procesador iCore quad-core que me permite virtualizar de muchísimas maneras (además que mi pobre Tablet ya merece un descanso).

En fin, una de las cosas que más me estresa, es haber perdido el uso de los touchpads, cuando se tiene una tablet, se olvida como funcionan los ratones y los touchpads xD.

Pero no conforme con eso, este touchpad es ultra-sensible y multitouch, toda una pesadilla a la hora de escribir y que accidentalmente caen tus dedos sobre él.

Entonces, he querido documentar varias formas de habilitar y deshabilitar el touchpad …

Manos a la obra! …

Herramienta Gráfica : Gsynaptics

Simplemente instalamos el paquete gsynaptics (por Gestor de paquetes o por cónsola) y nos aparecerá una opción en el menú «Sistema > Preferencias > Pointing Devices» que nos permitirá activar y desactivar el touchpad.

Script: Toggle Touchpad

Como uno nunca sabe cuándo va a escribir, un botón rápido en la barra de herramientas que permita el «toggle» o cambio rápido entre habilitado y deshabilitado, lo cual es bastante útil.

El script es bastante sencillo, hace uso del programa «synclient» que viene en el paquete xorg-xserver-input-synaptic, el cual permite configurar todas las opciones del synaptic.

El script:

#!/bin/bash

# Authors:
# Jesus Lara <jesuslara@devel.com.ve>
# version: 0.1
# Copyright (C) 2010 Jesus Lara
# Toggle between disable and enable Touchpad

SYNCLIENT=`type synclient | awk '{print $3}'`
SYNCLIENT=/usr/bin/synclient
if [ ! -f "$SYNCLIENT" ] ; then
        echo "No se ha encontrado synclient"
        exit 1
fi

ENABLE=$(synclient -l | grep TouchpadOff | awk '{print $3}')

if [ "$ENABLE" != "1" ]; then
        $SYNCLIENT TouchpadOff=1
else
        $SYNCLIENT TouchpadOff=0
fi

exit 0

Copien el texto en un archivo, conviértanlo en ejecutable:

chmod +x toggletouchpad.sh

Y prueben ejecutándolo en la cónsola, luego, coloquenlo como botón en la barra de herramientas:

Y tendrán un botón que permite activar y desactivar el Touchpad a voluntad en la barra de herramientas.

Detectando automáticamente la palma de la mano

También podemos, si tienes una portátil que no tiene segunda opción de ratón (como el trackpoint IBM de las Lenovo), es mejorar la sensibilidad de detección de la palma de la mano, esto es, que a una presencia de algo «más grande y con más presión» que un dedo, entonces obviarlo, para ello debemos configurar nuestro synaptic en el Xorg y agregar las siguientes opciones:

file: /usr/share/X11/xorg.conf.d/55-touchpad.conf

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        Option          "MinSpeed"              "0.5"
        Option          "MaxSpeed"              "1.0"
        Option          "AccelFactor"           "0.075"
        Option          "TapButton1"            "1"
        Option          "TapButton2"            "2"     # multitouch
        Option          "TapButton3"            "3"     # multitouch
        Option          "VertTwoFingerScroll"   "1"     # multitouch
        Option          "HorizTwoFingerScroll"  "1"     # multitouch
        Option          "HorizEdgeScroll"       "on"
        Option          "VertEdgeScroll"        "on"
        Option          "CoastingSpeed"         "8"
        Option          "CornerCoasting"        "1"
        Option          "CircularScrolling"     "1"
        Option          "CircScrollTrigger"     "7"
        Option          "EdgeMotionUseAlways"   "1"
        Option          "LBCornerButton"        "8"     # browser "back" btn
        Option          "RBCornerButton"        "9"     # browser "forward" btn
        Option          "SHMConfig"             "on"
        # deteccion de palma
        Option          "PalmDetect"            "1"
        Option          "PalmMinWidth"          "10"
        Option          "PalmMinZ"              "200"
EndSection

La última opción «Palm Detect», es un booleano (cero, uno) que permite habilitar y deshabilitar la detección de que accidentalmente caiga nuestra palma (u otra parte de la mano) sobre el Touchpad, también incluye el ancho mínimo de la zona (es un valor del 1 al 15), para personas con dedos pequeños, valores bajos permite detectar cualquier objeto más grande que un dedo sobre el touchpad, además, PalmMinZ permite determinar el nivel de presión que por lo general ejercemos con la palma (de 1 a 255); con un valor 200, puedo reposar completamente la palma sobre la parte inferior del Touchpad y aún así, poder usarlo sin que se vuelva loco el cursor.

Desactivar el touchpad si se conecta un ratón

Como el Touchpad me estresa, terminé comprandome un ratón, entonces me gustaría que al conectar el ratón, este se desactivara automáticamente, para ello, tendremos que instalar:

aptitude install xinput

Y modificar algunas cosillas en las reglas UDEV.

xinput --list
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                  id=10    [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                       id=11    [slave  pointer  (2)]

xinput –list retorna la lista de dispositivos de entrada, verificamos si hay una propiedad que nos permita desactivar el equipo:

xinput list-props "SynPS/2 Synaptics TouchPad" | grep Enable
    Device Enabled (129):    1

Y como existe, la probamos:

Habilitar: xinput –set-prop «SynPS/2 Synaptics TouchPad» «Device Enabled» 1
Deshabilitar: xinput –set-prop «SynPS/2 Synaptics TouchPad» «Device Enabled» 0

Listo!, podemos crear una regla UDEV para desactivar este dispositivo si un ratón USB es conectado:

script: /etc/udev/rules.d/61-touchpad.rules

# 61-touchpad.rules
#
# this rules file must be named 61* or later because it won't work
# unless it runs after '/lib/udev/rules.d/60-persistent-input.rules'
#
# NOTE: will only affect DISPLAY :0
#
# run:
#   udevadm test --action=add /sys/devices/platform/i8042/serio1/input/input4/mouse0
# or similar to test the following rules
#
# disable synaptic touchpad on DISPLAY :0 if a mouse is added to the system
ACTION=="add", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", RUN+="/bin/sh -c 'DISPLAY=:0 /usr/bin/xinput --set-prop SynPS/2\ Synaptics\ TouchPad\ Device\ Enabled 0'"

# enable synaptic touchpad on DISPLAY :0 if a mouse is removed from the system
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", RUN+="/bin/sh -c 'DISPLAY=:0 /usr/bin/xinput --set-prop SynPS/2\ Synaptics\ TouchPad\ Device\ Enabled 1'"

Este script habilita y deshabilita el touchpad apenas conectemos un dispositivo Mouse en el subsistema de entrada.

Para probar «cual» dispositivo es nuestro touchpad ejecutamos:

cat /proc/bus/input/devices
I: Bus=0011 Vendor=0002 Product=0007 Version=01b1
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input4
U: Uniq=
H: Handlers=mouse0 event4 
B: PROP=9
B: EV=b
B: KEY=6420 30000 0 0 0 0
B: ABS=260800011000003

Y veremos que nuestro dispositivo es: /sys/devices/platform/i8042/serio1/input/input4, para probar si la regla está bien escrita ejecutamos:

udevadm test --action=remove /sys/devices/platform/i8042/serio1/input/input4 2>&1 | grep "run:"
udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event'

Nota: También podíamos (si no queremos instalar xinput) es utilizar el mismo comando «disable Touchpad» del synclient, modificando las reglas de UDEV de esta manera:

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[1-9]", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient TouchpadOff=1"
ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[1-9]", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient TouchpadOff=0"

Y así, no apagamos el dispositivo, simplemente «desactivamos» el touchpad y lo podremos recuperar con el script de arriba.

Desactivando el Touchpad mientras se escribe

Para que esta directiva funcione, deberán tener habilitado «SHMConfig» en la configuración del Touchpad en Xorg (como aparece comentado en las reglas del Xorg, colocadas más arriba), al habilitar SHMConfig, podemos cambiar opciones del Synaptic Touchpad en ejecución utilizando la herramienta «syndaemon», en mi caso, he utilizado el archivo «.xinitrc» para colocar el siguiente comando:

file: /home/jesuslara/.xinitrc

syndaemon -t -k -i 2 -d &

syndaemon indica que desactivará el touchpad en presencia de actividad del teclado (solo desactivará los taps y el scrolling, se podrá seguir moviendo el cursor) y lo reactivará luego de 2 segundos de detectado que el teclado ya no se está usando.

Si no lo poseen, creen el archivo, pónganle opción ejecutable y reinicien su sesión.

Nota: para los usuarios de Gnome, pueden colocar el comando en «Aplicaciones al inicio» para que el demonio syndaemon quede configurado al iniciar el sistema.

También pueden ir al menú «Sistema > Preferencias > Ratón» y en la pestaña «Touchpad» hacen click en la opción «desactivar Touchpad mientras se escribe».

¿Vieron cuántas opciones hay? … espero les ayude como me ayudaron a mí estos tips …

Happy Hacking!

5 comentarios sobre “Habilitar – Deshabilitar el touchpad en GNU/Linux

  1. Gracias, sólo un problemilla en mi mini; me compré una samsung N150 Plus y me interesó la parte de la activación/desactivación durante la escritura; fui siguiendo los pasos y, al probar el primer script, me di cuenta que algo no andaba bien (no importa cuantos clicks le diera al lanzador nunca se desactivó el touchpad), me instalé el xinput y al correrlo para ver los dispositivos ¡SORPRESA!, no tengo un touchpad si no un raton:

    xinput –list
    ⎡ Virtual core pointer id=2 [master pointer (3)]
    ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
    ⎜ ↳ ImPS/2 Generic Wheel Mouse id=12 [slave pointer (2)]

    ergo, no lo maneja synaptics, toca experimentar a ver como le hago para que se desactive mientras escribo porque es realmente fastidioso

  2. Gracias por la info, he aprendido bastante. Pero tengo problemas al intentar la parte de «desactivar el touchpad si se conecta un ratón». Lo he revisado varias veces pero no me funciona.

Deja un comentario