Télécommande toute conne achetée 17e a Mongallet (ou 10e sur LDLC), comment kon fait. Y'a un ptit recepteur RF usb bundlé avec, dixit dmesg :
usb 1-2: USB disconnect, address 3 usb 1-2: new low speed USB device using uhci_hcd and address 4 usb 1-2: configuration #1 chosen from 1 choice input: Logitech USB Receiver as /class/input/input4 input: USB HID v1.10 Keyboard [Logitech USB Receiver] on usb-0000:00:07.2-2 input: Logitech USB Receiver as /class/input/input5 input,hiddev97: USB HID v1.10 Device [Logitech USB Receiver] on usb-0000:00:07.2-2
Du coup, ca me crée 2 devices, /dev/input/event4
et /dev/input/event5
, le premier va recevoir les évenements des touches flêches de la telecommande, et le deuxième recevra le reste.
Déja on oublie lirc, c'est super complixe, j'ai rien compris comment le faire marcher avec DEVICE=“dev/input”
. Plus simple, on va installer inputlirc (bon on a quand même besoin du paquet lirc pour irexec). C'est un simple démon qui traduit les events arrivant en 'touches' et les envoie sur la socket /dev/lircd
auxquelles les clients vont venir se connecter. On le configure avec :
# /etc/default/inputlirc # Options to be passed to inputlirc, YMMV. EVENTS="/dev/input/event4 /dev/input/event5" OPTIONS="-d /tmp/lircd"
Ici, j'ai du tricher en mettant la socket dans /tmp
, et en faisant un symlink de /tmp/lircd
vers /dev/lircd
(irexec veut lire sur cette socket), je soupconne le udev de debian de faire son petit malin. On restarte inputlirc avec sudo /etc/init.d/inputlirc restart. Maintenant, on va utiliser irexec comme client.
Tout d'abord, on cherche quel code correspond à quelle touche avec input-events du paquet input-utils, ici le 5 correspond au event device sur lequel je veux ecouter.
#input-events 5 /dev/input/event5 bustype : BUS_USB vendor : 0x46d product : 0xc101 version : 259 name : "Logitech USB Receiver" phys : "usb-0000:00:07.2-2/input1" uniq : "" bits ev : EV_SYN EV_KEY EV_REP waiting for events 19:49:05.212800: EV_KEY KEY_BACK pressed 19:49:05.212810: EV_KEY KEY_BACK released 19:49:05.212829: EV_SYN code=0 value=0
On a les codes, maintenant on crée le fichier de conf ~/.lircrc
(ou /etc/lircrc
si vous comptez lancer irexec system-wide) contenant les commandes à lancer lors de l'appui sur une touche.
begin prog = irexec button = KEY_NEXTSONG config = mpc next end begin prog = irexec button = KEY_PREVIOUSSONG config = mpc prev end begin prog = irexec button = KEY_PLAYPAUSE config = mpc toggle end
Et finalement on lance irexec -d (qui va recevoir les évenements venant de inputlirc), on teste, et on loutre dans son canap.