Détecter avec evtest
sudo evtest
Regardez la liste des appareils:
/dev/input/event0: Lid Switch
/dev/input/event1: Power Button
/dev/input/event2: Sleep Button
/dev/input/event3: Power Button
/dev/input/event4: AT Translated Set 2 keyboard
/dev/input/event5: Video Bus
/dev/input/event6: USB Optical Mouse
/dev/input/event7: AlpsPS/2 ALPS DualPoint Stick
/dev/input/event8: AlpsPS/2 ALPS DualPoint TouchPad
/dev/input/event9: Logitech USB Receiver
/dev/input/event10: Logitech USB Receiver
/dev/input/event11: HDA Intel PCH Dock Mic
/dev/input/event12: HDA Intel PCH Headset Mic
/dev/input/event13: HDA Intel PCH Dock Line Out
/dev/input/event14: HDA Intel PCH Headphone
/dev/input/event15: HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event16: HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event17: HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event18: Integrated Webcam
/dev/input/event19: Dell WMI hotkeys
Select the device event number [0-19]: 9
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x46d product 0xc52d version 0x111
Input device name: "Logitech USB Receiver"
A pris le premier "Logitech USB Receiver", ici il a l'ID d'événement 9.
Testing ... (interrupt to exit)
OK maintenant, evtest veut des entrées, cliquez simplement sur les boutons de la télécommande Logitech, j'ai obtenu ceci (simplifié):
[>] value 7003e (KEY_PRESENTATION)
[>] value 70029 (KEY_PRESENTATION)
[ ] value 70037 (KEY_DISPLAYTOGGLE)
< value 7004b (KEY_PAGEUP)
> value 7004e (KEY_PAGEDOWN)
Remarque: J'ai découvert après que cliquer plusieurs fois sur [>] donnait 7003e, puis 70029, puis 7003e, etc. Je ne sais pas pourquoi.
Modification de udev conf
Maintenant que nous avons des codes d'entrée, jetons un œil à udev conf:
sudo gedit /lib/udev/hwdb.d/60-keyboard.hwdb
Recherchez "R400" et remplacez la présentation et l'affichage par ce que vous voulez, les touches fléchées playpause et stopcd :
# Logitech Presenter R400
evdev:input:b0003v046DpC52D*
KEYBOARD_KEY_070029=playpause # bottom left [>] was "presentation"
KEYBOARD_KEY_07003e=playpause # bottom left [>] was "presentation"
KEYBOARD_KEY_070037=stopcd # bottom right [ ] was "displaytoggle"
Comme indiqué précédemment, parce que 07003e et 070029 sont sur le même bouton, je leur ai donné la même sortie en touche. Les 7004b et 7004e n'apparaissent pas ici par défaut, peut-être parce qu'il s'agit d'entrées PAGEUP & PAGEDOWN natives et non liées à "Logitech Presenter R400". Ajoutons-les:
KEYBOARD_KEY_07004b=previoussong # top left <
KEYBOARD_KEY_07004e=nextsong # top right >
Voici ma dernière conf:
KEYBOARD_KEY_07004b=previoussong # top left <
KEYBOARD_KEY_07004e=nextsong # top right >
KEYBOARD_KEY_070029=playpause # bottom left [>] was "presentation"
KEYBOARD_KEY_07003e=playpause # bottom left [>] was "presentation"
KEYBOARD_KEY_070037=stopcd # bottom right [ ] was "displaytoggle"
Rechargement (nouvelles) règles
sudo udevadm hwdb --update
Ensuite, en utilisant le même identifiant d'événement que nous avons choisi auparavant, voici l'identifiant d'événement 9:
sudo udevadm trigger /dev/input/event9
Vous pouvez vérifier ce nouveau mappage dans un navigateur Web, par exemple:
$('body').on('keydown', function(e){ console.log(e.key) })
Cela m'a donné:
[>] ArrowUp
[ ] ArrowDown
< ArrowLeft
> ArrowRight