xbmc est un logiciel afin de transformer votre ordinateur en media center. Afin de piloter ce type de software, il est possible d'utiliser des claviers ou télécommandes. Un problème survenant assez souvent est l'absence de correspondance entre les touches permettant de naviguer à travers xbmc et les touches de votre télécommande. Cet article décrit donc les différentes étapes nécessaires pour utiliser un périphérique HID avec xbmc (ou tout autre logiciel media center).
Afin de pouvoir naviguer à travers xbmc en utilisant autre chose qu'un clavier (télécommande ou autre périphérique HID), il est nécessaire de remapper les touches de votre matériel HID pour qu'elles puissent correspondre à celles de xbmc (liste ici).
Nombreuses télécommandes ou autres périphériques ont des touches multimédia qu'Ubuntu utilise directement (tel qu'augmenter/diminuer le son) et qui sont aussi utilisés par xbmc. Afin de les désactiver, allez dans Système > Préférences > Raccourcis clavier et désactivez tous les raccourcis "sons"
xbindkeys ne permettant pas de capturer les évènements HID lorsqu'xbmc est en plein écran, nous utiliserons evrouter. Pour l'installer (32bits):
wget https://debian.bedroomlan.org/debian/pool/main/e/evrouter/evrouter_0.4_i386.deb sudo dpkg -i evrouter_0.4_i386.deb
Une fois evrouter installé, il vous faut déterminer où se situe votre périphérique HID dans /dev/input/by-id/. Attention, pour un périphérique HID peut se trouver plusieurs input devices. Ceci est expliqué par la présence de deux parties (par exemple un clavier normal & un clavier multimedia) lors de l'énumération HID du périphérique. Il vous faudra donc effectuer l'opération décrite ci dessous plusieurs fois. Maintenant il s'agit de détecter les touches de votre périphérique:
evrouter -d /dev/input/by-id/votre_input_device
Pour chaque touche pressée, vous obtiendrez une sortie que vous devrez noter du genre:
Une fois toutes les touches déterminées, créez un fichier .evrouterrc situé dans votre home. Puis, avec l'éditeur texte de votre choix, remplissez le de cette manière (avec les informations que vous aurez trouvé au paragraphe précédent):
#Vol up "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/115 "XKey/+" #vol down "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/114 "XKey/-" #play "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/207 "XKey/p" #prev "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/168 "XKey/r" #next "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/208 "XKey/f" #stop "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/166 "XKey/x" #pause "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/119 "XKey/space" #info "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/130 "XKey/m" #list "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/362 "XKey/Tab" #prev2 "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/165 "XKey/comma" #next2 "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/163 "XKey/semicolon" #page down "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/403 "XKey/KP_Down" #page up "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/402 "XKey/KP_Up" #return "Chicony USB Wireless HID Receiver" "/dev/input/by-id/usb-Chicony_USB_Wireless_HID_Receiver-event-joystick" none key/158 "XKey/BackSpace"
Remarquez à la fin de chaque ligne le XKey/. En effet, evrouter permet d'effectuer plusieurs actions lorsque la touche spécifiée est appuyée (man evrouter pour plus de détails). La commande XKey/ permet de simuler l'appui d'une touche de clavier. Pour obtenir la liste des touches disponibles:
xmodmap -pk
Le fichier type situé ci dessus vous donne un exemple de mapping entres les touches d'une télécommande et les touches reconnues par xbmc.
evrouter nécessite les droits sudo pour fonctionner. Une solution possible consiste à ajouter evrouter au fichier sudoers:
sudo visudo
dans le fichier affiché, ajoutez:
votre_nom_dutilisateur ALL=NOPASSWD: /usr/bin/evrouter
Ceci effectué, il ne vous reste plus qu'à ajouter evrouter aux programmes lancés au démarrage (avec xbmc). Pour ceci, allez dans Système > Préférences > Applications au démarrage. Ajoutez une entrée nommée evrouter, avec pour commande
evrouter /dev/input/by-id/votre_peripherique1 /dev/input/by-id/votre_peripherique2 ...
Validez, déloguez puis reloguez vous.♠