Mappare i tasti in Freevo 2

Freevo continua a stupirmi, per non parlare di Freevo2. L’ho provato con il telecomando del mio pavilon giusto per vedere come reagiva, e tadà, quasi tutti i tasti sono mappati egregiamente. Manca solo un tastino per tornare indietro, e uno per il sottomenu (non so quanti di voi lo conoscevano, premendo E da tastiera su un qualsiasi “item”).

E così, armi e bagagli, entriamo nella testa dei programmatori (deshi e rob siano lodati) e cerchiamo di capire come fare per associare una particolare azione ad un particolare tasto. Detto in gergo, mappare la tastiera.

Prima di tutto occorre che il tasto, qualunque esso sia, sia mappato tra gli eventi di X11 (ammenocchè non si utilizza l’interfaccia lirc o altro che non ho sperimentato): quasi tutti i miei tasti sono mappati, ovvero quando lancio xev l’output è questo alla pressione di un qualsiasi tasto. Io premerò per esempio il tasto sinistra, volume su, esc.

KeyRelease event, serial 34, synthetic NO, window 0×2600001,
root 0×1a6, subw 0×0, time 8248769, (168,-14), root:(907,11),
state 0×0, keycode 100 (keysym 0xff51, Left),
XLookupString gives 0 bytes:
XFilterEvent returns: False

state 0×0, keycode 22 (keysym 0xff08, BackSpace),

state 0×0, keycode 176 (keysym 0×1008ff13, XF86AudioRaiseVolume),

Ho sfoltito l’output, ma la parte importante è il nome del tasto, ovvero Left, BackSpace e XF86AudioRaiseVolume, nel caso dovesse invece uscire NoSymbol vuol dire che il tasto non è stato proprio mappato in X11, e quindi sarà necessario prima modificare (o creare) il file ~/.Xmodmap inserendo il nuovo codice per quel determinato keycode. Per una lista di nomi (Sybols) da assegnare ai tasti, si può guardare nel file /usr/share/X11/XKeysymDB tenuto presente ovviamente alla variabilità del path in funzione della distribuzione linux e versione di Xorg.

keycode 176 = XF86AudioRaiseVolume

Quando è tutto ok, basterà modificare il file freevo2.conf, esattamente dove dice Begin Dict: Input > Keyboardmap basta inserire il codice del tasto e assegnargli un ‘tasto freevo’. La lista dei tasti freevo si può reperire nel file freevo/ui/input/keymap.py.

Nel mio caso, ho associato il backspace (ovvero il tasto sul telecomando che corrisponde al backspace) alla funzione dell’esc, e un tastino con la i di Info alla funzione della ‘E’ di freevo, per entrare nel sottomenu.

input.keyboardmap[BACKSPACE] = EXIT
input.keyboardmap[MENU] = ENTER

Similmente c’è la lista di eventi nel file freevo/ui/input/eventmap.py con la possibilità di mappare i propri eventi nell’array (anzi matrice)

input.eventmap[video/audio...][nome_tasto] = mio_evento

E la personalizzazione è fatta.

Leave a Reply