Soluzione usando udev
Poiché HAL è obsoleto e udev
viene ora utilizzato, questo approccio è preferito rispetto all'altra mia risposta (anche se penso che la soluzione che utilizza HAL sia più semplice).
Tuttavia, per molti tasti funzione puoi semplicemente utilizzare Impostazioni di sistema> Tastiera> Tasti di scelta rapida per associare uno script, prova prima! Ti fa risparmiare un sacco di problemi. Ad esempio i tasti di luminosità non funzionano (non ho idea del perché), quindi se vuoi sapere come cambiare il comportamento dei tasti di luminosità, continua a leggere.
NOTA : se si utilizza un notebook Samsung, è possibile correggere tutti i tasti funzione (a seconda del modello) installando il samsung-tools
pacchetto da http://www.voria.org/forum/
Questo howto presuppone che tu sappia usare un terminale e usa l' vim
editor. Se non lo sai vim
, sostituiscilo nei comandi con gedit
o nano
.
Determinare la tua tastiera
/lib/udev/findkeyboards
dovrei stampare le tastiere collegate al computer, nel mio caso
USB keyboard: input/event9
USB keyboard: input/event7
AT keyboard: input/event4
Ora ci sono due opzioni:
Tastiere USB :
se si desidera rimappare la tastiera USB, ispezionarle eseguendo
udevadm info --export-db | awk '/event9/' RS="" | grep -P 'ID_(VENDOR|MODEL)(?!_ENC)'
dove devi sostituire il 9 nell'istruzione awk con il numero corretto. L'output dovrebbe essere simile a
E: ID_MODEL=USB_Receiver
E: ID_MODEL_ID=c52b
E: ID_VENDOR=Logitech
E: ID_VENDOR_ID=046d
che indica correttamente che la mia tastiera è gestita tramite il mio ricevitore USB Logitech (input / event7 si è rivelato essere il mio mouse Logitech G9 che ha alcuni pulsanti programmabili).
Tastiera del laptop :
se si desidera rimappare la tastiera del laptop, è necessario ricordare il numero per il AT keyboard
quale è 4 nel mio caso. Ottieni anche le informazioni dmi per il tuo laptop:
cat /sys/class/dmi/id/sys_vendor
che è nel mio caso
SAMSUNG ELECTRONICS CO., LTD.
e
cat /sys/class/dmi/id/product_name
che è nel mio caso
305U1A
Determina la tua attuale mappatura dei tasti funzione
Ora possiamo determinare la nostra attuale composizione dei tasti ascoltando la tastiera (inserire il numero corretto)
sudo /lib/udev/keymap -i input/event4
puoi uscire da questo comando usando Escsulla tastiera o Ctrl+ csu un'altra tastiera.
Se lo schermo inizia a scorrere molto verso il basso, premere Esce Ctrl+ calcune volte e riprovare con
sudo /lib/udev/keymap -i input/event4 2> /dev/null
o, se hai ancora il problema di scorrimento
sudo /lib/udev/keymap -i input/event4 > ~/keymap.log
Nell'ultimo caso avrai comunque lo scorrimento, ma se premi i tasti funzione dovrebbero andare ~/keymap.log
dove puoi leggerli in seguito.
Ora possiamo controllare la mappatura attuale dei tasti funzione premendo su di essi, il che dovrebbe darti un elenco come (questo è il mio Fn+ F1attraverso Fn+ F12):
scan code: 0xCE key code: kpplusminus
scan code: 0x89 key code: brightnessdown
scan code: 0x88 key code: brightnessup
scan code: 0x82 key code: switchvideomode
scan code: 0xF9 key code: f23
scan code: 0xA0 key code: mute
scan code: 0xAE key code: volumedown
scan code: 0xB0 key code: volumeup
scan code: 0x43 key code: f9
scan code: 0x44 key code: f10
scan code: 0xB3 key code: prog3
scan code: 0x86 key code: wlan
Ora annota i codici di scansione per i quali desideri modificare il comportamento.
Modifica dei codici chiave per i codici di scansione
Se vedi che il codice chiave chiaramente non copre ciò che ti aspetti che faccia la chiave, puoi dare un'occhiata /usr/include/linux/input.h
sotto Chiavi e pulsanti per vedere se c'è un codice chiave che meglio corrisponde a ciò che realmente vuoi che accada. I codici chiave ci sono nel formato KEY_KEYCODE
e devi scrivere la parte dopo KEY_
in minuscolo. A volte cambiare questo è sufficiente per risolvere il problema.
I tasti di luminosità, tuttavia, spesso hanno il giusto codice chiave associato a loro, e questo è ciò che non consente loro di essere rimappati. Quindi dobbiamo cambiarli in altri codici chiave. Useremo prog1
e prog2
per questo esempio perché questi non sono in uso sul mio computer, tuttavia puoi anche usarli f13
attraverso f24
o f20
attraverso f24
se hai una tastiera Apple che ha i tasti F1passanti F19.
Crea un keymap personalizzato :
crea un file keymap nella directory /lib/udev/keymaps
con un nome adatto, dai un'occhiata all'output di ls /lib/udev/keymaps
per vedere i nomi adatti. Vado con custom-brightness
lo scopo di questa domanda.
sudo vim /lib/udev/keymaps/custom-brightness
e inserisci i codici di scansione dei tasti che desideri modificare seguiti dagli scancodes che desideri che abbiano. Il mio custom-brightness
assomiglia a questo:
# /lib/udev/keymaps/custom-brightness
0x89 prog1
0x88 prog2
Creare un file di rilascio chiave personalizzato. Solo se stai cambiando la tastiera del tuo laptop : a
volte l'evento di rilascio dei tasti non viene inviato correttamente, causando il blocco del computer. Per evitare ciò, scriveremo anche un file di rilascio chiave personalizzato
sudo vim /lib/udev/keymaps/force-release/custom-brightness
questo file dovrebbe contenere gli stessi codici di scansione, il mio sembra
# /lib/udev/keymaps/force-release/custom-brightness
0x89
0x88
Assicurati che i nuovi mapping siano caricati nei file delle regole.
Ora dobbiamo assicurarci che i tuoi mapping siano caricati. Possiamo farlo modificando /lib/udev/rules.d/95-keymap.rules
, quindi è intelligente fare un backup
Ancora una volta abbiamo due opzioni:
Tastiere USB :
poiché si dispone di una tastiera USB, è necessario aggiungere la voce in LABEL="keyboard_usbcheck"
e dovrebbe essere oltre le altre voci del produttore della tastiera. Questo perché la mia tastiera con
E: ID_MODEL=USB_Receiver
E: ID_MODEL_ID=c52b
E: ID_VENDOR=Logitech
E: ID_VENDOR_ID=046d
è già associato a una delle regole e in caso contrario viene sovrascritto.
Aggiungi la seguente regola, dove dovresti cambiare opportunamente il ID_VENDOR_ID
e ID_MODEL_ID
e il nome della tua keymap
ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c52b", RUN+="keymap $name custom-brightness"
Tastiera del laptop :
se /lib/udev/findkeyboards
segnalato come la AT keyboard
tua regola del laptop dovrebbe andare sotto LABEL="keyboard_vendorcheck"
, altrimenti mettilo sotto LABEL="keyboard_modulecheck"
. Mettilo di nuovo sotto le altre voci per il tuo produttore di laptop. Aggiungi la seguente regola ( SAMSUNG ELECTRONICS CO., LTD.
è un po 'lunga, quindi ho usato un carattere jolly`)
ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keymap $name custom_brightness"
Ora aggiungi anche una regola /lib/udev/rules.d/95-keyboard-force-release.rules
dopo averne eseguito il backup
sudo cp /lib/udev/rules.d/95-keyboard-force-release.rules /lib/udev/rules.d/95-keyboard-force-release.rules.bak
sudo vim /lib/udev/rules.d/95-keyboard-force-release.rules
Ancora una volta sotto le altre voci del produttore aggiungere
ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keyboard-force-release.sh $devpath custom_test"
Assicurarsi che udev carichi le nuove regole
Per caricare le nuove regole eseguite
sudo adevadm trigger
NOTA: udevadm control --reload-rules
(ancora nelle istruzioni su molti siti Web) non funziona.
Ora controlla se le regole sono state applicate correttamente
sudo /lib/udev/keymap -i input/event4
che dovrebbe ora segnalare i tasti luminosità
scan code: 0x89 key code: prog1
scan code: 0x88 key code: prog2
Rimappare le chiavi in Impostazioni di sistema
Se l'ultimo passaggio ha riportato i codici chiave corretti, entrambi i tasti iniziano a funzionare automaticamente (nel caso in cui avessero prima i codici chiave sbagliati).
Per la luminosità devi ancora associare i tasti a uno script che ora è possibile utilizzando Impostazioni di sistema> Tastiera> Tasti di scelta rapida .
Godere
Note :
Se le tue chiavi avevano il codice chiave sbagliato e sono state corrette con questo approccio, segui le istruzioni in /usr/share/doc/udev/README.keymap.txt.gz
(puoi aprirlo senza estrarre utilizzando zless
) e invia i tuoi risultati agli indirizzi e-mail menzionati lì, quindi le modifiche possono essere incluse nella prossima versione. Molti utenti ne trarranno beneficio!
Mille grazie a questo utile post di Vaidas Jablonskis.