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 HID. Ces touches ne sont pas reconnues directement par le système. Les logiciels
lircetinputlircpermettent 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 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 gxine et 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 :
irexecexécute une application,irxeventsimule 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