Desactivar Touchpad al conectar el ratón

La verdad es que soy algo torpe con el Touchpad del portátil, además de que el mío es demasiado sensible y detecta el más mínimo roce mientras escribo con el teclado.
Al final, siempre suelo usar un ratón USB y desactivo el Touchpad para que no me moleste.

Para activarlo/desactivarlo, yo voy a consola y tecleo:

synclient TouchpadOff=1

Para no tener que estar siempre tecleando esto desde la consola, vamos a ver como lo podemos automatizar.
Lo primero que he hecho, es mirar un poco Xorg, a ver si había alguna forma de desactivar un dispositivo cuando detectara otro. No lo he mirado mucho, pero no he visto como hacerlo. Así que voy a usar udev.

Lo siguiente lo tengo funcionando en mi maquina, con linux-mint KDE 4.8.5 y kernel 3.2.0.

Lo primero de todo, es sacar algo de información sobre el dispositivo USB que conectamos, para eso hacemos:

tail -f /var/log/messages

Y acto seguido enchufamos el ratón. En consola, veremos un churro como este:

/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1

Ese es un identificador del ratón que acabamos de conectar, ahora con ese dato ya podemos sacar toda la información del dispositivo de la siguiente forma:

udevadm info -a –path=/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1

Esto se sacara toda la información de tu dispositivo y de los dispositivos padres, fíjate solo en el dispositivo que te interesa.

De aquí podemos sacar la información que nos interese, como el idVendor, idProduct, …
Yo en este caso me voy a quedar con product que me parece bastante descriptivo.

ATTR{idVendor}=="1c4f"
ATTR{idProduct}=="0003"
ATTR{product}=="Usb Mouse"

Pues bien, con esta información ya podemos empezar.
Primero vamos a crear la regla para udev, para eso creamos el siguiente fichero:

/etc/udev/rules.d/90-touchpad-off.rules

Con el siguiente contenido:

SUBSYSTEMS=="usb", DRIVERS=="usb", ATTRS{product}=="Usb Mouse", ACTION=="add", RUN+="/usr/local/sbin/touchpadswitch.sh 1"
SUBSYSTEMS=="usb", DRIVERS=="usb", ATTRS{product}=="Usb Mouse", ACTION=="remove", RUN+="/usr/local/sbin/touchpadswitch.sh 0"

Aquí lo que estamos diciendo, es que cuando se conecte el dispositivo USB cuyo product sea “Usb Mouse” se ejecute el script indicado en RUN. Lo mismo para cuando se desconecte, pero cambiando el parámetro que le enviamos al script.

Ahora, vamos al script en cuestión.

#!/bin/bash

USER=`ps -ef | grep /usr/bin/x-session-manager | grep -v grep | cut -f 1 -d " "`

if [ "$USER" = "" ]
then
    exit 0
fi

if [ $# -eq 0 ]
then
    echo "Falta parametro, 0 - Activar. 1 - Desactivar" 1>&2
    exit 1
fi

DISPLAY=localhost:0.0
export DISPLAY

su - $USER -c "/usr/bin/synclient TouchpadOff=$1"

NOTA: Algo evidente, pero no olvidar darle permisos de ejecución al script :-p

Para poder ejecutar el comando synclient, tenemos que ser el usuario que tiene arrancado el servidor X, si no, nos dará un error de permisos. La regla udev, se ejecuta como root, así que lo primero que tenemos que hacer es averiguar quien es ese usuario para ejecutar synclient en su nombre, eso lo hacemos en la línea 3.
Otra cosa importante es que la variable DISPLAY no estará establecida, con lo que la tenemos que fijar antes de nada.

Y ya esta, al final del script ejecutamos synclient para desactivar o activar el Touchpad, dependiendo del parámetro que se le haya pasado como argumento.

Anuncios

One Response to Desactivar Touchpad al conectar el ratón

  1. Pingback: Desactivar el touchpad en KDE | El blog de Javi. Otro blog más

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: