Auteur : Olivier BOYER - oboyer () ajoute ! org
télécommande Logitech UltraX media remote, RF, inputlirc, irexec, irxevent, USB, Debian
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.
Cette télécommande peut être séparée en deux blocs de touches :
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 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.
Logitech UltraX Media Remote, avec le récepteur branché sur un port USB de l'ordinateur.Toutes les commandes présentées ici, sont à exécuter, sauf mention contraire, en tant qu'administrateur de la machine.
Linux Debian Etch (4.0 - stable) doit être installé et fonctionnel.
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.
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
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=
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
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
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.
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 :
Desktop Environment,~/.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 #[...]
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
Le répertoire ~/.lirc accueille les fichiers de configuration spécifiques à une application. Pour le créer, procédez comme suit :
$ mkdir ~/.lirc
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
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
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
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