====== 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]]