Mappare tasti multimediali per xine

Gio, 17/02/2005 - 01:56

Mappare tasti multimediali per xine

Inviato da kripsio 2 commenti
Introduzione

La guida presenta una soluzione al problema che ho incontrato per configurare i tasti multimediali della mia tastiera per utilizzarli col programma xine. Tale programma (come commentato nel post http://www.debianitalia.org/modules/newbb/viewtopic.php?topic_id=963&forum=5#forumpost5762)
non permette l'assegnazione diretta dei keycode e di conseguenza tramite la banale modifica del file ~/xine/keymap non sortisce effetto alcuno.

Fonte di ispirazione

S.Google mi ha trovato una dettagliata pagina di configurazione di un telecomando per metterlo in condizione di funzionare con xine (http://remotew.free.fr/linux_en.htm). Leggendo un po' ho compreso che il medesimo metodo poteva essere applicato ad un qualsiasi dispositivo esotico tra i quali, ovviamente, la mia tastiera multimediale.

Parte prima, rilevare i keycode

Attraverso il programma xev possiamo determinare in maniera semplicissima a quale keycode corrisponde ogni tasto della nostra tastiera, in particolare quelli multimediali che servono al nostro scopo.
Lanceremo quindi xev in un terminale

$ xev

e noteremo che alla pressione di un tasto qualsisi verranno scritte nel terminale stesso delle righe somiglianti a quella sottostante

KeyRelease event, serial 26, synthetic NO, window 0x2c00001,
root 0x8e, subw 0x0, time 2810373, (82,38), root:(771,405),
state 0x0, keycode 176 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 1 bytes: " "

Segnamo da qualche parte il numero seguente la parola keycode: ci servira' in seguito.
Ad uso degli esempi successivi il numero 176 identifica, sulla mia tastiera, il tasto alza volume.

Rimappiamo i tasti

Sempre grazie a quella guida ho scoperto alcune funzionalita' del programma xmodmap.

Editiamo col nostro editor preferito un file testuale:

$ vi ~/.xmodmap_xine

ed inseriamo la nuova mappatura, ad esempio:

! PAUSE
keycode 162 = space
! STOP
keycode 164 = y
! MUTE
keycode 160 = m
! FASTER
keycode 153 = Up
! SLOWER
keycode 144 = Down
! VOLUME DOWN
keycode 174 = v
! VOLUME UP
keycode 176 = w

Quella di sopra e' la mappatura che utilizzo io.
Spiegazione:
Le righe che iniziano con ! sono commenti;
Le righe che iniziano con keycode rimappano il tasto associato alla lettera con il keycode corrispondente.
Quindi partendo dal keycode che ho illustrato sopra (176 alza volume) la seconda riga rimappa il tasto w con il keycode 176 sortendo il risultato voluto: un alias di un tasto normale ai nostri tasti speciali.

Qualche problema in piu

Purtroppo non e' tutto cosi' semplice e serve qualche passaggio in piu'.
Per qualche motivo che non ho approfondito (e forse risovibile) l'assegnazione del tasto sopra non e' key sensitive e quindi per mappare eventi come alzare il volume (che di default xine definisce come V), oppure per mappare eventi che utilizzano combinazioni di tasti (ctrl+tasto) occorre cambiare le associazioni nel keymap di xine a tasti semplici.
Anche questo non e' totalmente possibile in quanto ogni variazione agli eventi di default al file keymap viene sovrascritta da xine al riavvio.
Per ovviare all'inconveniente mi sono documentato sul manuale di xine stesso ed ho trovato le funzionalita' di alias.
Esplicando in maniera concisa

$ vi ~/.xine/keymap

Trovo, ad esempio,

# increment audio volume
Volume+ {
key = V
modifier = none
}


Se mi limito a variare il key con qualcosa d'altro all'avvio di xine il mio valore verra' sovrascritto.
Dovro' quindi inserire alla fine del file una voce di questo tipo:

# increment audio volume
Alias {
entry = Volume+
key = w
modifier = none
}

Ovviamente dobbiamo cercare nel file keymap tasti non assegnati (per i miei scopi ho trovato w e y e sono stati sufficienti)

Di conseguenza la fine del file keymap risultera', nel mio caso, come segue:

# increment audio volume
Alias {
entry = Volume+
key = w
modifier = none
}

# stop playback
Alias {
entry = Stop
key = y
modifier = none
}

##
# End of xine key bindings.
##

Lanciamo xine con la nuova mappatura

Per fare in modo che xine acquisisca la nostra nuova mappatura basta mandargli la mappa in pipe in questo modo

$ xmodmap ~/.xmodmap_xine | xine
Gia che ci siamo affiniamo la cosa inserendo un alias nel ~/.bashrc
alias xine='xmodmap ~/.xmodmap_xine | xine'
In questo modo ogni volta che chiamiamo xine la nostra nuova mappatura verra richiamata

Enjoy!





Commenti

Ritratto di Stefano
#1

Inviato da Stefano il Sab, 19/02/2005 - 16:00.

Utile.

Interessante, non avevo mai valutato o preso in considerazione la possibilità di abilitare i tasti multimediali.

Complimenti anche per l'ottima formattazione.

Stefano Mainardi - Founder of ILDN & CEO of Twinbit



Ritratto di paolo
#2

Inviato da paolo il Sab, 19/02/2005 - 16:49.

Re: Utile.

La trovo molto utile. Formattazione impeccabile.

Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network