Lanzar script según evento ACPI
Enviado por miguelcarmona :: 18 de marzo de 2020

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@portatil:~> 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@portatil:~> 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 -q 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