Quiero conectar un script por lotes a un acceso directo. Cuando lo vinculo en Configuración del sistema> Teclado> Accesos directos funciona con todas las teclas, excepto con las teclas de brillo de mi teclado Apple externo.
Las teclas de brillo se reconocen en showkey con el código clave 224 y 225 .
salida xev:
FocusOut event, serial 41, synthetic NO, window 0x4000001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 41, synthetic NO, window 0x4000001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 41, synthetic NO, window 0x0,
keys: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
¿Alguna sugerencia de lo que puedo hacer?
Respuesta aceptada:
Solución usando halevt
Según las páginas man halevt
es un controlador genérico para eventos HAL. Está obsoleto y reemplazado por udev
, pero como no sé lo suficiente sobre udev
Daré un halevt
solución.
EDITAR: después de mucho sudor, logré hacer esto en udev
. Ver mi otra respuesta.
Usaré vim
para editar archivos, pero si no sabes vim
puedes reemplazarlo por nano
o gedit
.
Instalando halevt
sudo apt-get update && sudo apt-get install halevt
Determinar qué eventos desea vincular a un script
Detener el halevt
demonio que ya se está ejecutando:
sudo /etc/init.d/halevt stop
Ahora mira si halevt
puede reconocer los eventos de las teclas que desea usar, inicie el oyente:
sudo -u halevt halevt -fig:plugdev
Ahora presione la tecla de función en su teclado a la que desea vincular el script. Sé que el OP quiere que sus teclas de brillo funcionen, así que vamos con eso. El resultado de las teclas de brillo debería verse así:
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)
Puedes ver que el brightness-down
y brightness-up
se transmiten los eventos.
Asociar el evento a un script
Ahora edite el archivo /etc/halevt/halevt.xml
:
sudo vim /etc/halevt/halevt.xml
y agregue las siguientes líneas (lo hice en la parte inferior, justo antes de </halevt:Configuration>
):
<halevt:Device match="hal.info.category = input">
<halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>
<halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>
</halevt:Device>
donde por supuesto deberías cambiar value
al evento que obtuvo del oyente, y exec
por el comando que desea ejecutar.
Otorgue permiso al usuario halevt para ejecutar el comando o la secuencia de comandos
Desde el halevt
el demonio se ejecuta como halevt
usuario, debe darle permiso para hacer lo que especificó en exec
.
Ejecutar (recuerde reemplazar vim
por el editor de su elección)
sudo EDITOR=vim visudo
y agregue las siguientes líneas en la parte inferior
halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh
y guardar y salir.
Relacionado:¿Deshabilitar la repetición del teclado desde la línea de comando?Asegúrese de que su secuencia de comandos sea ejecutable
sudo chmod +x /home/user/brightness-script.sh
Inicie el demonio halevt de nuevo
sudo /etc/init.d/halevt start
¡Y debería estar funcionando!