Desactivar el touchpad al conectar un ratón en Linux

En nixternal publicaron hace tiempo un pequeño script para correr al inicio que comprueba si hay conectado un ratón al portátil, en cuyo caso desactiva el touchpad.

Lo que hace el script es guardar en la variable mousecount el número de ratones conectados. Si es 1, sólo está disponible el touchpad, si es mayor de 1, entonces no lo necesitamos, por lo que lo desactivamos ejecutando el comando

synclient TouchpadOff=1

Para poder utilizar synclient antes tenemos que añadir la línea:

Option «SHMConfig» «on»

a la sección dedicada al touchpad en xorg.conf, como explique en Desactivar el touchpad mientras se escribe en Linux.

Para editar xorg.conf en gedit como root escribimos en la consola:

sudo gedit /etc/X11/xorg.conf

Busca una sección que comience con algo parecido a:

Section «InputDevice»
Identifier «Synaptics Touchpad»
Driver «synaptics»

y añade la nueva opción dentro de esa sección (antes del EndSection).

Ahora vamos a crear el script, de nombre, por ejemplo, raton.sh en, por ejemplo, /usr/local/bin

sudo gedit /usr/local/bin/raton.sh

En el nuevo archivo pegamos lo siguiente:

mousecount=`grep mouse /proc/bus/input/devices |grep Handler |wc -l`
if [ «$mousecount» -eq «1» ]
then
synclient TouchpadOff=0
else
if [ «$mousecount» -gt «1» ]
then
synclient TouchpadOff=1
fi
fi

Y lo hacemos ejecutable:

sudo chmod +x /usr/local/bin/raton.sh

Para que se ejecute al inicio Ubuntu Sistema -> Preferencias -> Sesiones -> Programas de inicio -> Nuevo y escribimos como comando raton.sh.

Ahora bien, puede que conectemos el ratón después de haber iniciado sesión, en cuyo caso el touchpad no se desactivaría, incluso aunque ejecutáramos el script. Para conseguir que el touchpad se desactive automáticamente al conectar el ratón durante la sesión podemos crear una nueva regla para udevd, un demonio que se mantiene a la escucha de eventos del kernel indicando que se han añadido o quitado dispositivos, indicándole que ejecute un cierto script.

Creamos el nuevo script que se ejecutará cuando el evento sea relativo a un ratón

sudo gedit /usr/local/bin/raton-udevd.sh

con el siguiente contenido:

#!/bin/bash
DATE=`date`
FLOG=»/tmp/udev_test.log»
echo «$DATE – [$*] – [$ACTION]» >> «$FLOG»
case $ACTION in
add)
echo «DEBUG: conectat» >> «$FLOG»
synclient TouchpadOff=1
;;
remove)
echo «DEBUG: desconectat» >> «$FLOG»
synclient TouchpadOff=0
;;
esac

Lo hacemos ejecutable:

chmod +x /usr/local/bin/raton-udevd.sh

Y editamos el archivo correspondiente

sudo gedit /etc/udev/rules.d/85-hal.rules

para añadir la nueva regla

KERNEL==»mouse*», RUN+=»/usr/local/bin/raton-udevd.sh»

16 comentarios en «Desactivar el touchpad al conectar un ratón en Linux»

  1. Mmm, interesante.

    Aunque creo que se podría ejecutar el script de otra forma:

    En el Centro de Control de GNOME, en «Preferencias de unidades y soportes extraibles», pestaña Dispositivos de entrada», hay una opción para lanzar un programa al conectar un ratón.

    Imagino que sería más fácil que andar modificando reglas de udev.

    Lo que no sé si al desconectar el ratón también se ejecutará, cuestión de probralo, ja que sino el touchpad no se volverá a activar.

    Saludos.

  2. Me ha picado el gusanillo, a ver si esta tarde al volver del trabajo pruebo de montarme alguna historia para que se pueda hacer mediante el diálogo de «Preferencias de unidades y soportes extraibles».

  3. Pingback: meneame.net

  4. Pingback: Mi batalla por abandonar Windows en favor de GNU/Linux :: GONZO

  5. Hola cómpas, primero que todo un saludo desde colombia, mundogeek me ha desvarado mas de una vez.
    Ahora si a lo que vinimos, resulta que cuando encendía el laptop y no tenia un mouse conectado igual me desactivaba el touchpad y tenia que conectar y desconectar un mouse para activar el touchpad.
    Supuse que era algo del script, y pues se solucionó.
    Simplemente cambié en el segundo if de -gt «1» a -gt «2»
    no se si será un error del script o mi laptop se enloquece XD = muchas gracias por existir 😛 salud!.

  6. Ahhm, CORRIJO, y supongo que para la mayoria debe estar bien como tu lo posteaste. Por alguna extraña razon me sale ésto sin mouse conectado:

    crixfer@crixfer-laptop:~$ grep mouse /proc/bus/input/devices
    N: Name=»Macintosh mouse button emulation»
    H: Handlers=mouse0 event0
    H: Handlers=mouse2 event9

    entonces me estaría detectando de arranque 2 dispositivos señaladores. Pero bueno, el caso es que sirve, muchas gracias!.

  7. Hola, tengo una duda en el xorg no tengo una seccion inputDevices. Queria saber exactamente como la agrego. estaria bien asi o como seria?

    Section «InputDevice»
    Identifier «Synaptics Touchpad»
    Driver «synaptics»
    Option «SHMConfig» «on»
    EndSection

    Puede ir en cualquier parte del archivo o en algun lugar especifico?

  8. Gracias…. el Touchpad de la lapto que uso se daño desde hace tiempo y a estas alturas no me permitia hacer nada, gracias a tu post parece que he podido solventar el problema.

    😀

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.