====== Configurer une télécommande avec inputlirc sous Linux Debian ====== Auteur : Olivier BOYER - oboyer () ajoute ! org ====== Mots clés ====== télécommande ''Logitech UltraX media remote'', RF, inputlirc, irexec, irxevent, USB, Debian ====== Introduction ====== Ce document présente comment configurer une télécommande ''Logitech UltraX Media Remote'' sous ''Linux Debian Etch'' (4.0 - stable). Cette télécommande fonctionne dans la plage de fréquences 2,4 GHz, qui lui permet une portée de 10 mètres, sans ligne de visée directe vers le mini-récepteur. Ce dernier se branche sur un port USB libre de l'ordinateur. ===== La télécommande Logitech UltraX media remote ===== Cette télécommande peut être séparée en deux blocs de touches : * Les touches numérotées (0 à 9), Enter, Clear, celles de direction ainsi que le bouton au centre de ces touches sont reconnues comme un clavier par le système Linux, et sont utilisables sans configuration particulière. * Les autres touches sont considérées comme un périphérique générique [[http://en.wikipedia.org/wiki/Human_interface_device|HID]]. Ces touches ne sont pas reconnues directement par le système. Les logiciels ''lirc'' et ''inputlirc'' permettent de prendre en compte ces touches, et d'associer des actions quand elles sont pressées par l'utilisateur. ===== Les logiciels de gestion de télécommandes ===== Les logiciels [[http://www.lirc.org|lirc]] et ''inputlirc'' décodent les signaux envoyés par une télécommande infra-rouge (IR) ou radio-fréquence (RF). Des applications associées permettent de déclencher des actions (par exemple, envoyer des évènements X) quand une touche de la télécommande est pressée. Ainsi, il est possible démarrer un programme, de l'arrêter, de se déplacer dans une liste de lecture, ... avec une télécommande. Le daemon ''lircd'' est assez complexe à configurer. Il faut créer son fichier de configuration ''lircd.conf'' en associant tous les codes des touches de la télécommande à un nom. Trouver ces codes est souvent difficile, tout du moins fastidieux. Or, la couche d'entrée du noyau affecte par défaut un nom symbolique aux touches multimédia. Le daemon ''inputlirc'', écrit par Guus Sliepen, agit comme un daemon ''lircd'', mais ne requiert pas de fichier de configuration. Il lit les évènements reçus par le noyau sur les périphériques ''/dev/input/eventX'', et les traduit en noms symboliques. Tous les clients de ''lirc'' fonctionnent, de manière transparente, avec le daemon ''inputlirc''. ===== Présentation de la maquette ===== * Un ordinateur compatible PC, architecture i386, doté d'un port USB (version 2 recommandée). * Une télécommande ''Logitech UltraX Media Remote'', avec le récepteur branché sur un port USB de l'ordinateur. ===== Note ===== Toutes les commandes présentées ici, sont à exécuter, sauf mention contraire, en tant qu'administrateur de la machine. ====== Pré-requis ====== * Le système ''Linux Debian Etch'' (4.0 - stable) doit être installé et fonctionnel. * La configuration réseau du système opérationnelle. ====== Installer les logiciels de gestion de la télécommande ====== ===== Installer les paquets ===== Vérifiez que le paquet ''xserver-xorg-input-evdev'' est installé : # dpkg -l |grep xserver-xorg-input-evdev ii xserver-xorg-input-evdev 1.1.2-6 X.Org X server -- evdev input driver Dans le cas contraire, procédez comme suit pour l'installer : # apt-get install xserver-xorg-input-evdev Puis, installez les paquets ''lirc'', ''lirc-x'' et ''inputlirc'' : # apt-get -y install lirc # apt-get -y install lirc-x # apt-get -y install inputlirc # apt-get autoclean Les paquets ''lirc'' et ''lirc-x'' apportent les clients pour associer des actions aux touches pressées de la télécommande. ===== Désactiver lircd au démarrage ===== Le paquet ''lirc'' active au démarrage de la machine le daemon ''lircd''. Dans cette maquette, le daemon ''lircd'' n'est pas utilisé (il est remplacé par ''inputlircd''). Pour désactiver le daemon ''lircd'', procédez comme suit : # update-rc.d -f lirc remove Removing any system startup links for /etc/init.d/lirc ... /etc/rc0.d/K19lirc /etc/rc1.d/K19lirc /etc/rc2.d/S19lirc /etc/rc3.d/S19lirc /etc/rc4.d/S19lirc /etc/rc5.d/S19lirc /etc/rc6.d/K19lirc ====== Configurer le daemon inputlircd ====== ===== Vérifier le fichier /etc/default/inputlircd ===== Vérifiez la configuration du fichier ''/etc/default/inputlircd''. Elle doit être semblable à celle ci-dessous, pour que ''inputlircd'' puisse gérer tous les périphériques HID : # Options to be passed to inputlirc. EVENTS="/dev/input/event*" OPTIONS= ===== Démarrer inputlircd ===== Pour configurer les touches de la télécommande, le daemon ''inputlircd'' doit être actif. Pour le démarrer, exécutez la commande suivante : # /etc/init.d/inputlirc start ===== Vérifier le bon fonctionnement ===== Exécutez la commande suivante : # irw Appuyez sur les touches de votre télécommande et vous devriez voir des sorties correspondantes dans votre terminal. Si c'est le cas, votre configuration fonctionne et vous pouvez passer à l'étape suivante. Dans le cas contraire, il est possible que votre télécommande ne soit pas supportée. Exemple avec une télécommande ''Logitech UltraX media remote '', en appuyant sur le bouton ''Play/Pause'' : a4 0 KEY_PLAYPAUSE event2 ====== Configurer les clients ====== Le daemon ''inputlircd'' est maintenant fonctionnel. Il transfère les évènements reçus du périphérique ''/dev/input/eventX'' aux clients qui interagissent avec les applications à piloter avec la télécommande. Il faut maintenant configurer les clients. Les configurations présentées ci-dessous gèrent à l'aide d'une télécommande le volume, la navigation dans une fenêtre, et les logiciels [[http://www.xinehq.de/|gxine]] et [[http://www.gnome.org/projects/rhythmbox/|rhythmbox]]. Cette section suppose que ces applications, et l'environnement graphique sont installés sur votre machine. Toutes les commandes présentées dans cette section doivent s'exécuter sous l'identité de l'utilisateur qui ouvre la session graphique. ===== Démarrer les démons utilisateurs ===== Les clients utilisés pour associer des actions aux touches de la télécommande sont ''irexec'' et ''irxevent''. Ces clients fonctionnent en mode daemon, et doivent être exécutés au démarrage de la session graphique utilisateur. Pour ce faire, vous pouvez ajouter : * les clients dans le gestionnaire de démarrage de votre ''Desktop Environment'', * ou, les lignes suivantes au début du fichier ''~/.xinitrc'' (ou ''~/.xession'', suivant le mode de démarrage de votre environnement graphique). La deuxième solution est retenue ici. Modifiez comme suit le fichier ''~/.xinitrc'' : #~/.xinitrc pkill irexec irexec -d ~/.lircrc pkill irxevent irxevent -d ~/.lircrc #[...] ===== Créer le fichier ~/.lircrc ===== Le principal fichier de configuration des clients est ''~/.lircrc''. La configuration ci-dessous définit les actions associées aux touches du premier bloc de la télécommande. Pour éviter de surcharger ce fichier, la directive ''include'' permet d'inclure le contenu d'un autre fichier de configuration (dédié à une application). Lors de la pression d'une touche, la commande : * ''irexec'' exécute une application, * ''irxevent'' simule la saisie d'une touche (ou d'une combinaison) du clavier dans la fenêtre graphique en cours. Voici le fichier ''~/.lircrc'' créé : #~/.lircrc #Main LIRC clients configuration file # irxevent keys : see /usr/share/doc/lirc-x/irxevent.keys # button name for irexec/irxevent : run 'irw' and press remote button # Close current window begin prog = irxevent button = KEY_CLOSE config = Key ctrl-q CurrentWindow config = Key ctrl-w CurrentWindow end # Start DVD player begin prog = irexec button = KEY_DVD config = gxine -f dvd:// & end # Start MP3 player begin prog = irexec button = KEY_MP3 config = rhythmbox & mode = rhythmbox end ## manage volume include ~/.lirc/volume ## navigate in current window include ~/.lirc/navigation ## rhythmbox include ~/.lirc/rhythmbox ## gxine include ~/.lirc/gxine #EOF ===== Créer le répertoire ~/.lirc ===== Le répertoire ''~/.lirc'' accueille les fichiers de configuration spécifiques à une application. Pour le créer, procédez comme suit : $ mkdir ~/.lirc ===== Créer le fichier ~/.lirc/volume ===== Voici le fichier de gestion du volume. La première pression sur la touche ''KEY_MUTE'' coupe le son, la seconde le réactive. La commande ''amixer'' fait partie du paquet ''alsa-utils''. #~/.lirc/volume begin prog = irexec button = KEY_MUTE config = amixer -q sset PCM toggle config = amixer -q sset PCM unmute end begin prog = irexec button = KEY_VOLUMEUP config = amixer -q sset PCM 5%+ unmute end begin prog = irexec button = KEY_VOLUMEDOWN config = amixer -q sset PCM 5%- end #EOF ===== Créer le fichier ~/.lirc/navigation ===== Ce fichier simule, lors d'une pression sur la touche ''KEY_FASTFORWARD'' ou ''KEY_REWIND'', la saisie au clavier de respectivement ''TAB'' ou ''SHIFT-TAB''. Il est ainsi possible de se déplacer dans la fenêtre graphique active. #~/.lirc/navigation # Navigate in current window begin prog = irxevent button = KEY_FASTFORWARD config = Key Tab CurrentWindow end begin prog = irxevent button = KEY_REWIND config = Key shift-Tab CurrentWindow end #EOF ===== Créer le fichier ~/.lirc/rhythmbox ===== Le logiciel de gestion d'une collection de musiques numériques ''rhythmbox'' supporte le contrôle par ''lirc'', via le greffon ''lirc''. Ce logiciel est nativement client de ''lirc''. Il n'est donc pas nécessaire, pour le contrôler, de faire appel à ''irexec'' ou ''irxevent''. #~/.lirc/rhythmbox # rhythmbox's lirc plugin MUST be activated begin rhythmbox begin prog = rhythmbox button = KEY_PLAYPAUSE config = playpause end begin prog = rhythmbox button = KEY_STOPCD config = pause end begin prog = rhythmbox button = KEY_NEXTSONG config = next end begin prog = rhythmbox button = KEY_PREVIOUSSONG config = previous end begin prog = rhythmbox button = KEY_CLOSE config = quit end end rhythmbox #EOF ===== Créer le fichier ~/.lirc/gxine ===== Pour contrôler la lecture d'un film avec ''gxine'', créez le fichier suivant : #~/.lirc/gxine begin prog = irexec button = KEY_PLAYPAUSE config = gxine_client "pause(1)" config = gxine_client "pause(0)" end begin prog = irexec button = KEY_STOPCD config = gxine_client "stop()" end begin prog = irxevent button = KEY_NEXTSONG config = Key Right CurrentWindow end begin prog = irxevent button = KEY_PREVIOUSSONG config = Key Left CurrentWindow end #EOF ====== Liens ====== * [[http://www.lirc.org/|Le site du projet LIRC]] * [[http://www.lirc.org/html/configure.html#lircrc_format|Page de manuel de lircrc]] * [[http://www.lirc.org/html/irexec.html|Page de manuel de irexec]] * [[http://www.lirc.org/html/irxevent.html|Page de manuel de irxevent]] * [[http://www.lirc.org/html/irw.html|Page de manuel de irw]] * [[http://doc.ubuntu-fr.org/lircrc|Exemples de configurations de clients LIRC]]