Tastiera
Affronteremo adesso il problema del riconoscimento dei tasti multimediali ed impareremo ad associare ad ognuno di essi una azione.
Quando la pressione di un tasto viene riconosciuta, viene generato un keycode: ad esempio il tasto "Q" della mia tastiera genera il keycode "24" a cui è assegnato il keysym "0x71 , q". Per riprova, premo il tasto "Q" della tastiera entro la shell ed in effetti il sistema stampa a video una "q"... Banale?
Con lo stesso principio assegniamo gli opportuni keysym ai tasti multimediali se questi non sono stati riconosciuti automaticamente. Sostanzialmente ci apprestiamo a fare una mappatura della tastiera, limitatamente ai soli tasti multimediali non riconosciuti.
Come prima cosa testiamo l'effetto della pressione dei tasti multimediali. Utilizziamo a questo scopo l'utility xev, che possiamo lanciare da shell. Posizioniamo il cursore del mouse all'interno della finestra "Event tester" e premiamo un tasto multimediale, ad esempio quello che sarebbe destinato ad aprire il client di posta ovvero il tasto "mail"
Dall'output di xev estrapoliamo i seguenti dati:
..., keycode 236 (keysym 0x0, NoSymbol),...
Abbiamo identificato che la pressione del tasto "Mail" genera il codice 236 ma ad esso non è associato nulla... Verifichiamo anche gli altri tasti e ci appuntiamo i relativi keycode.
Adesso non resta che assegnare ad ognuno un keysym. La lista di quelli utilizzabili la troviamo in /usr/share/X11/XKeysymDB.
Creiamo il file ~/.Xmodmap al cui interno specifichiamo quale keysym associare a quale keycode, una riga per ogni assegnazione. Nel nostro esempio vogliamo associare il keysym "XF86Mail" al keycode 236 e lo facciamo con la seguente sintassi:
keycode 236 = XF86Mail
Quando abbiamo assegnato un keysym ad ogni tasto non resta che attivare le modifiche mediante:
$ xmodmap ~/.Xmodmap
Ad ogni avvio queste assegnazioni verranno caricate automaticamente.
Ora non resta che associare a questo tasto il nostro programma di posta elettronica, ad esempio icedove.