Freevo : contrôles avancés
icone programmation
Signature :
GNU/Linux Magazine
Sommaire de l'article :

Retrouvez cet article dans : Linux Magazine 83

Le mois dernier, nous avons découvert Freevo et procédé à une première configuration simple. Voyons maintenant un point de détail qui a son importance. Utilisable avec un simple clavier, Freevo peut aussi être contrôlé avec une télécommande, par le réseau... Voyons ces possibilités.Freevo accepte, par défaut, un certain nombre de commandes. Ces commandes, selon l’état de Freevo, sont connectées à différents événements ; par exemple, dans un menu, la commande UP est connectée à l’événement MENU_UP, correspondant au déplacement vers le haut dans le menu. Toute une série d’événements sont ainsi définis par défaut, dans le fichier /usr/lib/python2.3/site-packages/freevo/event.py ; ce fichier liste aussi l’association par défaut des touches du clavier aux commandes. Les commandes principales sont les suivantes : LEFT, RIGHT, UP, DOWN, SELECT, ENTER, EXIT, DISPLAY. La liste complète des commandes n’est pas reprise ici pour deux raisons : ce serait rébarbatif et ces commandes peuvent être étendues à volonté. Ensuite, ces commandes peuvent être appelées par différents moyens : clavier, télécommande, joystick, réseau...

Redéfinition de commandes

