GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Problema al vincular un acceso directo a una tecla de función/multimedia?

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!


Ubuntu
  1. ¿Cómo ejecutar un script en Shell cuando se presiona una tecla de acceso directo?

  2. ¿Ubuntu 12.04 Nomodeset soluciona el problema de arranque pero hace que la resolución de la pantalla se atasque?

  3. ¿Problema Im The Key 3g "Error en la activación de la conexión" en 14.04?

  4. Error fatal:llamada a la función indefinida curl_init()

  5. Encuadernación Super+C Super+V para copiar y pegar

Ralink Rt 3290 ¿Problema de Bluetooth en Ubuntu 16.04?

¿Cómo crear una combinación de teclas que me permita montar Google Drive?

¿Unity no se inicia después de arrancar?

¿La tecla de acceso directo para saltar una canción en Rhythmbox?

¿Cómo abrir la última ventana de terminal con una tecla de acceso directo?

Activar Numlock sin la clave – ¿Sin permisos de Sudo?