Está en: » Artículos »

Lanzar script según evento ACPI para desactivar el panel táctil (o lo que desees)

Lanzar script según evento ACPI para desactivar el panel táctil (o lo que desees)

Partiendo del problema que me surgía con la pantalla táctil de mi portátil y que comentaba en https://miguelcarmona.com/articulos/desactivar-el-panel-tactil-touch-screen-mediante-bash-y-teclas-rapidas he decidido hacerlo algo más automático y no depender de desactivar o activar el control táctil cuando abro o cierro la pantalla.

Si no tenemos acpid instalado (por defecto openSuse no lo hace), deberemos instalarlo primero:

zypper install acpid

Ahora crearemos un archivo de eventos en /etc/acpi/events/laptop-lid con este contenido:

event=button/lid.*
action=/etc/acpi/laptop-lid.sh

Para crear el script laptop-lid.sh, podemos saber el dispositivo a activar/desactivar ejecutando xinput (desde nuestro usuario y no como root):

miguel@netbook:~> xinput 
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer            id=4    [slave  pointer  (2)]
⎜   ↳ ELAN1200:00 04F3:3022 Touchpad        id=15   [slave  pointer  (2)]
⎜   ↳ USB Optical Mouse                     id=11   [slave  pointer  (2)]
⎜   ↳ FTSC1000:00 2808:5120                 id=16   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard           id=5    [slave  keyboard (3)]
    ↳ Power Button                          id=6    [slave  keyboard (3)]
........

En mi caso, el dispositivo es FTSC1000:00 2808:5120
Vamos a buscar el id de nuestro dispositivo en /sys con:

miguel@netbook:~> ls /sys/bus/hid/drivers/hid-multitouch/ | grep 2808:5120
0018:2808:5120.0008

Ahora creamos el script /etc/acpi/laptop-lid.sh con el siguiente contenido:

#!/bin/bash

ID='0018:2808:5120.0008'
grep closed /proc/acpi/button/lid/LID/state
if [ $? = 0 ]
then
        # close action
        echo $ID > /sys/bus/hid/drivers/hid-multitouch/unbind 
else
        # open action
        echo $ID > /sys/bus/hid/drivers/hid-multitouch/bind
fi

Ya sólo nos queda dar permiso de ejecución, reiniciar acpi y listo!!

chmod +x /etc/acpi/laptop-lid.sh
systemctl restart acpid

Comentarios

Deje su comentario

Previsualización de comentario
  1. Anónimo dice: