Voglio connettere uno script batch a un collegamento. Quando lo collego in Impostazioni di sistema> Tastiera> Scorciatoie funziona con tutti i tasti, ad eccezione dei tasti di luminosità della mia tastiera Apple esterna.
I tasti di luminosità vengono riconosciuti in showkey con il codice chiave 224 e 225 .
xev output:
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
Qualche suggerimento su cosa posso fare?
Risposta accettata:
Soluzione che utilizza halevt
Secondo le pagine man halevt
è un gestore generico per eventi HAL. È deprecato e sostituito da udev
, ma dato che non ne so abbastanza su udev
Darò un halevt
soluzione.
MODIFICA: dopo un po' di sudore, sono riuscito a farlo in udev
. Vedi la mia altra risposta.
Userò vim
per modificare i file, ma se non conosci vim
puoi sostituirlo con nano
o gedit
.
Installazione di halevt
sudo apt-get update && sudo apt-get install halevt
Determinazione degli eventi da associare a uno script
Interrompi l'halevt
demone che è già in esecuzione:
sudo /etc/init.d/halevt stop
Ora controlla se halevt
può riconoscere gli eventi delle chiavi che vuoi usare, avvia l'ascoltatore:
sudo -u halevt halevt -fig:plugdev
Ora premi il tasto funzione sulla tastiera a cui vuoi associare lo script. So che l'OP vuole far funzionare i suoi tasti di luminosità, quindi andiamo con quello. L'output per i tasti di luminosità dovrebbe essere simile a questo:
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)
Puoi vedere che il brightness-down
e brightness-up
gli eventi vengono trasmessi.
Collega l'evento a uno script
Ora modifica il file /etc/halevt/halevt.xml
:
sudo vim /etc/halevt/halevt.xml
e aggiungi le seguenti righe (l'ho fatto in fondo, appena prima di </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>
dove ovviamente dovresti cambiare value
all'evento che hai ricevuto dal listener e exec
dal comando che vuoi eseguire.
Concedi all'utente halevt il permesso di eseguire il comando o lo script
Dal halevt
daemon viene eseguito come halevt
utente devi dargli il permesso di fare ciò che hai specificato in exec
.
Esegui (ricorda di sostituire vim
dal tuo editore di scelta)
sudo EDITOR=vim visudo
e aggiungi le seguenti righe in basso
halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh
e salva ed esci.
Correlati:disabilitare la ripetizione della tastiera dalla riga di comando?Assicurati che lo script sia eseguibile
sudo chmod +x /home/user/brightness-script.sh
Riavvia il demone halevt
sudo /etc/init.d/halevt start
E dovrebbe funzionare!