Asus U30JC TouchPad Lock (Fn+F9) en Debian squeeze/sid
Al parecer existe un problema en la detección del touchpad en algunos modelos de laptops Asus, y mi u30jc que corre un Debian squeeze/sid 32 bit no es la excepción. Efectivamente si ejecutamos en consola el comando $ xinput list vemos que el touchpad es incorrectamente reconocido como un “ImPS/2 Logitech Wheel Mouse”, y por consecuencia la combinación Fn+F9 que habilitada/deshabilita el dispositivo no funciona. Por el momento podemos realizar un simple workaround modificando los scripts acpi asociados a la función deseada:
Para comenzar hacemos:
$ sudo acpi_listen
Y presionamos Fn+F9 para obtener el código del evento asociado, en este caso: hotkey ATK0100:00 0000006b (...). La última parte cambiará según el numero de veces que repetamos la acción. Luego abrimos el archivo /etc/acpi/events/asus-touchpad y cambiamos la línea:
-
event=hotkey (ATKD|HOTK) (0000006[ab]|00000037) #(por)
-
event=hotkey ATK0100:00 0000006b
Finalmente es necesario realizar algunos cambios en el script asociado al evento ubicado en /etc/acpi/asus-touchpad.sh:
-
XINPUTNUM=`xinput list | grep 'SynPS/2 Synaptics TouchPad' | sed -n -e's/.*id=\([0-9]\+\).*/\1/p'` #(por)
-
XINPUTNUM=`xinput list | grep 'ImPS/2 Logitech Wheel Mouse' | sed -n -e's/.*id=\([0-9]\+\).*/\1/p'`
-
-
TPSTATUS=`xinput list-props $XINPUTNUM | awk '/Synaptics Off/ { print $NF }'` #(por)
-
TPSTATUS=`xinput list-props $XINPUTNUM | awk '/Device Enabled/ { print $NF }'`
-
-
xinput set-int-prop $XINPUTNUM "Synaptics Off" 8 1 #(por)
-
xinput set-int-prop $XINPUTNUM "Device Enabled" 8 1
-
-
xinput set-int-prop $XINPUTNUM "Synaptics Off" 8 0 #(por)
-
xinput set-int-prop $XINPUTNUM "Device Enabled" 8 0
Realizados los cambios basta con reiniciar el equipo para completar el trabajo.
También he creado un patch para el archivo asus-touchpad.sh
-
— etc/acpi/asus-touchpad.sh
-
+++ etc/acpi/asus-touchpad.sh
-
@@ -13,23 +13,23 @@
-
# to hal (or whatever is replacing hal for such events)
-
getXconsole
-
-
-XINPUTNUM=`xinput list | grep 'SynPS/2 Synaptics TouchPad' | sed -n -e's/.*id=\([0-9]\+\).*/\1/p'`
-
+XINPUTNUM=`xinput list | grep 'ImPS/2 Logitech Wheel Mouse' | sed -n -e's/.*id=\([0-9]\+\).*/\1/p'`
-
-
[ -f /usr/share/acpi-support/state-funcs ] || exit 0
-
-
# get the current state of the touchpad
-
-TPSTATUS=`xinput list-props $XINPUTNUM | awk '/Synaptics Off/ { print $NF }'`
-
+TPSTATUS=`xinput list-props $XINPUTNUM | awk '/Device Enabled/ { print $NF }'`
-
-
# if getting the status failed, exit
-
test -z $TPSTATUS && exit 1
-
-
if [ $TPSTATUS = 0 ]; then
-
- xinput set-int-prop $XINPUTNUM "Synaptics Off" 8 1
-
+ xinput set-int-prop $XINPUTNUM "Device Enabled" 8 1
-
if [ -e /sys/class/leds/asus::touchpad/brightness ]; then
-
echo 0 > /sys/class/leds/asus::touchpad/brightness
-
fi
-
else
-
- xinput set-int-prop $XINPUTNUM "Synaptics Off" 8 0
-
+ xinput set-int-prop $XINPUTNUM "Device Enabled" 8 0
-
if [ -e /sys/class/leds/asus::touchpad/brightness ]; then
-
echo 1 > /sys/class/leds/asus::touchpad/brightness
-
fi


adverick el 23 de Mayo de 2010
Test!