La wiimote, célèbre manette de jeu développée par Nintendo, est utilisable comme télécommande sous debian. Cette télécommande peut-être utilisée comme souris même si la précision est un peu limitée, quoique…
Pour faire fonctionner la télécommande, il faut préalablement disposer du Bluetooth. Un adaptateur USB fait l'affaire. Ensuite, il faut installer les paquets lswm
et wminput
.
Le premier paquet permet de « découvrir » l'adresse MAC de la wiimote nécessaire pour wminput
. La commande bluez-test-discovery
du paquet bluez permet également d'obtenir cette adresse MAC (à partir de Wheezy).
Par défaut, seul root
peut accéder à la wiimote. Pour donner le droit à d'autres utilisateurs, on devra insérer une règle udev.
$ cat /etc/udev/rules.d/80-wminput.rules KERNEL=="uinput", GROUP="wiimote"
Les utilisateur du groupe wiimote
pourront utiliser la wiimote après une relance de udev.
Pour commencer, il est nécessaire de trouver l'adresse MAC de la wiimote :
$ lswm Put Wiimotes in discoverable mode now (press 1+2)... CC:9E:00:FF:FF:FF
ou
$ bluez-test-discovery [ CC:9E:00:FF:FF:FF ] Name = Nintendo RVL-CNT-01 Paired = 0 LegacyPairing = 1 Alias = Nintendo RVL-CNT-01 Address = CC:9E:00:FF:FF:FF RSSI = -39 Class = 0x002504 Icon = input-gaming
Nous aurons ensuite besoin de l'adresse CC:9E:00:FF:FF:FF
.
La wiimote est gérée ensuite par wminput
. Ce logiciel est fourni avec plusieurs configurations stockées dans le répertoire /etc/cwiid/wminput/
. Il existe des fichiers suivant le périphérique utilisé.
Pour utiliser la wiimote avec ses accéléromètres, utilisez la commande :
$ wminput --daemon --config acc_ptr CC:9E:00:FF:FF:FF
CC:9E:00:FF:FF:FF
est l'adresse MAC trouvée ci-dessus.
La configuration précédente permet de contrôler la souris mais le geste manque de précision pour manier le pointeur. Pour essayer d'améliorer cela, l'idée est d'utiliser le pad (la croix en haut de la wiimote).
Pour cela, il est nécessaire de modifier les touches du clavier associées au pad. Il reste une difficulté : choisir des touches qui permettent de contrôler la souris. Avec le libre, il y a toujours une solution .
Peut-être avez-vous déjà utilisé une fonctionnalité bien pratique pour contrôler X sans souris avec le MouseKeys Control. En appuyant sur SHIFT
et sur la touche de verrou numérique, il est possible de contrôler le clavier avec les flèches du pavé numérique.
Il suffit donc d'associer chaque touche du pad aux touches haut, bas, gauche et droite du pavé numérique. Plutôt que modifier la configuration existante, il est préférable de créer de nouveaux de fichiers de configuration.
cd /etc/cwiid/wminput sudo cp acc_ptr mouse sudo mv buttons mouse_buttons
Dans le fichier mouse
, remplacez include buttons
par include mouse_buttons
. Dans le fichier mouse_buttons
, il faut remplacer les valeurs associées à Wiimote.Up
, Wiimote.Down
, Wiimote.Left
et Wiimote.Right
(éditer les fichier sudoedit
).
Wiimote.Up = KEY_KP8 Wiimote.Down = KEY_KP2 Wiimote.Left = KEY_KP4 Wiimote.Right = KEY_KP6
En utilisant ainsi le pad, l'appui sur la touche « haut » génère un « 8 » (le 8 du pavé numérique), la touche « bas », un « 2 », etc . Pour que le contrôle de la souris fonctionne, il faut au préalable activer le contrôle de la souris au clavier soit :
shift
+ ver num
xkbset mousekeys mousekeysaccel
Un petit script résume le paragraphe précédent, ce sera plus clair :
#!/bin/dash #Copyright (C) 2011 by Sylvain Collilieux <Sylvain@Collilieux.net> # #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal #in the Software without restriction, including without limitation the rights #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #copies of the Software, and to permit persons to whom the Software is #furnished to do so, subject to the following conditions: # #The above copyright notice and this permission notice shall be included in #all copies or substantial portions of the Software. # #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. # wminput config CONF=mouse # Wiimote's MAC address (lswm) MAC=CC:9E:00:FF:FF:FF # enable MouseKeys Control xkbset mousekeys mousekeysaccel # Change mouse pointer with a big red one xsetroot -xcf /usr/share/icons/redglass/cursors/left_ptr 50 # Start wminput in daemon mode wminput --daemon --config $MOUSE $MAC & # wminput PID for later killing WMINPUT_PID=$! # Useful to wiimote to start sleep 10 # third button emulation with A+B buttons xinput --set-int-prop 'Nintendo Wiimote' 'Evdev Middle Button Emulation' 8 1 # wait for a user input to kill wminput echo "Appuyer sur une touche par arrêter" read key kill $WMINPUT_PID # disable mouse key control xkbset -mousekeys -mousekeysaccel # default mouse cursor xsetroot -cursor_name left_ptr
— Le 12/09/2011 – Sylvain Collilieux – Ce texte est sous licence Art Libre