Come gestire una presentazione con il Wiimote

cwiid logo

cwiid logoCapitandomi spesso si tenere conferenze e workshop mi trovo sempre il problema di comandare il mio PC per far avenzare le slide della mia presentazione. Ogni volta, per andare avanti o indietro, mi devo avvicinare al PC e premere il tasto del mouse… che bello se potessi trovare un sistema che mi evitasse questa noia!

Manco a farlo apposta ecco che il Wiimote (il joystick della console Wii) e un programmino di nome wminput mi risolvono il problema in un battibaleno!

La soluzione è semplice, tramite un collegamento bluetooth collego il Wiimote al mio PC e poi, usando wminput, riesco a convertire la pressione dei comandi presenti sul Wiimote in pressioni di tasti sulla tastiera… Linux infatti, grazie al suo layer di input, permette di definire dei dispositivi di input che non siano solo i soliti mouse e tastiere. Ma vediamo nel dettaglio come si fa.

Prima di tutto installiamoci il programma. Sulla mia Ubuntu basta che dia il comando:

$ sudo aptitude install wminput evtest

Da notare che ho installato anche il tool evtest che mi servirà per verificare che il Wiimote, una volta configurato come dispositivo di input, funzioni correttamente. Travite evtest infatti è possibile verificare gli eventi di input che il sistema riceve.

Quindi, una volta terminato il download basta lanciare il programma:

$ sudo wminput
Put Wiimote in discoverable mode now (press 1+2)…

Ora, sul mio Wiimote premo i tasti 1 e 2 ed una volta collegato verifico subito che sul sistema abbia un nuovo dispositivo di input con nome Wiimote:

$ for d in $(find /sys/class/input/ -name input*) ; do grep Wiimote $d/name && ls -ld $d/event* ; done
grep: /sys/class/input//name: No such file or directory
Nintendo Wiimote
drwxr-xr-x 3 root root 0 Oct 22 17:30 /sys/class/input/input14/event11/

Perfetto! Con il comando sopra ho anche scoperto quel è questo nuovo dispositivo ed a quale input device è collegato; nel mio caso event11.

Ora uso un diverso file di configurazione per wminput che permette di mappare i tasti proprio come mi serve a me per gestire le slide:

$ sudo ln -sf /etc/cwiid/wminput/buttons /etc/cwiid/wminput/default

Adesso, usando evtest, verifico che alla pressione del pulsante a croce centrale mi vengano generati gli eventi fraccia su, freccia giù, freccia a destra e freccia a sinistra:

$ sudo evtest /dev/input/event11
[sudo] password for giometti:
Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x1 product 0x1 version 0x3
Input device name: “Nintendo Wiimote”
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
    Event code 102 (Home)
    Event code 103 (Up)
    Event code 105 (Left)
    Event code 106 (Right)
    Event code 108 (Down)
    Event code 148 (Prog1)
    Event code 149 (Prog2)
    Event code 158 (Back)
    Event code 159 (Forward)
    Event code 272 (LeftBtn)
    Event code 273 (RightBtn)
  Event type 2 (Relative)
    Event code 0 (X)
    Event code 1 (Y)
Testing … (interrupt to exit)
Event: time 1319296998.297671, type 1 (Key), code 103 (Up), value 1
Event: time 1319296998.297683, ————– Report Sync ————
^[[AEvent: time 1319296998.450159, type 1 (Key), code 103 (Up), value 0
Event: time 1319296998.450168, ————– Report Sync ————
Event: time 1319297002.086370, type 1 (Key), code 108 (Down), value 1
Event: time 1319297002.086383, ————– Report Sync ————
^[[BEvent: time 1319297002.216383, type 1 (Key), code 108 (Down), value 0
Event: time 1319297002.216393, ————– Report Sync ————
Event: time 1319297005.871479, type 1 (Key), code 106 (Right), value 1
Event: time 1319297005.871492, ————– Report Sync ————
^[[CEvent: time 1319297006.085321, type 1 (Key), code 106 (Right), value 0
Event: time 1319297006.085331, ————– Report Sync ————
Event: time 1319297006.827968, type 1 (Key), code 105 (Left), value 1
Event: time 1319297006.827979, ————– Report Sync ————
^[[DEvent: time 1319297007.061497, type 1 (Key), code 105 (Left), value 0
Event: time 1319297007.061508, ————– Report Sync ————

Bene, direi che ci siamo. A questo punto non mi resta che aprire il mio PDF con le slide e comandarlo con il Wiimote!

 

Su Rodolfo Giometti

Ingegnere informatico libero professionista ed esperto GNU/Linux offre supporto per: - device drivers; - sistemi embedded; - sviluppo applicazioni industriali per controllo automatico e monitoraggio remoto; - corsi di formazione dedicati. Manutentore del progetto LinuxPPS (il sottosistema Pulse Per Second di Linux) contribuisce attivamente allo sviluppo del kernel Linux con diverse patch riguardanti varie applicazioni del kernel e dispositivi (switch, fisici di rete, RTC, USB, I2C, network, ecc.). Nei 15+ anni di esperienza su Linux ha lavorato con le piattaforme x86, ARM, MIPS & PowerPC.

Lascia un commento

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi