Blog Widget by LinkWithin

31 oct. 2013

[TUTO] Utilisez votre vieille télécommande Logitech S510 avec XBMC


Cet article explique comment utiliser votre vieille télécommande Logitech S510 avec XBMC sous Ubuntu, mais peut être extrapolé à d'autres télécommande.

Car si vous aussi vous avez cette télécommande old school, vous constaterez que toutes les touches ne fonctionnent pas correctement (voir pas du tout) dans XBMC.

le pack Logitech S510

En effet, il suffit de regarder le layout de cette télécommande pour comprendre le problème : il n'y a pas de touches directionnelles haut/bas. Seule une molette centrale permet le déplacement vertical, mais XBMC l’interprétè comme un scroll, et donc ça marche pas dans les menus.

La solution va consister en plusieurs grandes étapes : 
  1. Identifier et fixer l'identification au niveau "périphérique USB"
  2. Utiliser un petit soft qui va "lire et transformer" les saisies en commandes interprétables par XBMC
  3. Automatiser le tout

 1) Identifier et fixer le périphérique USB (warning: partie chiante)

L'avantage du fonctionnement de l'USB, à savoir l'aspect plug'n'play, va se révéler être un inconvénient dans notre aventure : si on branche/débranche des périphériques supplémentaire, les numéros qui leur sont attribués peuvent changer.

Par exemple dans cette capture, on liste tous les périphériques de saisie (input) :


 On peut voir que la télécommande est attribuée ici à "event4" et "event5".

 Pour "fixer" ce périphérique, nous allons devoir pousser l'identification plus loin :



Le but de cette manœuvre est de récupérer les variables "ID_VENDOR_ID" et "ID_MODEL_ID" pour les réutiliser par la suite, dans une règle. Nous allons aussi avoir besoin d'autres informations, comme "SUBSYSTEM", "MAJOR" et "MINOR"

Pour créer justement cette règle, j'ai procédé à la création d'un fichier "10-local.rules" dans le répertoire "/etc/udev/rules.d"

NB : Attention au nom de votre fichier, le numéro du début étant conditionnant pour la prise en compte des règles en cas de conflits.

Dans ce fichier, nous allons renseigner les valeurs notées précédemment, ainsi que les petits noms sexys que nous souhaitons donner aux "devices" correspondants à la télécommande : dans mon exemple "usbremote0 et 1".


Nous allons en profiter pour changer également les permissions (groupe users , par défaut les droits sont en 640 donc ça roule) pour que le soft de remaping puisse "lire" les saisies.

NB : pensez à vous ajouter dans le groupe users (sudo adduser <votre_login> users)

Après un petit reboot, on vérifie que tout est bon :

 

2) la partie software : evrouter (là ça devient cool)

Donc on va commencer par l'installer, pas dispo dans les paquets ubuntu mais le développeur nous a prévu un petit pack en .deb (i386 ou amd64) et donc qui s'installe tout seul (sudo dpkg -i pack.deb pour ceux qui ont pas suivi au fond)

une fois installé, on va customiser l'association des touches de la télécommande, à l'aide du fichier .evrouterrc à placer dans votre home :


J'ai donc associé le scroll (rel/8/-1 et 1) aux touches Down et Up, solutionnant mon problème principal. Tant qu'à faire, j'ai continué, en attribuant les codes des différentes touches aux raccourcis XBMC, ainsi le boutton de mise en veille de l'ordinateur (142) ne mets plus en veille mon serveur (sinon c'est chiant, pour un serveur) mais simplement "quitte XBMC".

  • Pour avoir la liste des codes correspondant à votre télécommande, l'astuce est : 
evrouter -d /dev/input/usbremote*
L'option -d pour "dump" : ainsi lorsque vous pressez une touche, le code associé s'affiche à l'écran.

Pour plus d'infos : man evrouter 
  • Pour avoir la liste des XKey disponibles : 
xmodmap -pk
  • Et pour avoir la liste des touches utilisées dans XBMC : Wiki XBMC

Une fois votre tunning terminé, on lance le soft à la main pour vérifier la bonne prise en compte :


Il a trouvé 8 règles, ça tombe bien j'en ai saisi 8, le compte est bon monsieur Romejko. Plus qu'à tester le bon fonctionnement dans XBMC... ça fait plaisir!

3) Industrialisation de la solution (ça va aller vite)


Donc maintenant que ça marche, j'ai pas envie de devoir sortir mon shell à chaque reboot, je me suis pas fait $*!ù% à fixer les devices usb pour rien.

Je vais donc créer un petit script evrouter.sh qui contiendra une seule ligne devinez laquelle?
evrouter /dev/input/usbremote*

Je lui donne les permissions d'execution : 
chmod +x evrouter.sh

Et je crée dans applications au démarrage une entrée evrouter, qui va lancer ce script. 

PS : Alors pourquoi passer par un script me direz-vous, s'il ne lance qu'une seule commande? Bah Ubuntu est capricieux sur les caractères joker (* ici) dans son interface lancement au démarrage, donc pour vous éviter tout problème, et par souci de conservation pour le patrimoine national, un petit .sh ça mange pas de pain.

Et voilà le tour est joué, bonne navigation dans XBMC!


0 commentaires :

Publier un commentaire