Está en: » Artículos »

Lanzar script según evento ACPI

Lanzar script según evento ACPI

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 -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

Comentarios

Deje su comentario

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