comio Advocate
Joined: 03 Jul 2003 Posts: 2191 Location: Taranto
|
Posted: Thu Jun 08, 2006 7:41 pm Post subject: [HowTo] Setup Tastiera Multimediale |
|
|
Ciao a tutti,
Vi riporto la mia esperienza riguardo la configurazione del mio nuovo kit tastiera+mouse multimediale sotto Xorg 7.1 (ma per alcune modifiche credo che valga anche per Xorg 7.0).
Premessa
Il Kit da me acquistato è un Logitech Cordless UltraX Media Desktop. Le caratteristiche salienti del prodotto sono:
- Mouse Ottico Wireless con 4 pulsanti "classici" (2 canonici e 2 laterali), rotella con due assi (avanti, indietro, sinistra e destra) e con funzione di 3° tasto: Totale 9 Tasti
- Tastiera senza tasto INS (non capisco questa moda...), tasto [Fn] come i portatili per la sencoda funzione dei tasti Funzione e "cerchio" multimediale con 5 tasti (Play/Pause, Vol+, Vol-, Forward, BackForward) e tasto Mute: 15 tasti attivabili con Fn + 6 Tasti "Multimedia".
Il mio obiettivo, ambizioso, è stato quello di dare una funzione ad ogni tasto senza nessuna eccezione. Per raggiungere scopo è necessario:
- configurare il kernel Linux per il supporto evdev;
- installare Xorg 7.1 (anche se con alcune modifiche il tutto dovrebbe funzionare con Xorg 7.9);
- installare xev per catturare gli eventi associati alla pressione dei singoli tasti (operazione necessaria prima della configurazione vera e propria);
- installare xmodmap per associare gli eventi specifici ai tasti della tastiera (alcuni);
- installare bindkeys per associare ai tasti (alcuni della tastiera ed alcuni del mouse) particolari funzioni (tipo esecuzione di programmi, etc...).
Durante la configurazione ho notato che alcuni tasti della tastiera si comportano come tasti del mouse.
Tutte le informazioni le ho trovate nel Howto Use Multimedia Keys presente su Gentoo-Wiki (http://gentoo-wiki.com/HOWTO_Use_Multimedia_Keys). Consiglio vivamente di utilizzare tale documento.
Configurazione X.org
Come già indicato, è stato utilizzato per la configurazione il server Xorg 7.1 (Xserver 1.1). Non vi è un particolare motivo, ma l'opzione "Phys" funziona solo con questa versione: in caso di utilizzo di versioni precedenti bisogna utilizzare l'opzione "Device" come alternativa.
La configurazione del file /etc/X11/xorg.conf risulta:
Code: |
Section "InputDevice"
Identifier "Keyboard0"
Driver "evdev"
Option "Phys" "usb-0000:00:10.3-2/input0" # Valida solo con Xorg 7.1
Option "XkbRules" "xorg"
Option "XkbModel" "evdev"
Option "XkbLayout" "it"
Option "CustomKeycodes" "on"
# Option "Device" "/dev/input/event0" # Valida con Xorg 7.0
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "evdev"
Option "SendCoreEvents"
Option "Phys" "usb-0000:00:10.3-2/input1" # Valida solo con Xorg 7.1
Option "Protocol" "auto"
# Option "Device" "/dev/input/event1" # Valida con Xorg 7.0
EndSection
|
Per ottenere l'indirizzo fisico del device di input (Opzione "Phy") della tastiera è utilizzabile il comando:
Code: |
udevinfo -a -p /sys/class/input/event0|grep phys
|
In modo simile per il mouse:
Code: |
udevinfo -a -p /sys/class/input/event1|grep phys
|
Bisogna ricordarsi di inserire l'option "SendCoreEvents" dato che alcuni tasti della tastiera sono in realtà gestiti dal mouse, e senza tale opzione non funzionano.
NB Per qualche strano motivo sulla tastiera non funzionava il tasto "<": per risolvere il problema ho inserito nel file /usr/share/X11/xkb/keycodes/evdev la stringa:
Finita la configurazione il server X dovrebbe essere pronto per l'avvio.
Individuazione degli eventi: utility xev
Prima di procedere oltre, si è necessario sondare tramite xev i tasti della tastiera.
Avviato il tool, si aprirà una finestra con un quadrato. Con molta pazienza bisogna premere ad uno ad uno i tasti a cui si vuole dare una funzione.
Si avranno due tipi di output. Il primo:
Code: |
KeyRelease event, serial 31, synthetic NO, window 0x2400001,
root 0x5b, subw 0x0, time 2959447723, (674,372), root:(678,397),
state 0x0, keycode 167 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
|
Si avrà in caso di tasto con un keycode associato (prendere nota del keycode 167). Nel secondo caso:
Code: |
ButtonRelease event, serial 31, synthetic NO, window 0x2200001,
root 0x5b, subw 0x0, time 2959687301, (141,37), root:(145,62),
state 0x0, button 43, same_screen YES
|
Si avrà l'indicazione di un button (prendere nota del button 43).
Con un attimino di pazienza bisogna compilare una tabella con i codici associati ai singoli tasti. Per la tastiera in oggetto si è ottenuto:
Code: |
"Cerchio" multimediale
keycode 173 = Traccia precedente
keycode 172 = Play/Pause
keycode 171 = Traccia successiva
keycode 123 = Volume +
keycode 122 = Volume -
keycode 121 = Tasto Mute
Combinazioni tasti [Fn] + [Fx]
keycode 180 = [Fn] + [F1]
button 39 = [Fn] + [F2]
button 21 = [Fn] + [F3]
button 40 = [Fn] + [F4]
button 25 = [Fn] + [F5]
button 23 = [Fn] + [F6]
button 24 = [Fn] + [F7]
keycode 179 = [Fn] + [F8]
button 43 = [Fn] + [F9]
button 41 = [Fn] + [F10]
button 42 = [Fn] + [F11]
keycode 174 = [Fn] + [F12]
keycode 118 = [Fn] + [Stamp] (Già assegnato alla funzione di INSERT)
keycode 166 = [Fn] + [Bloc Scorr]
keycode 167 = [Fn] + [Pausa Interr]
|
NB: Non sono riuscito ad assegnare un keycode a tutti tasti. Sembra che la maggior parte delle combinazioni [Fn] + [Fx] sia gestita come pressione di un tasto del mouse.
Assegnazione degli eventi XF86xxxx
Tramite il programma xmodmap è possibile associare ai tasti con un keycode degli eventi XF86xxxx da generare alla pressione dei tasti. Tali eventi sono inviati alle applicazioni e tradotti in azioni.
Per esempio, l'evento XF86AudioPlay normalmente è associato alla pressione del tasto Play del lettore musicale. Per una lista di tutti gli eventi generabili è possibile vedere il file /usr/share/X11/XKeysymDB.
Con xmodmap è possibile eseguire tale associazione, un esempio di configurazione è il seguente (il simbolo "!" indica un commento):
Code: |
! "Cerchio" multimediale
keycode 173 = XF86AudioPrev
keycode 172 = XF86AudioPlay
keycode 171 = XF86AudioNext
keycode 123 = XF86AudioRaiseVolume
keycode 122 = XF86AudioLowerVolume
keycode 121 = XF86AudioMute
! Combinazioni tasti [Fn] + [Fx]
keycode 180 = XF86HomePage
! button 39 Non assegnabile a questo livello
! button 21 Non assegnabile a questo livello
! button 40 Non assegnabile a questo livello
! button 25 Non assegnabile a questo livello
! button 23 Non assegnabile a questo livello
! button 24 Non assegnabile a questo livello
keycode 179 = XF86Terminal
! button 43 Non assegnabile a questo livello
! button 41 Non assegnabile a questo livello
! button 42 Non assegnabile a questo livello
keycode 174 = XF86Stop
! Impostazione Mouse
! Scambio l'asse X della rotellina
pointer = 1 2 3 4 5 7 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
La configurazione va salvata in un file ~/.Xmodmap e caricata all'avvio con una istruzione del tipo (si veda l'Howto Use Multimedia Keys):
Code: |
echo "/usr/bin/xmodmap /home/comio/.Xmodmap" >> ~/.xprofile
|
Non è detto che gli eventi associati siano interpretati dall'applicativo preferito: di solito è necessario un tool per associare delle azioni agli eventi. L'associazione delle azioni agli eventi (come il lancio di applicativi) è effettuabile con programmi tipo xbindkeys, hotkeys oppure khotkeys (quello integrato in KDE in Centro di controllo/Regionali e accesso Facilitato/Azioni di immisioni).
Associazione delle azioni agli eventi ai tasti senza keycode ed ai tasti mouse
Per associare degli eventi o direttamente delle azioni ai tasti mouse è possibile utilizzare xbindkeys.
Si riporta una configurazione di esempio:
Code: |
# Tasto button 39 - [Fn] + [F2]
# Invio un evento XF86WebCam che sarà gestito da KHotKeys
"xvkbd -xsendevent -text "\[XF86WebCam]""
b:39 + Release
# Tasto button 21 - [Fn] + [F3]
# Eseguo direttamente l'applicazione kopete
"kopete"
b:21 + Release
# Tasto button 40 - [Fn] + [F4]
# Invio un evento XF86Away che sarà gestito da KHotKeys per dire a Kopete che sono non disponibile
"xvkbd -xsendevent -text "\[XF86Away]""
b:40 + Release
# Tasto button 25 - [Fn] + [F5]
# Eseguo direttamente l'applicativo gimp per disegnare
"gimp"
b:25 + Release
# Tasto button 23 - [Fn] + [F6]
# Eseguo direttamente l'applicativo amarok per ascoltare musica
"amarok"
b:23 + Release
# Tasto button 24 - [Fn] + [F7]
# Eseguo direttamente l'applicativo xine per vedere film
"xine"
b:24 + Release
# Tasto button 43 - [Fn] + [F9]
# Invio un evento XF86Eject che sarà gestito da KHotKeys per aprire il cassetto del CD
"xvkbd -xsendevent -text "\[XF86Eject]""
b:43 + Release
# Tasto button 41 - [Fn] + [F10]
# Invio un evento XF86AudioRecord che sarà gestito da KHotKeys per eseguire la registrazione audio
"xvkbd -xsendevent -text "\[XF86AudioRecord]""
b:41 + Release
# Tasto button 42 - [Fn] + [F11]
# Eseguo direttamente l'applicativo kcalc per fare qualche calcolo
"kcalc"
b:42 + Release
# Azioni associate ai bottoni laterali del mouse:
# "xvkbd -xsendevent -text "Prova""
# b:9
# Azioni associate ai bottoni laterali del mouse:
# "xvkbd -xsendevent -text "Prova2""
# b:8
|
La configurazione va salvata in un file ~/.xbindkeysrc e caricata all'avvio con una istruzione del tipo (si veda l'Howto Use Multimedia Keys):
Code: |
echo "/usr/bin/xbindkeys" >> ~/.xprofile
|
NB: E' da notare l'uso del comando xvkbd (da installare) per simulare l'invio eventi della tastiera: tale comando è molto lento nell'esecuzione, sarebbe utile trovare un sostituto più performante.
A questo punto è possibile associare con KHotKeys od altri tool le azioni preferite agli eventi generati dalla tastiera: si rimanda all'Howto Use Multimedia Keys.
Luigi Mantellini
07/06/2006 _________________ RTFM!!!!
e
http://www.comio.it
|
|