Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tutoriel:hid [Le 27/04/2012, 16:30] – [Utilisation d'un périphérique HID] davy39 | tutoriel:hid [Le 20/11/2017, 17:35] (Version actuelle) – {{tag>tutoriel}} scaph | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== Utilisation d'un périphérique HID ====== | ||
+ | |||
+ | Les périphériques de la norme HID permettent d' | ||
+ | Toutefois toutes les commandes reçues ne sont pas toujours exploitables directement sous linux... | ||
+ | C'est pourquoi il est intéressant de pouvoir les " | ||
+ | |||
+ | Dans ce tutoriel, une télécommande [[http:// | ||
+ | |||
+ | En second lieu, on verra comment configuer **LIRC** pour exploiter ce matériel. | ||
+ | =====Préalables===== | ||
+ | |||
+ | ==== Identification du matériel compatible ==== | ||
+ | |||
+ | Tout d' | ||
+ | < | ||
+ | Dans mon cas, le matériel est le suivant : | ||
+ | < | ||
+ | I: Bus=0003 Vendor=0755 Product=2626 Version=0110 | ||
+ | N: Name=" | ||
+ | P: Phys=usb-0000: | ||
+ | S: Sysfs=/ | ||
+ | U: Uniq= | ||
+ | H: Handlers=sysrq kbd event5 | ||
+ | B: PROP=0 | ||
+ | B: EV=120013 | ||
+ | B: KEY=e080ffdf01cfffff fffffffffffffffe | ||
+ | B: MSC=10 | ||
+ | B: LED=1f | ||
+ | |||
+ | I: Bus=0003 Vendor=0755 Product=2626 Version=0110 | ||
+ | N: Name=" | ||
+ | P: Phys=usb-0000: | ||
+ | S: Sysfs=/ | ||
+ | U: Uniq= | ||
+ | H: Handlers=kbd mouse1 event6 | ||
+ | B: PROP=0 | ||
+ | B: EV=1f | ||
+ | B: KEY=4837fff072ff32d bf54444600000000 1f0001 20c100b17c000 267bfad941dfed 9e168000004400 10000002 | ||
+ | B: REL=1c3 | ||
+ | B: ABS=100000000 | ||
+ | B: MSC=10 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Blacklist de l' | ||
+ | |||
+ | Afin que les entrées ne produisent pas d' | ||
+ | Pour cela créer le fichier suivant : | ||
+ | < | ||
+ | Et y copier ces lignes, en rensigant MatchProduct en fonction de ce que vous avez obtenu ci-dessus : | ||
+ | < | ||
+ | Section " | ||
+ | Identifier "HID blacklist" | ||
+ | MatchProduct " | ||
+ | Option " | ||
+ | EndSection | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== HID_MAPPER ===== | ||
+ | |||
+ | On va ensuite utiliser le programme présenté [[http:// | ||
+ | |||
+ | |||
+ | ====Installation==== | ||
+ | |||
+ | L' | ||
+ | < | ||
+ | tar zxvf hid_mapper_beta.tar.gz | ||
+ | cd hid_mapper_beta | ||
+ | make | ||
+ | sudo cp hid_mapper / | ||
+ | sudo chmod +x / | ||
+ | |||
+ | |||
+ | ====Configuration==== | ||
+ | |||
+ | ===Enregistrement des évènements === | ||
+ | |||
+ | Nous allons ensuite " | ||
+ | < | ||
+ | |||
+ | Sous la pression d'une touche, on voit apparaitre des lignes similaires à celles-ci : | ||
+ | < | ||
+ | 038100000000 | ||
+ | 01 00 00 00 00 00 00 00 00 | ||
+ | 04003d0000000000 | ||
+ | 01 00 00 00 00 00 00 00 00</ | ||
+ | Chaque code tel que **038100000000** ou **04003d0000000000** correspondent à une touche, et ici **010000000000000000** est sans importance puisqu' | ||
+ | |||
+ | |||
+ | ===Assignation des évènement à des actions=== | ||
+ | |||
+ | On relève alors les codes obtenus ci-dessus pour générer au choix 1 ou 2 fichier de configuration : remote.map et mouse.map | ||
+ | Les codes d' | ||
+ | |||
+ | ==Fichier remote.map== | ||
+ | |||
+ | On constitue le fichier **remote.map** de la manière suivante, cet exemple correspondant à ma télécommande. | ||
+ | < | ||
+ | 038100000000: | ||
+ | 04003d0000000000: | ||
+ | 0100080000000000: | ||
+ | 0300170000000000: | ||
+ | 0100040000000000: | ||
+ | 01000c0000000000: | ||
+ | 0100100000000000: | ||
+ | 0300100000000000: | ||
+ | 0300050000000000: | ||
+ | 02b700000000: | ||
+ | 02b300000000: | ||
+ | 02b600000000: | ||
+ | 02cd00000000: | ||
+ | 02b500000000: | ||
+ | 02e900000000: | ||
+ | 02e200000000: | ||
+ | 0800070000000000: | ||
+ | 00004b0000000000: | ||
+ | 02ea00000000: | ||
+ | 0c00280000000000: | ||
+ | 00004e0000000000: | ||
+ | 0000520000000000: | ||
+ | 0000500000000000: | ||
+ | 0000280000000000: | ||
+ | 00004f0000000000: | ||
+ | 0000510000000000: | ||
+ | 00002a0000000000: | ||
+ | 0000650000000000: | ||
+ | 0100150000000000: | ||
+ | 022302000000: | ||
+ | 028a01000000: | ||
+ | 00001e0000000000: | ||
+ | 00001f0000000000: | ||
+ | 0000200000000000: | ||
+ | 022402000000: | ||
+ | 0000210000000000: | ||
+ | 0000220000000000: | ||
+ | 0000230000000000: | ||
+ | 022502000000: | ||
+ | 0000240000000000: | ||
+ | 0000250000000000: | ||
+ | 0000260000000000: | ||
+ | 0000270000000000: | ||
+ | 0200250000000000: | ||
+ | 0200200000000000: | ||
+ | 0000290000000000: | ||
+ | 0400280000000000: | ||
+ | 010100000000: | ||
+ | 010200000000: | ||
+ | </ | ||
+ | |||
+ | ==Fichier mouse.map== | ||
+ | |||
+ | Dans mon cas, ma télécommande a une fonction spéciale d' | ||
+ | Celui sera configurable de la manière suivante dans le fichier **mouse.map**. | ||
+ | - REL_Y correspond à un déplacement sur l'axe vertical | ||
+ | - REL_X sur l'axe horizontal | ||
+ | - Le dernier chiffre de chaque ligne à la taille du déplacement en nombre de pixel. | ||
+ | |||
+ | < | ||
+ | 010000fc0000: | ||
+ | 010000f80000: | ||
+ | 010000020000: | ||
+ | 010000040000: | ||
+ | 010000080000: | ||
+ | 0100fe000000: | ||
+ | 0100fc000000: | ||
+ | 0100f8000000: | ||
+ | 010002000000: | ||
+ | 010004000000: | ||
+ | 010008000000: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====Lancement==== | ||
+ | |||
+ | On peut alors lancer le " | ||
+ | |||
+ | ===Manuel=== | ||
+ | |||
+ | Le démarrage de hid_mapper s' | ||
+ | < | ||
+ | |||
+ | ===Automatique=== | ||
+ | |||
+ | On peut également créer une règle udev pour lancer hid_mapper à la détection du matériel. | ||
+ | |||
+ | Pour cela créer un fichier : | ||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | contenant le code (penser à adapter idVendor et idProduct): | ||
+ | < | ||
+ | SUBSYSTEM==" | ||
+ | </ | ||
+ | |||
+ | **hid_mapper** se lancera alors au démarrage et permettra d' | ||
+ | |||
+ | |||
+ | ===== Utilisation du HID avec LIRC ===== | ||
+ | |||
+ | Pour les habitués de [[lirc|LIRC]], | ||
+ | Pour cela, on attribue un lien symbolique à l' input/ | ||
+ | < | ||
+ | KERNEL==" | ||
+ | </ | ||
+ | |||
+ | Il nous faudra également | ||
+ | |codes devinput]] au fichier **/ | ||
+ | |||
+ | Pour des raisons pédagogiques, | ||
+ | |||
+ | |||
+ | ===Démarrage manuel=== | ||
+ | |||
+ | Lancer deux instances lircd, dont l'une est connectée à l' | ||
+ | < | ||
+ | sudo lircd -H pinsys --device=/ | ||
+ | sudo lircd -H dev/input -d / | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===Démarrage automatique=== | ||
+ | |||
+ | On doit pour cela mofifier les fichiers de configuration de LIRC pour intégrer le support de notre nouvelle télécommande : | ||
+ | |||
+ | < | ||
+ | # / | ||
+ | # | ||
+ | #Chosen Remote Control | ||
+ | REMOTE_MODULES=" | ||
+ | REMOTE_DRIVER="" | ||
+ | REMOTE_DEVICE="" | ||
+ | REMOTE_SOCKET="" | ||
+ | REMOTE_LIRCD_CONF="/ | ||
+ | REMOTE_LIRCD_ARGS=" | ||
+ | REMOTE_LIRCD2_ARGS=" | ||
+ | |||
+ | #Enable lircd | ||
+ | START_LIRCD=" | ||
+ | #Try to load appropriate kernel modules | ||
+ | LOAD_MODULES=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | - Enfin, on modifie le sript de lancement de lirc pour qu'il démarre les 2 instances de lircd : | ||
+ | |||
+ | Editer le fichier **/ | ||
+ | |||
+ | - Remplacer : | ||
+ | < | ||
+ | REMOTE_LIRCD_ARGS=`build_remote_args $REMOTE_LIRCD_ARGS` | ||
+ | </ | ||
+ | par | ||
+ | < | ||
+ | REMOTE_LIRCD_ARGS=`build_remote_args $REMOTE_LIRCD_ARGS` | ||
+ | REMOTE_LIRCD2_ARGS=`build_remote_args $REMOTE_LIRCD2_ARGS` | ||
+ | </ | ||
+ | |||
+ | - Ainsi que : | ||
+ | < | ||
+ | start-stop-daemon --start --quiet --oknodo --exec / | ||
+ | </ | ||
+ | par : | ||
+ | < | ||
+ | start-stop-daemon --start --quiet --oknodo --name lirc1 --exec / | ||
+ | start-stop-daemon --start --quiet --oknodo --name lirc2 --exec / | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | Source pricipale : http:// |