'

Outils pour utilisateurs

Outils du site


doc:wiimote

Utiliser un wiimote sous DEBIAN GNU/Linux

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…

Installation

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).

udev

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.

Découverte de la wiimote

Pour commencer, il est nécessaire de trouver l'adresse MAC de la wiimote :

  • Mettre le wiimote en monde « découverte » en appuyant sur les boutons « 1 » et « 2 »
  • Lancer l'une des commandes
$ 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.

wminput

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.

Un peu plus loin

Utilisation du pad

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 mousebuttons. Dans le fichier mousebuttons, 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 :

  • en appuyant sur shift + ver num
  • avec la commande xkbset mousekeys mousekeysaccel

Script d'utilisation du pad

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

Sources d'inspiration

doc/wiimote.txt · Dernière modification: Le 07/01/2015 à 23:52 (modification externe)