Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
wiimote [Le 23/11/2010, 23:12] – Remplacement de l'init-script (source: http://forum.ubuntu-fr.org/viewtopic.php?pid=3166922) lildadou | wiimote [Le 02/02/2018, 19:54] (Version actuelle) – Petit nettoyage L'Africain | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== Utilisation d'une Wiimote comme souris ====== | ||
+ | |||
+ | Tutoriel concernant l' | ||
+ | |||
+ | 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 [[: | ||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | * Posséder un émetteur/ | ||
+ | * Avoir une Wiimote… ; | ||
+ | * Allumer une // | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | [[: | ||
+ | |||
+ | |||
+ | ===== Vérifier que tout fonctionne avec Wmgui ===== | ||
+ | |||
+ | Lancez l' | ||
+ | |||
+ | Si ça ne se lance pas, créer un lien symbolique à l'aide de la commande ci-dessous : | ||
+ | |||
+ | Allez dans //File -> Connect// pour vous connecter à la Wiimote. | ||
+ | |||
+ | <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' | ||
+ | | ||
+ | |||
+ | On peut afficher l' | ||
+ | * //Settings -> Acc data// permet d' | ||
+ | * //Settings -> IR data// | ||
+ | |||
+ | L' | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | WIIMOTE_BDADDR=uu: | ||
+ | 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 **~/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Faire fonctionner la Wiimote grâce à wminput ===== | ||
+ | |||
+ | Tout d' | ||
+ | |||
+ | lswm | ||
+ | |||
+ | 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' | ||
+ | |||
+ | < | ||
+ | |||
+ | sudo hidd --search | ||
+ | |||
+ | L' | ||
+ | < | ||
+ | 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 | ||
+ | |||
+ | Et là, c'est presque gagné. Il existe (pour l' | ||
+ | |||
+ | === Mode accéléromètre === | ||
+ | |||
+ | sudo wminput -c acc_ptr xx: | ||
+ | |||
+ | Cette commande permet d' | ||
+ | |||
+ | === Mode infrarouge === | ||
+ | |||
+ | sudo wminput -c ir_ptr xx: | ||
+ | |||
+ | Cette commande permet d' | ||
+ | Sans doute la plus utile. Si ça ne fonctionne pas tout de suite, il faut redémarrer la machine. | ||
+ | |||
+ | |||
+ | |||
+ | === Mode nunchuk === | ||
+ | // | ||
+ | sudo wminput -c nunchuk_acc_ptr xx: | ||
+ | |||
+ | Cette commande permet d' | ||
+ | |||
+ | < | ||
+ | sudo hidd --kill xx: | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | / | ||
+ | Il est même possible de modifier et de créer ses propres fichiers de configuration. | ||
+ | </ | ||
+ | |||
+ | ===== Pour aller plus loin ===== | ||
+ | ==== Configurations personnalisées / Mapping ==== | ||
+ | Il est possible de personnaliser les actions de la Wiimote en assignant d' | ||
+ | |||
+ | Si on regarde le fichier / | ||
+ | |||
+ | On peut commencer sur la base de acc_ptr (ou ir_ptr si vous préférez l' | ||
+ | |||
+ | sudo cp / | ||
+ | Si vous préférez l' | ||
+ | sudo cp / | ||
+ | |||
+ | On peut ensuite éditer ce fichier (**Pensez à retirer la ligne « include buttons » pour éviter les conflits !**). | ||
+ | |||
+ | Voici un exemple de fichier personnalisé. | ||
+ | < | ||
+ | Plugin.acc.X = REL_X | ||
+ | Plugin.acc.Y = -REL_Y # Je trouve ça plus naturel en négatif | ||
+ | Plugin.led.Battery = 1 # Pour afficher l' | ||
+ | | ||
+ | Wiimote.A = BTN_LEFT # Clic gauche | ||
+ | Wiimote.B = BTN_RIGHT # | ||
+ | Wiimote.Up = KEY_UP # Touche Haut △ | ||
+ | Wiimote.Down = KEY_DOWN # Touche Bas ▽ | ||
+ | Wiimote.Left = KEY_LEFT # Touche Gauche ◁ | ||
+ | Wiimote.Right = KEY_RIGHT # | ||
+ | Wiimote.Home = KEY_HOMEPAGE # | ||
+ | Wiimote.1 = KEY_PLAYPAUSE # | ||
+ | Wiimote.2 = KEY_NEXTSONG # | ||
+ | Wiimote.Plus = KEY_VOLUMEUP # | ||
+ | Wiimote.Minus = KEY_VOLUMEDOWN # | ||
+ | </ | ||
+ | |||
+ | Vous pouvez ensuite le tester avec la commande ci-dessous. | ||
+ | |||
+ | sudo wminput -c ma_config XX: | ||
+ | |||
+ | La liste des boutons de la Wiimote est disponible à l' | ||
+ | |||
+ | La liste des touches gérées est disponible à l' | ||
+ | |||
+ | ==== Tableau numérique interactif (TNI / whiteboard / TNWii) ==== | ||
+ | |||
+ | L' | ||
+ | |||
+ | Les pilotes pour faire votre TNWii (sous Hardy, Intrepid et suivants...) : [[http:// | ||
+ | |||
+ | Ou les sources par le svn : [[http:// | ||
+ | |||
+ | Une autre version (qui devrait mieux fonctionner) existe également (GTKWhiteboard) : [[http:// | ||
+ | |||
+ | Un tutoriel en français pour utiliser le tableau interactif Wiimote sous linux : | ||
+ | http:// | ||
+ | |||
+ | ==== Démon et auto-connexion ==== | ||
+ | Il est lassant d' | ||
+ | |||
+ | * **N' | ||
+ | * Le propriétaire du démon doit disposer des permissions en lecture/ | ||
+ | * Copiez ensuite le script ci-dessous dans ''/ | ||
+ | < | ||
+ | #! /bin/sh | ||
+ | |||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: | ||
+ | # Required-Start: | ||
+ | # Required-Stop: | ||
+ | # Default-Start: | ||
+ | # Default-Stop: | ||
+ | # Short-Description: | ||
+ | # Description: | ||
+ | ### END INIT INFO | ||
+ | |||
+ | # Author: LvR | ||
+ | |||
+ | # Do NOT "set -e" | ||
+ | |||
+ | # PATH should only include /usr/* if it runs after the mountnfs.sh script | ||
+ | PATH=/ | ||
+ | DESC=" | ||
+ | NAME=wminput | ||
+ | DAEMON=/ | ||
+ | DAEMON_ARGS=" | ||
+ | PIDFILE=/ | ||
+ | SCRIPTNAME=/ | ||
+ | |||
+ | # Exit if the package is not installed | ||
+ | [ -x " | ||
+ | |||
+ | # Read configuration variable file if it is present | ||
+ | [ -r / | ||
+ | |||
+ | # Load the VERBOSE setting and other rcS variables | ||
+ | . / | ||
+ | |||
+ | # Define LSB log_* functions. | ||
+ | # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. | ||
+ | . / | ||
+ | |||
+ | # | ||
+ | # Function that starts the daemon/ | ||
+ | # | ||
+ | do_start() | ||
+ | { | ||
+ | # Be sure that uinput module is loaded | ||
+ | modprobe uinput | ||
+ | | ||
+ | # Add specific daemon args | ||
+ | [ -n " | ||
+ | [ -n " | ||
+ | [ -n " | ||
+ | | ||
+ | | ||
+ | # Return | ||
+ | # 0 if daemon has been started | ||
+ | # 1 if daemon was already running | ||
+ | # 2 if daemon could not be started | ||
+ | start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ | ||
+ | || return 1 | ||
+ | start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- \ | ||
+ | $DAEMON_ARGS \ | ||
+ | || return 2 | ||
+ | # Add code here, if necessary, that waits for the process to be ready | ||
+ | # to handle requests from services started subsequently which depend | ||
+ | # on this one. As a last resort, sleep for some time. | ||
+ | } | ||
+ | |||
+ | # | ||
+ | # Function that stops the daemon/ | ||
+ | # | ||
+ | do_stop() | ||
+ | { | ||
+ | # 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/ | ||
+ | RETVAL=" | ||
+ | [ " | ||
+ | # 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. | ||
+ | # sleep for some time. | ||
+ | start-stop-daemon --stop --quiet --oknodo --retry=0/ | ||
+ | [ " | ||
+ | # Many daemons don't delete their pidfiles when they exit. | ||
+ | rm -f $PIDFILE | ||
+ | return " | ||
+ | } | ||
+ | |||
+ | # | ||
+ | # Function that sends a SIGHUP to the daemon/ | ||
+ | # | ||
+ | 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 " | ||
+ | start) | ||
+ | [ " | ||
+ | do_start | ||
+ | case " | ||
+ | 0|1) [ " | ||
+ | 2) [ " | ||
+ | esac | ||
+ | ;; | ||
+ | stop) | ||
+ | [ " | ||
+ | do_stop | ||
+ | case " | ||
+ | 0|1) [ " | ||
+ | 2) [ " | ||
+ | esac | ||
+ | ;; | ||
+ | # | ||
+ | # | ||
+ | # If do_reload() is not implemented then leave this commented out | ||
+ | # and leave ' | ||
+ | # | ||
+ | # | ||
+ | #do_reload | ||
+ | # | ||
+ | #;; | ||
+ | restart|force-reload) | ||
+ | # | ||
+ | # If the " | ||
+ | # ' | ||
+ | # | ||
+ | log_daemon_msg " | ||
+ | do_stop | ||
+ | case " | ||
+ | 0|1) | ||
+ | do_start | ||
+ | case " | ||
+ | 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 " | ||
+ | echo " | ||
+ | exit 3 | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | exit 0 | ||
+ | </ | ||
+ | |||
+ | Le fichier de configuration **/ | ||
+ | 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: | ||
+ | < | ||
+ | # | ||
+ | # When wminput is started using the init script, the | ||
+ | # -d option is always used. | ||
+ | # | ||
+ | # Each setting is marked either " | ||
+ | # leaving any required setting unconfigured will cause | ||
+ | # the service to not start. | ||
+ | |||
+ | # [optional] wiimote mac address : | ||
+ | WIIMOTEADDR=00: | ||
+ | |||
+ | # [optional] wminput configuration to use : | ||
+ | WMINPUTCONF=xbmc | ||
+ | |||
+ | # [optional] extra command line options, if any: | ||
+ | EXTRAOPTS=</ | ||
+ | |||
+ | **__Rendez le service activable avec la commande ci-dessous.__** | ||
+ | |||
+ | sudo chmod u+x / | ||
+ | |||
+ | Pour ajouter le service au démarrage, il faut utiliser la commande suivante. | ||
+ | |||
+ | sudo update-rc.d -f wminput defaults | ||
+ | |||
+ | Pour lancer(/ | ||
+ | |||
+ | sudo service wminput start | ||
+ | |||
+ | Vous pouvez à présent connecter votre WiiMote simplement en appuyant sur 1+2, l' | ||
+ | ==== 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' | ||
+ | < | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | === 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 ''/ | ||
+ | Voici un exemple à placer dans ''/ | ||
+ | |||
+ | gksudo gedit / | ||
+ | < | ||
+ | |||
+ | === Problème avec les applications en plein écran === | ||
+ | Il est possible que la Wiimote, utilisée avec l' | ||
+ | |||
+ | sudo nano / | ||
+ | Ajoutez-y en-dessous de la grande ligne le petit code suivant. | ||
+ | < | ||
+ | Le problème est apparemment dû à l' | ||
+ | Néanmoins, si le bogue se produit dans un environnement spécifique (comme XBMC en // | ||
+ | ===== Références ===== | ||
+ | |||
+ | Articles dont je me suis très fortement inspiré : | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | Solution pour les applications fullscreen : http:// | ||
+ | ---- | ||
+ | // |