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 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 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 :

  • 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

 
doc/linux/inputlirc.txt · Dernière modification: 2009/12/23 22:36 (édition externe)     Haut de page