Il est possible de redéfinir l’association des commandes à des événements (si l’association d’origine ne convient pas) ou même de créer des nouvelles associations de commandes... Pour ce faire, il faut redéfinir certains éléments de la table EVENTS, avec une ligne du type EVENTS[<contexte>][<commande>] = Event(<évenement>) dans le fichier local_conf.py. Le contexte est l’état dans lequel est Freevo (DVD, vidéo, images, jeux...) ; les événements possibles dépendent du contexte. La meilleure source d’informations à ce sujet reste encore le fichier <lib>/freevo/event.py : les contextes peuvent être tirés des dictionnaires *_EVENTS (par exemple, le dictionnaire VIDEO_EVENTS implique qu’il y ait un contexte video) ; les événements sont quasiment tous présents dans ces fichiers – recherchez les lignes qui contiennent Event(. La première (et seule) redéfinition que je vous conseille se passe dans le contexte DVD : de manière générale, la commande CH+ est liée à [précédent] (MENU_PAGEUP dans input, PLAYLIST_PREV dans video, audio et image..), et la commande CH- à [suivant]. Par contre, dans le contexte DVD, c’est le contraire : CH+ est lié à NEXT, et CH- à PREV. Pour plus d’homogénéité dans Freevo, je vous propose donc les lignes suivantes (toujours dans local_conf.py) :
EVENTS[‘dvd’][‘CH+’] = Event(‘PREV’)
EVENTS[‘dvd’][‘CH-’] = Event(‘NEXT’)

Commande au clavier

La commande au clavier est la première à laquelle vous avez été (ou serez) confronté. Si vous avez déjà joué avec Freevo, vous avez pu vous rendre compte d’un petit souci : lorsqu’un programme tel que Xine ou MPlayer est lancé et en premier plan (lecture de vidéo), les commandes au clavier lui sont directement envoyées : Freevo ne les intercepte pas, et l’association commande/événement devient donc inopérante. En dehors de cette particularité, les commandes au clavier fonctionnent bien.

Commande par le réseau

Lorsque la variable ENABLE_NETWORK_REMOTE est activée (sa valeur à 1), Freevo écoute sur le port réseau UDP 16310. Il exécute ensuite toutes les commandes qui lui sont envoyées par ce port. Par exemple, en donnant les bons arguments à netcat (apt-get install netcat), on peut manipuler Freevo. Les commandes envoyées par netcat doivent se terminer par le caractère EOT (End Of Transmission, aussi connu sous Unix comme EOF, End Of File ; le caractère ASCII 0x04). Ce caractère peut être obtenu avec la combinaison de touches [Ctrl-D] (^D).
nc -u localhost 16310
DOWN[^D]DOWN[^D]SELECT[^D]
La commande ci-dessus (remplacez bien sûr les chaînes [^D] par la combinaison de touches [Ctrl-D]) descend la sélection de deux rangs et entre dans un sous-menu (ou valide une sélection). Dans le répertoire <lib>/freevo/helpers/, Freevo propose une télécommande virtuelle par interface graphique (remote.py), qui implémente ses commandes, et qui utilise l’interface réseau. Il faut que Tkinter soit installé (apt-get install python2.3-tk).
 python2.3 /usr/lib/python2.3/site-packages/freevo/helpers/remote.py
De la même manière, il est possible de créer toutes sortes de programmes contrôlant Freevo à distance par le réseau (comme cela a été fait avec Freemote, une télécommande par Internet en PHP/MySQL : http://freemote.sourceforge.net/).

Joystick

Le greffon joy permet de commander Freevo avec un joystick. Il nécessite les variables JOY_DEV et JOY_CMDS, la première décrivant le périphérique sur lequel accéder au joystick, la seconde faisant le lien entre l’utilisation du joystick et les commandes Freevo. Il faut que votre joystick fonctionne correctement avant ces manipulations. JOY_DEV doit être le rang du joystick (1 pour le 1er joystick connecté, 2 pour le second, etc.) ; le greffon transforme ensuite ce nombre en périphérique (par exemple, 1 devient /dev/input/js0 ou /dev/js0).
plugin.activate(‘joy’)
JOY_DEV = 1
JOY_CMDS = {
  ‘up’      : ‘UP’,
  ‘down’    : ‘DOWN’,
  ‘left’    : ‘LEFT’,
  ‘right’   : ‘RIGHT’,
  ‘button 1’: ‘PLAY’,
  ‘button 2’: ‘PAUSE’,
  ‘button 3’: ‘STOP’,
  ‘button 4’: ‘ENTER’,
  }

Télécommande

Last but not least, la télécommande est l’outil de prédilection pour contrôler Freevo. Sous Linux, les télécommandes interagissent avec LIRC, Linux Infrared Remote Control. Ce logiciel supporte globalement tout ce qui peut envoyer ou recevoir des signaux infrarouges ; il supporte à l’origine des émetteurs et récepteurs infrarouges faits main, et permet maintenant également d’utiliser des produits commerciaux, les ports IrDA intégrés, les télécommandes de cartes TV et encore d’autres matériels. Si vous fabriquez vous-même un récepteur, vous pourrez l’utiliser avec n’importe quelle télécommande ; pour plus d’informations sur la fabrication d’un récepteur de télécommande, voir http://www.lirc.org/receivers.html et http://www.lirc.org/html/install.html#testing Avant d’utiliser la télécommande avec Freevo, il faut donc que LIRC soit entièrement fonctionnel. Pour ce faire, je vous renvoie à l’article de Denis Bodor dans GNU/Linux Magazine numéro 72 de mai 2005, avec cependant quelques ajouts :
  • Si vous possédez une télécommande " commerciale " non gérée par le pilote lirc_serial, veillez à charger le bon module. Par exemple, pour une ATI Remote Wonder (version I ou II), le module lirc_atiusb.
  • Avec ce genre de matériel, l’outil mode2 n’est pas utile : votre signal n’est pas composé d’impulsions infrarouges.
  • Concernant les définitions de télécommandes existantes, disponibles dans /usr/share/lirc/remotes, notez bien que chaque fichier peut contenir plusieurs définitions de télécommandes. Pour les ATI Remote Wonder, plusieurs entrées existent dans le fichier d’exemple, et s’il est repris tel quel, LIRC ne fonctionnera pas : limitez votre fichier lircd.conf aux entrées correspondant aux télécommandes installées.
  • De plus, les définitions existantes ne correspondent pas toujours exactement au matériel que vous avez acheté (changement de composants par le constructeur, mauvaise configuration de la part du fournisseur de la définition... par exemple, la seule définition qui fonctionnait avec ma télécommande ne prenait pas en compte les diagonales du bouton directionnel dédié au contrôle de la souris). Préférez donc, pour un fonctionnement optimal, l’utilisation du logiciel Irrecord, pour coller parfaitement avec votre matériel. Vous pourrez en plus donner le nom que vous voudrez aux différents boutons de la télécommande.
  • Lorsque votre télécommande semble bien configurée, utilisez l’outil irw pour contrôler que tout fonctionne correctement, et que l’ordinateur reçoit bien le signal attendu ; cet outil permet également de vérifier le nom attribué à chacune des touches de la télécommande.
Note : Il existe un pilote ati_remote, disponible par défaut dans le noyau Linux, qui n’a rien à voir avec LIRC : il émule un clavier/une souris, et ne permet pas autant de flexibilité que le pilote pour LIRC. Si vous voulez utiliser une ATI Remote Wonder, veillez à ne pas charger ce module. Après avoir généré (ou récupéré) le fichier lircd.conf, nous sommes prêts à configurer Freevo ! Cette opération est relativement simple : il faut créer un fichier lircrc, dans lequel on indiquera les attributions bouton/commande. Par défaut, ce fichier est recherché dans /etc/freevo. Il est possible de définir un autre chemin pour ce fichier par la variable LIRCRC. Par exemple :
 LIRCRC = ‘/home/freevo/.freevo/lircrc’
Ensuite, le fichier lircrc est rempli, en suivant la syntaxe habituelle de LIRC ; le programme spécifié étant freevo. Lions donc les boutons UP, DOWN et OK aux commandes UP, DOWN et SELECT :
 begin
    prog   = freevo
    button = UP
    config = UP
    repeat = 1
    delay = 2
end
begin
    prog   = freevo
    button = DOWN
    config = DOWN
    repeat = 1
    delay = 2
end
begin
    prog   = freevo
    button = OK
    config = SELECT
end
Les paramètres repeat et delay ont été ajoutés pour UP et DOWN, car il peut être agaçant de devoir appuyer et relâcher des dizaines de fois ces boutons pour se déplacer dans une longue liste de fichiers (musiques, images...). Ces paramètres peuvent également être ajoutés pour les commandes REW et FFWD, pour pouvoir avancer/reculer plus facilement dans un film. Par contre, ils ne sont pas spécifiés pour la commande SELECT, car il est énervant, au contraire, de sélectionner une entrée qu’on ne voulait pas juste parce qu’on n’a pas relâché le bouton assez tôt. Il ne vous reste plus qu’à faire les connexions entre tous les boutons de votre télécommande et les commandes Freevo que vous souhaitez utiliser. Pour ensuite tester cette configuration, utilisez la commande ircat :
 ircat --config=/home/freevo/.freevo/lircrc freevo
Chaque appui sur une touche devrait correspondre à l’affichage de la commande correspondante. Si cela fonctionne, il suffit ensuite de (re)démarrer Freevo, et ces paramètres sont pris en compte !

Contrôler la souris avec LIRC

/img-articles/lm/83/art-4/fig-1.jpg ATI Remote Wonder Bien que cela n’implique pas directement Freevo, nous allons configurer l’ordinateur pour pouvoir prendre le contrôle de la souris avec la télécommande. Avant tout, il faut réserver des boutons sur la télécommande pour cet usage ; certaines télécommandes ont des boutons dédiés, c’est le cas des ATI Remote Wonder. Pour ce faire, le logiciel lircmd (LIRC mouse daemon, http://www.lirc.org/html/configure.html#lircmd.conf) est utilisé. La configuration de lircmd se passe dans le fichier /etc/lirc/lircmd.conf. Tout d’abord, sous Debian, ce fichier contient une ligne #UNCONFIGURED, qui est à supprimer pour que lircmd puisse être démarré. Ensuite, il faut correctement remplir ce fichier :

PROTOCOL IntelliMouse
ACCELERATOR 0 50 10
MOVE_N  * MOUSE_UP
MOVE_E  * MOUSE_RIGHT
MOVE_S  * MOUSE_DOWN
MOVE_W  * MOUSE_LEFT
BUTTON1_CLICK * MOUSE_BTN_LEFT
BUTTON3_CLICK * MOUSE_BTN_RIGHT
La configuration du serveur X est également modifiée, pour accepter les entrées de lircmd :
 Section "InputDevice"
        Identifier      "LIRC Mouse"
        Driver          "mouse"
        Option          "Device"        "/dev/lircm"
        Option          "Protocol"      "IntelliMouse"
        Option          "SendCoreEvents"
        Option          "Buttons"       "5"
        Option          "ZAxisMapping"  "4 5"
EndSection

[...]

Section "ServerLayout"
    [...]
        InputDevice     "LIRC Mouse"
    [...]
EndSection
Le résultat n’est évidemment pas aussi efficace qu’une souris traditionnelle, mais cela permet de contrôler le curseur de la souris sans quitter le canapé. Notez cependant que Freevo ne nécessite pas de souris, mais que cette fonctionnalité sera utilisable avec d’autres logiciels ; cela pourra être utile plus tard. Arrêtons là pour l’instant. Il reste beaucoup de choses à dire sur Freevo, nous y reviendrons le moment venu.

Retrouvez cet article dans : Linux Magazine 83

Il y a : 0 commentaire(s)

Donnez votre avis

Vous devez avoir ouvert une session pour écrire un commentaire.

Brèves
Édito : Linux Pratique Essentiel N°24
Édito : Linux Pratique HS N°23
Édito : GNU/Linux Magazine 146
Édito : GNU/Linux Magazine HS N°58
Édito : Open Silicium N°5
Communication
Linux Pratique HS 23 – Communiqué de presse
Linux Pratique Essentiel N°24 – Communiqué de presse
Gnu/Linux Magazine sponsor et partenaire de PROLOGIN
Linux Essentiel partenaire des Rencontres du Libre de Lion sur Mer (Normandie)
GNU/Linux Magazine HS 58 – Communiqué de presse
prochainement moteur de recherches des articles
 
:
:
Jours heures minutes secondes
En kiosque
Le tout nouveau Linux Pratique Essentiel est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Open Silicium est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...