Ceci est une ancienne révision du document !
Utilisation d'une Wiimote comme souris
Tutoriel concernant l'utilisation d'une Wiimote sous Ubuntu.
Vous pourrez alors utiliser votre Wiimote en tant que souris, sans aucun effort, ou presque.
Pré-requis
- Posséder un émetteur/récepteur Bluetooth
- Avoir une Wiimote…
- Allumer une sensorbar (barre infrarouge) ou une bougie voire un projecteur infrarouge (facilement trouvable dans le commerce et pas cher)
Sous Hardy et suivants
Ayant suivi ce tuto de A à Z, je me suis demandé si depuis Gusty, il n'y avait pas un moyen un peu plus simple après tout ce temps. En fait, il existe effectivement des paquets tout prêt.
il suffit de lancer synaptic et d'avoir les dépots univers/multiverse, et vous tapez Wii dans le moteur de recherche.
Installez les paquets lswm, wmgui, wminput
Ensuite, passez au chapitre Tester avec wmgui pour tester votre wiimote.
Puis savoir comment l'activer en tant que pointeur.
Tester avec « wmgui »
Maintenant, on doit pouvoir lancer la commande :
wmgui
note: chez moi cela ne se lançait pas, j'ai du faire :
sudo ln -s /usr/local/lib/libcwiid.so.1.0 /usr/lib/libcwiid.so.1
Ce programme va nous permettre de vérifier que les capteurs de la wiimote sont bien gérés par le PC.
Utilisez File → Connect pour vous connecter à la Wiimote. Pour mettre la Wiimote en mode synchro, on presse simultanément les boutons 1 et 2 1). ou dans certains cas enlever le clapet des piles afin d'accéder à un petit bouton rouge, une fois appuyé les led bleue clignotent, la Wiimote est alors en mode synchro, cliquez alors sur Valider.
On peut afficher l'état courant de la Wiimote connectée :
- Settings → Acc data permet d'afficher les données concernant l'accéléromètre
- Settings → IR data permet d'afficher les données concernant l'infrarouge
J'ai pu constater que l'accéléromètre marche bien. Pour vérifier l'IR, vous devez brancher une sensorbar ou utiliser une simple bougie (chez moi ça marche !). L'idée est d'avoir une source ponctuelle d'infrarouge pour que le wiimote se repère.
Pour ceux qui auraient le message
Error establishing control channel connection
Il faut positionner la variable d'environnement WIIMOTE_BDADDR comme ci dessous (avec uu:vv:ww:xx:yy:zz qui est l'adresse MAC de votre WiiMote)
WIIMOTE_BDADDR=uu:vv:ww:xx:yy:zz export WIIMOTE_BDADDR
Pour éviter de saisir ces commandes à chaque fois que vous lancez votre session il suffit de placer ces lignes dans votre fichier ~/.bashrc
Lancer « wminput »
Tout d'abord, on va chercher l'adresse de notre Wiimote.
Pour obtenir l'adresse Mac de votre Wiimote, tapez dans un terminal:
lswm
Ce petit programme va vous demander de mettre votre Wiimote en mode découvrable (appuyer sur 1 et 2 en même temps) et vous renvoi l'adresse mac de la Wiimote.
Mettez la wiimote en mode "découvrable" (1 et 2 en même temps), puis executez cette commande dans un terminal:
sudo hidd --search
L'adresse est de la forme « xx:xx:xx:xx:xx:xx ».
Dans certains cas, il est utile de charger un module pour faire fonctionner « wminput ». Un « lsmod » vous le dira. Dans le doute, taper :
sudo modprobe uinput
Et là, c'est presque gagné. Il existe (pour l'instant) trois façons de lancer « wminput ».
Mode accéléromètre
sudo wminput -c acc_ptr xx:xx:xx:xx:xx:xx
qui permet d'utiliser uniquement l'accéléromètre pour le contrôle de la souris. Il faut la pencher en avant/arrière et la tourner sur elle-même.
Mode infrarouge
sudo wminput -c ir_ptr xx:xx:xx:xx:xx:xx
qui permet d'utiliser le pointeur Infrarouge de la Wiimote. Il faut au préalable avoir une sensorbar sous tension, ou simplement une bougie vers l'ordinateur. Une vieille télecommande infra-rouge et un élastique fonctionne également. Sans doute la plus utile. Si ça ne fonctionne pas tout de suite, il faut redémarrer la machine.
Mode nunchuk
(fonctionne sur la version 0.6.00)
sudo wminput -c nunchuk_acc_ptr xx:xx:xx:xx:xx:xx
qui permet d'utiliser l'accéléromètre du nunchuk pour contrôle de la souris. L'utilisation est similaire au mode accéléromètre.
sudo hidd --kill xx:xx:xx:xx:xx:xx
/etc/cwiid/wminput
Il sera même possible de modifier/créer vos propres fichiers de configuration.
Pour aller plus loin
Résolutions de problèmes
Curseur enfermé dans une boite ou sourie inactive
Si votre curseur semble "enfermé dans une boite invisible" ou "reste bloqué"en mode Infra Rouge, c'est que la caméra de la wiimote a une résolution de 1024x768 et que les réglages initiaux indiquent à la wiimote d'utiliser sa résolution native. Pour régler ce problème il faut éditer le fichier /etc/cwiid/wminput/ir_ptr et remplacer
Plugin.ir_ptr.X = ~ABS_X Plugin.ir_ptr.Y = ~ABS_Y
par
Plugin.ir_ptr.X = ABS_X Plugin.ir_ptr.Y = ABS_Y
Configurations personnalisées / Mapping
Il est possible de personnaliser les actions de la wiimote en assignant d'autres touches à ses boutons.
Si l'on regarde le fichier /etc/cwiid/wminput/ir_ptr, on observe que celui-ci inclu le fichier buttons qui régit les touches et assigne une manière de gérer les axes de la souris.
On peut commencer sur la base de ir_ptr et ajouter dedans les boutons que l'on veut:
sudo cp /etc/cwiid/wminput/ir_ptr /etc/cwiid/wminput/ma_config''
et l'éditer ensuite, Pensez à retirer la ligne "include buttons" pour éviter les conflits!
Voici un exemple de fichier personnalisé :
Plugin.ir_ptr.X = ABS_X Plugin.ir_ptr.Y = ABS_Y Wiimote.A = KEY_LEFTALT # ALT Wiimote.B = BTN_LEFT # Click! Wiimote.Up = KEY_UP # Up Wiimote.Down = KEY_DOWN # Down Wiimote.Left = KEY_LEFTCTRL # CTRL Wiimote.Right = BTN_RIGHT # Right Click Wiimote.Home = BTN_MIDDLE # Middle Click Wiimote.1 = KEY_ENTER # Wiimote.2 = KEY_SPACE # Wiimote.Plus = KEY_VOLUMEUP # Turn up volume Wiimote.Minus = KEY_VOLUMEDOWN # Turn down Volume
Vous pouvez ensuite le tester avec la commande :
sudo wminput -c ma_config XX:XX:XX:XX:XX:XX
La liste des boutons de la wiimote : http://abstrakraft.org/cwiid/browser/doc/wminput.list
La liste des touches gérées : http://abstrakraft.org/cwiid/browser/wminput/action_enum.txt
Références
Articles dont je me suis très fortement « inspiré »:
Petit script qui automatise l'utilisation
Depuis que j'ai découvert ce tutoriel, je me suis lancé dans la fabrication d'un petit script permettant l'exécution en mode graphique.
Ce script nécessite d'avoir installé au préalable tout ce qu'il faut pour utiliser sa WiiMote, ainsi que zenity.
Il nécessite aussi des droits d'administration donc il faut le lancer avec gksudo.
Copiez ce code dans un fichier texte et rendez le exécutable : Clique droit –> Propriétés –> Permissions –> Exécution : cochez la case autorisant
#!/bin/bash #Script réalisé par KicheTof pour les utilisateurs de WiiMote. #Script libre de toute modification sans aucune demande nécessaire :) #Vive le libre :) function quit { if [ $? != "0" ]; then exit 1 fi [ $? -ne "0" ] && exit 2 } device=$(hcitool scan | tail -n +2 | while read line do echo -n "$line" | sed -r "s/\s*([0-9A-Fa-f:]+)\s*(.*)/\1\n\2\n/" done | zenity --list \ --title "Utilisation de la WiiMote comme souris : 3 méthodes !" \ --text "Maintenez la touche 1 et 2 en même temps pour activer le mode détection.\nChoisissez la WiiMote dans la liste (Nintendo RVL-CNT)" \ --column "id" --column "appareil bluetooth") quit; while [ ! "$CHOIX_ACTION" ] do CHOIX_ACTION=$(zenity --list --width "600" --height "200" \ --title "Choisissez quelle méthode pour utiliser la WiiMote" \ --text "Pilotage par Accéléromètre, par Infrarouge, ou via le Nunchuk" \ --radiolist \ --column "Choix" --column "Pilotage" --column "Description" \ True Accéléromètre "Utilisation de la position de la WiiMote" \ False Infrarouge "Utilisation de l'infrarouge à l'aide d'une bougie, par exemple" \ False Nunchuk "Utilisation du nunchuk pour piloter la souris") quit; if [ $CHOIX_ACTION == "Accéléromètre" ]; then action="acc_ptr"; elif [ $CHOIX_ACTION == "Infrarouge" ]; then action="ir_ptr"; elif [ $CHOIX_ACTION == "Nunchuk" ]; then action="nunchuk_acc_ptr"; fi done zenity --info --title "Attention" --text "Si les led's ne clignotent plus, réappuyez sur 1 et 2 !\n\nPour quitter le script, pressez 3 secondes le bouton \"power\" de la WiiMote ! :)"; wminput -c $action $device;
Tableau Numérique Interactif (TNI / whiteboard / TNWii)
L'origine du TNWii : http://www.cs.cmu.edu/~johnny/projects/wii/
Les pilotes pour faire votre TNWii (sous Hardy, Intrepid et suivants…) : http://code.google.com/p/linux-whiteboard/downloads/list
ou les sources par le svn http://linux-whiteboard.googlecode.com/svn/trunk/
Une autre version (qui devrait fonctionner mieux) existe également (GTKWhiteboard) : http://forum.ubuntu-fr.org/viewtopic.php?id=208957&p=3 (ce lien même au forum qui présente également d'autres ressources sur le TNWii).
Un tutorial en français pour utiliser le tableau interactif wiimote sous linux : http://trucsinformatiques.free.fr/articles.php?lng=fr&pg=32 (obsolète, les paquets cités ci-dessus sont plus récents)
Contributeurs : Liberator, kichetof, Fabien26,sunab, alexmic.
