Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
wiimote [Le 11/11/2010, 22:34] 82.121.158.114 |
wiimote [Le 11/09/2022, 11:45] (Version actuelle) moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Hardy matériel bluetooth souris télécommande BROUILLON}} | + | {{tag>Xenial matériel bluetooth souris télécommande}} |
---- | ---- | ||
Ligne 7: | Ligne 7: | ||
Vous pourrez alors utiliser votre Wiimote en tant que souris, sans aucun effort, ou presque. | Vous pourrez alors utiliser votre Wiimote en tant que souris, sans aucun effort, ou presque. | ||
+ | |||
+ | |||
+ | <note aide>Si vous souhaitez juste utiliser votre Wiimote pour contrôler xbmc, une méthode plus simple est décrite dans la page [[:xbmc#piloter xbmc avec une wiimote]].</note> | ||
+ | |||
===== Pré-requis ===== | ===== Pré-requis ===== | ||
Ligne 13: | Ligne 17: | ||
* Allumer une //sensorbar// (barre infrarouge) ou une bougie voire un projecteur infrarouge (facilement trouvable dans le commerce et pas cher). | * Allumer une //sensorbar// (barre infrarouge) ou une bougie voire un projecteur infrarouge (facilement trouvable dans le commerce et pas cher). | ||
- | <note>Pour les bougies, une peut suffire, mais si vous avez un écran large, deux bougies espacées de 20 centimètres peuvent faire l'affaire pour couvrir tout l'écran</note> | + | <note>Pour les bougies, une peut suffire, mais si vous avez un écran large, deux bougies espacées de 20 centimètres peuvent faire l'affaire pour couvrir tout l'écran.</note> |
- | <note important>Si vous souhaitez juste utiliser votre Wiimote pour contrôler xbmc, une méthode plus simple est décrite dans la page [[:xbmc#piloter_xbmc_avec_une_wiimote]]</note> | ||
+ | ===== Installation ===== | ||
+ | [[:tutoriel:comment_installer_un_paquet|Installez les paquets]] **[[apt>lswm,wmgui,wminput,libcwiid1|lswm, wmgui, wminput, libcwiid1]]**. | ||
+ | |||
+ | ===== Vérifier que tout fonctionne avec Wmgui ===== | ||
- | ===== Sous Hardy et suivants ===== | + | Lancez l'application comme indiqué [[:tutoriel:comment_lancer_application|ici]] ou via le [[:terminal]] (toutes [[:versions]] ou [[:variantes]] d'Ubuntu) avec la [[:commande_shell|commande]] suivante : <code>wmgui</code> |
- | + | ||
- | Ayant suivi ce tuto de A à Z, je me suis demandé si depuis Gutsy, 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êts. | + | |
- | + | ||
- | Il suffit de lancer synaptic et d'avoir les dépôts universe/multiverse, et vous tapez Wii dans le moteur de recherche afin de les trouver. | + | |
- | + | ||
- | [[:tutoriel:comment_installer_un_paquet|Installez les paquets]] **[[apt://lswm,wmgui,wminput|lswm, wmgui, wminput]]** | + | |
- | + | ||
- | Ensuite, passez au chapitre [[#Tester avec wmgui]] pour tester votre Wiimote. | + | |
- | Puis savoir comment l'activer en tant que pointeur. | + | Si ça ne se lance pas, créer un lien symbolique à l'aide de la commande ci-dessous : <code>sudo ln -s /usr/local/lib/libcwiid.so.1.0 /usr/lib/libcwiid.so.1</code> |
- | ===== Tester avec « wmgui » ===== | + | |
- | Maintenant, on doit pouvoir lancer la commande : | + | Allez dans //File -> Connect// pour vous connecter à la Wiimote. |
- | wmgui | + | <note tip>Pour mettre la Wiimote en mode de synchronisation (ou mode visible), on presse simultanément les boutons 1 et 2. |
- | + | Dans certains cas, enlever le clapet des piles afin d'accéder à un petit bouton rouge. Une fois ce dernier appuyé, les DÉL bleues clignotent. La Wiimote est alors en mode de synchronisation.</note> | |
- | <note>Chez moi, cela ne se lançait pas. J'ai dû créer un lien symbolique : | + | Cliquez alors sur **Valider**. |
- | sudo ln -s /usr/local/lib/libcwiid.so.1.0 /usr/lib/libcwiid.so.1 | + | |
- | </note> | + | |
- | + | ||
- | Ce programme va nous permettre de vérifier que les capteurs de la Wiimote sont bien gérés par l'ordinateur. | + | |
- | + | ||
- | Utilisez //File -> Connect// pour vous connecter à la Wiimote. Pour mettre la Wiimote en mode de synchronisation, on presse simultanément les boutons 1 et 2 ((mais ça vous le saviez déjà ;-))). Dans certains cas, enlever le clapet des piles afin d'accéder à un petit bouton rouge. Une fois ce dernier appuyé, les DÉL bleues clignotent. La Wiimote est alors en mode de synchronisation. Cliquez alors sur **Valider**. | + | |
On peut afficher l'état courant de la Wiimote connectée : | On peut afficher l'état courant de la Wiimote connectée : | ||
Ligne 49: | Ligne 41: | ||
* //Settings -> IR data// permet d'afficher les données concernant l'infrarouge. | * //Settings -> IR data// permet d'afficher les données concernant l'infrarouge. | ||
- | J'ai pu constater que l'accéléromètre fonctionne bien. Pour vérifier l'IR, vous devez brancher une //sensorbar// ou utiliser une simple bougie (ça fonctionne chez moi !). L'idée est d'avoir une source ponctuelle d'infrarouge pour que la Wiimote se repère. | + | L'accéléromètre fonctionne plutôt bien. Pour vérifier l'infrarouge, vous devez brancher une barre de détection (//sensorbar//, en anglais) ou utiliser une simple bougie (ça fonctionne chez moi !). L'idée est d'avoir une source ponctuelle d'infrarouge pour que la 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). | + | <note warning>Pour ceux qui auraient le message « Error establishing control channel connection », il faut déclarer 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 | WIIMOTE_BDADDR=uu:vv:ww:xx:yy:zz | ||
export WIIMOTE_BDADDR | 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** | + | Pour éviter de saisir ces commandes à chaque fois que vous lancez votre session, il suffit de placer ces lignes dans votre fichier **~/.bashrc**. |
+ | </note> | ||
- | ===== Lancer « wminput » ===== | + | ===== Faire fonctionner la Wiimote grâce à wminput ===== |
- | Tout d'abord, on va chercher l'adresse de notre Wiimote. | + | Tout d'abord, on va chercher l'adresse Mac de notre Wiimote. Pour l'obtenir, tapez la commande ci-dessous dans un **[[terminal]]**. |
- | Pour obtenir l'adresse Mac de votre Wiimote, tapez, dans un **[[terminal]]**: | ||
lswm | 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 renvoie l'adresse Mac de la Wiimote. | + | Ce petit programme va vous demander de mettre votre Wiimote en mode visible (appuyez sur 1 et 2 en même temps) et vous renvoie l'adresse Mac de la Wiimote. |
- | <note>Si vous n'arrivez pas à utiliser cette méthode, voici une méthode plus « classique » : | + | <note>Si vous n'arrivez pas à utiliser cette méthode, voici une méthode plus « classique » : mettez la Wiimote en mode visible (1 et 2 en même temps), puis exécutez la commande ci-dessous dans un **[[terminal]]**. |
- | + | ||
- | Mettez la Wiimote en mode « découvrable » (1 et 2 en même temps), puis éxécutez cette commande dans un **[[terminal]]**: | + | |
sudo hidd --search | sudo hidd --search | ||
L'adresse est de la forme « xx:xx:xx:xx:xx:xx ».</note> | L'adresse est de la forme « xx:xx:xx:xx:xx:xx ».</note> | ||
- | <note>Vous aurez peut-être besoin [[:tutoriel:comment_installer_un_paquet|d'installer le paquet]][[apt://libcwiid1-dev|libcwiid1-dev]]</note> | + | <note>Vous aurez peut-être besoin [[:tutoriel:comment_installer_un_paquet|d'installer le paquet]][[apt://libcwiid1-dev|libcwiid1-dev]].</note> |
- | Dans certains cas, il est utile de charger un module pour faire fonctionner « wminput ». Un « lsmod » vous le dira. Dans le doute, tapez | + | Dans certains cas, il est utile de charger un module pour faire fonctionner « wminput ». Un « lsmod » vous le dira. Dans le doute, tapez la commande ci-dessous. |
sudo modprobe uinput | sudo modprobe uinput | ||
Ligne 88: | Ligne 77: | ||
sudo wminput -c acc_ptr xx:xx:xx:xx:xx:xx | sudo wminput -c acc_ptr xx:xx:xx:xx:xx:xx | ||
- | Cette commande 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. | + | Cette commande permet d'utiliser uniquement l'accéléromètre pour le contrôle de la souris. Il faut la pencher en avant & en arrière et la tourner sur elle-même. |
=== Mode infrarouge === | === Mode infrarouge === | ||
Ligne 94: | Ligne 83: | ||
sudo wminput -c ir_ptr xx:xx:xx:xx:xx:xx | sudo wminput -c ir_ptr xx:xx:xx:xx:xx:xx | ||
- | Cette commande permet d'utiliser le pointeur infrarouge de la Wiimote. Il faut, au préalable, avoir une //sensorbar// sous tension, ou simplement une bougie éclairant vers la Wiimote. Une vieille télécommande infrarouge et un élastique fonctionnent également. | + | Cette commande permet d'utiliser le pointeur infrarouge de la Wiimote. Il faut, au préalable, avoir une //sensorbar// sous tension ou simplement une bougie éclairant vers la Wiimote. Une vieille télécommande infrarouge et un élastique fonctionnent également. |
Sans doute la plus utile. Si ça ne fonctionne pas tout de suite, il faut redémarrer la machine. | Sans doute la plus utile. Si ça ne fonctionne pas tout de suite, il faut redémarrer la machine. | ||
- | === Mode nunchuk === | + | === Mode nunchuk === |
- | //(fonctionne sur la version 0.6.00)// | + | //(Fonctionne sur la version 0.6.00.)// |
sudo wminput -c nunchuk_acc_ptr xx:xx:xx:xx:xx:xx | sudo wminput -c nunchuk_acc_ptr xx:xx:xx:xx:xx:xx | ||
Cette commande permet d'utiliser l'accéléromètre du nunchuk pour le contrôle de la souris. L'utilisation est similaire au mode accéléromètre. | Cette commande permet d'utiliser l'accéléromètre du nunchuk pour le contrôle de la souris. L'utilisation est similaire au mode accéléromètre. | ||
- | <note>Si vous n'arrivez pas à l'activer, faite cette commande avant de lancer wminput : | + | <note>Si vous n'arrivez pas à l'activer, utilisez la commande suivante avant de lancer wminput. |
sudo hidd --kill xx:xx:xx:xx:xx:xx | sudo hidd --kill xx:xx:xx:xx:xx:xx | ||
</note> | </note> | ||
- | <note>Plus généralement, les différents modes (nunchuk, gamepad, ir_ptr, etc.) sont disponibles à l'emplacement : | + | <note>Plus généralement, les différents modes (nunchuk, gamepad, ir_ptr, etc.) sont disponibles à l'emplacement indiqué ci-dessous. |
/etc/cwiid/wminput | /etc/cwiid/wminput | ||
- | Il est même possible de modifier/créer ses propres fichiers de configuration. | + | Il est même possible de modifier et de créer ses propres fichiers de configuration. |
</note> | </note> | ||
===== Pour aller plus loin ===== | ===== Pour aller plus loin ===== | ||
- | ==== Résolutions de problèmes ==== | ||
- | === Curseur enfermé dans une boîte ou souris inactive === | ||
- | Si votre curseur semble "**enfermé dans une boite invisible**" ou "**reste bloqué**"en mode infrarouge, 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 | ||
- | <file> | ||
- | Plugin.ir_ptr.X = ~ABS_X | ||
- | Plugin.ir_ptr.Y = ~ABS_Y | ||
- | </file> | ||
- | par | ||
- | <file> | ||
- | Plugin.ir_ptr.X = ABS_X | ||
- | Plugin.ir_ptr.Y = ABS_Y | ||
- | </file> | ||
- | |||
==== Configurations personnalisées / Mapping ==== | ==== Configurations personnalisées / Mapping ==== | ||
Il est possible de personnaliser les actions de la Wiimote en assignant d'autres touches à ses boutons. | Il est possible de personnaliser les actions de la Wiimote en assignant d'autres touches à ses boutons. | ||
Ligne 134: | Ligne 110: | ||
Si on regarde le fichier /etc/cwiid/wminput/ir_ptr, on observe que celui-ci inclut le fichier buttons qui régit les touches et assigne une manière de gérer les axes de la souris. | Si on regarde le fichier /etc/cwiid/wminput/ir_ptr, on observe que celui-ci inclut 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 : | + | On peut commencer sur la base de acc_ptr (ou ir_ptr si vous préférez l'infrarouge) et ajouter dedans les boutons que l'on veut à l'aide de la commande ci-dessous. |
+ | sudo cp /etc/cwiid/wminput/acc_ptr /etc/cwiid/wminput/ma_config | ||
+ | Si vous préférez l'infrarouge, vous pouvez utiliser la commande suivante. | ||
sudo cp /etc/cwiid/wminput/ir_ptr /etc/cwiid/wminput/ma_config | sudo cp /etc/cwiid/wminput/ir_ptr /etc/cwiid/wminput/ma_config | ||
- | On peut ensuite éditer ce fichier (**Pensez à retirer la ligne "include buttons" pour éviter les conflits !**). | + | On peut ensuite éditer ce fichier (**Pensez à retirer la ligne « include buttons » pour éviter les conflits !**). |
- | Voici deux exemples de fichiers personnalisés : | + | Voici un exemple de fichier personnalisé. |
- | Un pour naviguer dans les dossiers | + | <file> |
- | <file>#ir_ptr | + | Plugin.acc.X = REL_X |
- | + | Plugin.acc.Y = -REL_Y # Je trouve ça plus naturel en négatif | |
- | Plugin.ir_ptr.X = ABS_X | + | Plugin.led.Battery = 1 # Pour afficher l'état de la batterie quand on appuie simultanément sur A et B |
- | Plugin.ir_ptr.Y = ABS_Y | + | |
- | + | ||
- | Wiimote.A = KEY_LEFTALT # Touche ALT Gauche | + | |
- | Wiimote.B = BTN_LEFT # Clic Gauche | + | |
- | Wiimote.Up = KEY_UP # Touche Haut | + | |
- | Wiimote.Down = KEY_DOWN # Touche Bas | + | |
- | Wiimote.Left = KEY_LEFTCTRL # Touche Ctrl Gauche | + | |
- | Wiimote.Right = BTN_RIGHT # Clic Droit | + | |
- | Wiimote.Home = BTN_MIDDLE # Clic Milieu | + | |
- | Wiimote.1 = KEY_ENTER # Touche Entrée | + | |
- | Wiimote.2 = KEY_SPACE # Touche Espace | + | |
- | Wiimote.Plus = KEY_VOLUMEUP # Touche Multimédia Volume + | + | |
- | Wiimote.Minus = KEY_VOLUMEDOWN # Touche Multimédia Volume - | + | |
- | </file> | + | |
- | + | ||
- | et un autre plus axé multimédia | + | |
- | <file>#ir_ptr | + | |
- | + | ||
- | Plugin.ir_ptr.X = ABS_X | + | |
- | Plugin.ir_ptr.Y = ABS_Y | + | |
| | ||
Wiimote.A = BTN_LEFT # Clic gauche | Wiimote.A = BTN_LEFT # Clic gauche | ||
Ligne 172: | Ligne 130: | ||
Wiimote.Left = KEY_LEFT # Touche Gauche ◁ | Wiimote.Left = KEY_LEFT # Touche Gauche ◁ | ||
Wiimote.Right = KEY_RIGHT # Touche Droite ▷ | Wiimote.Right = KEY_RIGHT # Touche Droite ▷ | ||
- | Wiimote.Home = KEY_HOME # Touche multimédia Home | + | Wiimote.Home = KEY_HOMEPAGE # Touche multimédia Home (Dossier personnel) |
- | Wiimote.1 = KEY_PLAYPAUSE # Touche multimédia Play/Pause ▸ | + | Wiimote.1 = KEY_PLAYPAUSE # Touche multimédia Jouer/Pause ▸ |
- | Wiimote.2 = KEY_STOP # Touche multimédia Stop | + | Wiimote.2 = KEY_NEXTSONG # Touche multimédia Titre suivant |
Wiimote.Plus = KEY_VOLUMEUP # Touche multimédia Volume + | Wiimote.Plus = KEY_VOLUMEUP # Touche multimédia Volume + | ||
Wiimote.Minus = KEY_VOLUMEDOWN # Touche multimédia Volume - | Wiimote.Minus = KEY_VOLUMEDOWN # Touche multimédia Volume - | ||
</file> | </file> | ||
- | Vous pouvez ensuite le tester avec la commande : | + | Vous pouvez ensuite le tester avec la commande ci-dessous. |
sudo wminput -c ma_config XX:XX:XX:XX:XX:XX | sudo wminput -c ma_config XX:XX:XX:XX:XX:XX | ||
- | La liste des boutons de la Wiimote est disponible à l'adresse suivante : http://abstrakraft.org/cwiid/browser/doc/wminput.list | + | La liste des boutons de la Wiimote est disponible à l'adresse suivante : http://abstrakraft.org/cwiid/browser/doc/wminput.list. |
- | La liste des touches gérées est disponible à l'adresse suivante : http://abstrakraft.org/cwiid/browser/wminput/action_enum.txt | + | La liste des touches gérées est disponible à l'adresse suivante : http://abstrakraft.org/cwiid/browser/wminput/action_enum.txt. |
+ | ==== Tableau numérique interactif (TNI / whiteboard / TNWii) ==== | ||
+ | L'origine du TNWii : [[http://www.cs.cmu.edu/~johnny/projects/wii/]]. | ||
- | ===== Références ===== | + | Les pilotes pour faire votre TNWii (sous Hardy, Intrepid et suivants...) : [[http://code.google.com/p/linux-whiteboard/downloads/list]]. |
- | Articles dont je me suis très fortement « inspiré » : | + | Ou les sources par le svn : [[http://linux-whiteboard.googlecode.com/svn/trunk/]]. |
- | * http://www.jeuvinux.net/article.php3?id_article=109 | + | Une autre version (qui devrait mieux fonctionner) existe également (GTKWhiteboard) : [[https://forum.ubuntu-fr.org/viewtopic.php?id=208957&p=3]] (ce lien mêne au forum qui présente également d'autres ressources sur le TNWii). |
- | * http://www.elotrolado.net/showthread.php?s=&threadid=694072 | + | |
+ | Un tutoriel 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). | ||
+ | ==== Démon et auto-connexion ==== | ||
+ | Il est lassant d'avoir à saisir toutes ces commandes avant de pouvoir profiter de sa wiimote. On peut lancer un démon chargé de se (re-)connecter automatiquement à votre Wiimote quand elle est détectée. | ||
+ | * **N'oubliez pas de personnaliser le fichier de configuration.** | ||
+ | * Le propriétaire du démon doit disposer des permissions en lecture/écriture sur ''/dev/uinput'' (regardez [[:wiimote#resolutions_de_problemes|du côté de udev]]). | ||
+ | * Copiez ensuite le script ci-dessous dans ''/etc/init.d/wminput''. | ||
+ | <file> | ||
+ | #! /bin/sh | ||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: wiimote | ||
+ | # Required-Start: $local_fs $syslog $remote_fs bluetooth udev | ||
+ | # Required-Stop: | ||
+ | # Default-Start: 2 3 4 5 | ||
+ | # Default-Stop: 0 1 6 | ||
+ | # Short-Description: Wminput for wiimote initscript | ||
+ | # Description: Wiimote for wiimote initscript : should be placed in /etc/init.d. | ||
+ | ### END INIT INFO | ||
+ | # Author: LvR | ||
- | ===== Petit script qui automatise l'utilisation ===== | + | # Do NOT "set -e" |
- | 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. | + | # PATH should only include /usr/* if it runs after the mountnfs.sh script |
+ | PATH=/sbin:/usr/sbin:/bin:/usr/bin | ||
+ | DESC="wminput initscript" | ||
+ | NAME=wminput | ||
+ | DAEMON=/usr/bin/$NAME | ||
+ | DAEMON_ARGS="-d" | ||
+ | PIDFILE=/var/run/$NAME.pid | ||
+ | SCRIPTNAME=/etc/init.d/$NAME | ||
- | Ce script nécessite d'avoir installé au préalable tout ce qu'il faut pour utiliser sa Wiimote, ainsi que zenity. | + | # Exit if the package is not installed |
+ | [ -x "$DAEMON" ] || exit 0 | ||
- | Il nécessite aussi des droits d'administration donc il faut le lancer avec gksudo. | + | # Read configuration variable file if it is present |
+ | [ -r /etc/default/$NAME ] && . /etc/default/$NAME | ||
- | Copiez ce code dans un fichier texte et rendez-le exécutable (Clic droit --> Propriétés --> Permissions --> Exécution : cochez la case autorisant). | + | # Load the VERBOSE setting and other rcS variables |
- | <file> | + | . /lib/init/vars.sh |
- | #!/bin/bash | + | |
- | #Script réalisé par KicheTof pour les utilisateurs de WiiMote. | + | # Define LSB log_* functions. |
- | #Script libre de toute modification sans aucune demande nécessaire :) | + | # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. |
- | #Vive le libre :) | + | . /lib/lsb/init-functions |
- | function quit { | + | |
- | if [ $? != "0" ]; then | + | # |
- | exit 1 | + | # Function that starts the daemon/service |
- | fi | + | # |
- | [ $? -ne "0" ] && exit 2 | + | do_start() |
- | } | + | { |
- | device=$(hcitool scan | tail -n +2 | while read line | + | # Be sure that uinput module is loaded |
- | do | + | modprobe uinput |
- | echo -n "$line" | sed -r "s/\s*([0-9A-Fa-f:]+)\s*(.*)/\1\n\2\n/" | + | |
- | done | zenity --list \ | + | # Add specific daemon args |
- | --title "Utilisation de la WiiMote comme souris : 3 méthodes !" \ | + | [ -n "$WMINPUTCONF" ] && DAEMON_ARGS="$DAEMON_ARGS -c $WMINPUTCONF" |
- | --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)" \ | + | [ -n "$WIIMOTEADDR" ] && DAEMON_ARGS="$DAEMON_ARGS $WIIMOTEADDR" |
- | --column "id" --column "appareil bluetooth") | + | [ -n "$EXTRAOPTS" ] && DAEMON_ARGS="$DAEMON_ARGS $EXTRAOPTS" |
- | quit; | + | |
- | while [ ! "$CHOIX_ACTION" ] | + | |
- | do | + | # Return |
- | CHOIX_ACTION=$(zenity --list --width "600" --height "200" \ | + | # 0 if daemon has been started |
- | --title "Choisissez quelle méthode pour utiliser la WiiMote" \ | + | # 1 if daemon was already running |
- | --text "Pilotage par Accéléromètre, par Infrarouge, ou via le Nunchuk" \ | + | # 2 if daemon could not be started |
- | --radiolist \ | + | start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ |
- | --column "Choix" --column "Pilotage" --column "Description" \ | + | || return 1 |
- | True Accéléromètre "Utilisation de la position de la WiiMote" \ | + | start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- \ |
- | False Infrarouge "Utilisation de l'infrarouge à l'aide d'une bougie, par exemple" \ | + | $DAEMON_ARGS \ |
- | False Nunchuk "Utilisation du nunchuk pour piloter la souris") | + | || return 2 |
- | quit; | + | # Add code here, if necessary, that waits for the process to be ready |
- | if [ $CHOIX_ACTION == "Accéléromètre" ]; then | + | # to handle requests from services started subsequently which depend |
- | action="acc_ptr"; | + | # on this one. As a last resort, sleep for some time. |
- | elif [ $CHOIX_ACTION == "Infrarouge" ]; then | + | } |
- | action="ir_ptr"; | + | |
- | elif [ $CHOIX_ACTION == "Nunchuk" ]; then | + | # |
- | action="nunchuk_acc_ptr"; | + | # Function that stops the daemon/service |
- | fi | + | # |
- | done | + | do_stop() |
- | 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; | + | # Return |
+ | # 0 if daemon has been stopped | ||
+ | # 1 if daemon was already stopped | ||
+ | # 2 if daemon could not be stopped | ||
+ | # other if a failure occurred | ||
+ | start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME | ||
+ | RETVAL="$?" | ||
+ | [ "$RETVAL" = 2 ] && return 2 | ||
+ | # Wait for children to finish too if this is a daemon that forks | ||
+ | # and if the daemon is only ever run from this initscript. | ||
+ | # If the above conditions are not satisfied then add some other code | ||
+ | # that waits for the process to drop all resources that could be | ||
+ | # needed by services started subsequently. A last resort is to | ||
+ | # sleep for some time. | ||
+ | start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON | ||
+ | [ "$?" = 2 ] && return 2 | ||
+ | # Many daemons don't delete their pidfiles when they exit. | ||
+ | rm -f $PIDFILE | ||
+ | return "$RETVAL" | ||
+ | } | ||
+ | |||
+ | # | ||
+ | # Function that sends a SIGHUP to the daemon/service | ||
+ | # | ||
+ | do_reload() { | ||
+ | # | ||
+ | # If the daemon can reload its configuration without | ||
+ | # restarting (for example, when it is sent a SIGHUP), | ||
+ | # then implement that here. | ||
+ | # | ||
+ | start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME | ||
+ | return 0 | ||
+ | } | ||
+ | |||
+ | case "$1" in | ||
+ | start) | ||
+ | [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" | ||
+ | do_start | ||
+ | case "$?" in | ||
+ | 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | ||
+ | 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | ||
+ | esac | ||
+ | ;; | ||
+ | stop) | ||
+ | [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" | ||
+ | do_stop | ||
+ | case "$?" in | ||
+ | 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | ||
+ | 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | ||
+ | esac | ||
+ | ;; | ||
+ | #reload|force-reload) | ||
+ | # | ||
+ | # If do_reload() is not implemented then leave this commented out | ||
+ | # and leave 'force-reload' as an alias for 'restart'. | ||
+ | # | ||
+ | #log_daemon_msg "Reloading $DESC" "$NAME" | ||
+ | #do_reload | ||
+ | #log_end_msg $? | ||
+ | #;; | ||
+ | restart|force-reload) | ||
+ | # | ||
+ | # If the "reload" option is implemented then remove the | ||
+ | # 'force-reload' alias | ||
+ | # | ||
+ | log_daemon_msg "Restarting $DESC" "$NAME" | ||
+ | do_stop | ||
+ | case "$?" in | ||
+ | 0|1) | ||
+ | do_start | ||
+ | case "$?" in | ||
+ | 0) log_end_msg 0 ;; | ||
+ | 1) log_end_msg 1 ;; # Old process is still running | ||
+ | *) log_end_msg 1 ;; # Failed to start | ||
+ | esac | ||
+ | ;; | ||
+ | *) | ||
+ | # Failed to stop | ||
+ | log_end_msg 1 | ||
+ | ;; | ||
+ | esac | ||
+ | ;; | ||
+ | *) | ||
+ | #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 | ||
+ | echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 | ||
+ | exit 3 | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | exit 0 | ||
</file> | </file> | ||
- | ===== Tableau numérique interactif (TNI / whiteboard / TNWii) ===== | + | Le fichier de configuration **/etc/default/wminput** : |
+ | Dans cet exemple il faut penser à remplacer « xbmc » par le fichier de configuration des boutons de son choix (voir 5.1 Configurations personnalisées / Mapping). Il faut aussi remplacer 00:21:BD:25:51:C6 par l'adresse Mac de sa Wiimote (voir 4 Faire fonctionner la Wiimote grâce à wminput). | ||
+ | <file># This file is sourced by /etc/init.d/wminput | ||
+ | # | ||
+ | # When wminput is started using the init script, the | ||
+ | # -d option is always used. | ||
+ | # | ||
+ | # Each setting is marked either "required" or "optional"; | ||
+ | # leaving any required setting unconfigured will cause | ||
+ | # the service to not start. | ||
- | L'origine du TNWii : [[http://www.cs.cmu.edu/~johnny/projects/wii/]]. | + | # [optional] wiimote mac address : |
+ | WIIMOTEADDR=00:21:BD:25:51:C6 | ||
- | Les pilotes pour faire votre TNWii (sous Hardy, Intrepid et suivants...) : [[http://code.google.com/p/linux-whiteboard/downloads/list]]. | + | # [optional] wminput configuration to use : |
+ | WMINPUTCONF=xbmc | ||
- | Ou les sources par le svn : [[http://linux-whiteboard.googlecode.com/svn/trunk/]]. | + | # [optional] extra command line options, if any: |
+ | EXTRAOPTS=</file> | ||
- | Une autre version (qui devrait mieux fonctionner) existe également (GTKWhiteboard) : [[http://forum.ubuntu-fr.org/viewtopic.php?id=208957&p=3]] (ce lien mêne au forum qui présente également d'autres ressources sur le TNWii). | + | **__Rendez le service activable avec la commande ci-dessous.__** |
- | Un tutoriel en français pour utiliser le tableau interactif Wiimote sous linux : | + | sudo chmod u+x /etc/init.d/wminput |
- | http://trucsinformatiques.free.fr/articles.php?lng=fr&pg=32 (obsolète, les paquets cités ci-dessus sont plus récents). | + | |
+ | Pour ajouter le service au démarrage, il faut utiliser la commande suivante. | ||
+ | sudo update-rc.d -f wminput defaults | ||
+ | |||
+ | Pour lancer(/stopper/relancer) le démon, il faut utiliser la commande ci-dessous. | ||
+ | |||
+ | sudo service wminput start | ||
+ | |||
+ | Vous pouvez à présent connecter votre WiiMote simplement en appuyant sur 1+2, l'éteindre (en maintenant le bouton POWER) et la ré-allumer sans avoir à lancer quoique ce soit. | ||
+ | ==== Résolutions de problèmes ==== | ||
+ | === Curseur enfermé dans une boîte ou souris inactive === | ||
+ | Si votre curseur semble « **enfermé dans une boîte invisible** » ou « **reste bloqué** » en mode infrarouge, 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 | ||
+ | <file> | ||
+ | Plugin.ir_ptr.X = ~ABS_X | ||
+ | Plugin.ir_ptr.Y = ~ABS_Y | ||
+ | </file> | ||
+ | par | ||
+ | <file> | ||
+ | Plugin.ir_ptr.X = ABS_X | ||
+ | Plugin.ir_ptr.Y = ABS_Y | ||
+ | </file> | ||
+ | |||
+ | === Problème de droits avec udev === | ||
+ | Pour piloter correctement la wiimote, il faut les droits, en lecture et en écriture, sur le périphérique ''/dev/uinput''. Étrangement, udev refuse d'appliquer le CHMOD. Pour y remédier, on va demander à udev d'appliquer le CHMOD de la règle le plus tard possible en remplaçant le ''='' par un '':=''. | ||
+ | Voici un exemple à placer dans ''/etc/udev/rules.d/''. Il faut créer un nouveau fichier. Donc, pensez à la commande suivante, par exemple. | ||
+ | |||
+ | gksudo gedit /etc/udev/rules.d/wiimote | ||
+ | <file>KERNEL=="uinput", CHMOD:="0666"</file> | ||
+ | |||
+ | === Problème avec les applications en plein écran === | ||
+ | Il est possible que la Wiimote, utilisée avec l'infrarouge, fonctionne mal avec les applications en plein écran. Pour cela, il faut éditer le fichier ''/etc/environment'' via la commande suivante. | ||
+ | |||
+ | sudo nano /etc/environment | ||
+ | Ajoutez-y en-dessous de la grande ligne le petit code suivant. | ||
+ | <code>SDL_VIDEO_X11_DGAMOUSE=0</code> | ||
+ | Le problème est apparemment dû à l'utilisation de la librairie libSDL. | ||
+ | Néanmoins, si le bogue se produit dans un environnement spécifique (comme XBMC en //standalone//), il est préférable d'ajouter ceci au script correspondant à l'environnement. | ||
+ | ===== Références ===== | ||
+ | |||
+ | Articles dont je me suis très fortement inspiré : | ||
+ | |||
+ | * http://www.jeuvinux.net/article.php3?id_article=109 | ||
+ | * http://www.elotrolado.net/showthread.php?s=&threadid=694072 | ||
+ | Solution pour les applications fullscreen : http://www.crutzi.info/xbmc-fullscreen-pointer-issues | ||
---- | ---- | ||
- | //Contributeurs : [[utilisateurs:liberator|Liberator]], [[utilisateurs:kichetof|kichetof]], [[utilisateurs:Fabien26]],[[utilisateurs:sunab]], [[utilisateurs:alexmic]].// | + | //Contributeurs : [[utilisateurs:liberator|Liberator]], [[utilisateurs:kichetof|kichetof]], [[utilisateurs:Fabien26]], [[utilisateurs:sunab]], [[utilisateurs:alexmic]], [[utilisateurs:tintou]], [[utilisateurs:nover]]// |