GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Problema nell'associazione di una scorciatoia a una funzione/tasto multimediale?

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!


Ubuntu
  1. Ubuntu:touchpad disabilitato in modo permanente con tasto funzione?

  2. Come eseguire uno script nella shell quando viene premuto un tasto di scelta rapida?

  3. Sudo:/var/lib/sudo/navneet scrivibile da non proprietario (040777), dovrebbe essere la modalità 0700?

  4. Il tasto di scelta rapida Super+d non mostra il desktop?

  5. Ibernazione nel 18.04?

Problema Bluetooth Ralink Rt 3290 su Ubuntu 16.04?

Come creare un'associazione di chiavi che mi consenta di montare Google Drive?

La scorciatoia per saltare una canzone in Rhythmbox?

Attiva/disattiva Bloc Num senza la chiave - Senza autorizzazioni Sudo?

Binding Super+C Super+V da copiare e incollare

Problema con Mint 18 e VMware Tools