Detectando con evtest
sudo evtest
Mira la lista de dispositivos:
/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"
Tomó el primer "receptor USB Logitech", aquí tiene la identificación de evento 9.
Testing ... (interrupt to exit)
OK ahora evtest quiere entradas, solo haga clic en los botones remotos de Logitech, obtuve esto (simplificado):
[>] value 7003e (KEY_PRESENTATION)
[>] value 70029 (KEY_PRESENTATION)
[ ] value 70037 (KEY_DISPLAYTOGGLE)
< value 7004b (KEY_PAGEUP)
> value 7004e (KEY_PAGEDOWN)
Nota: descubrí que después de hacer clic varias veces en [>] estaba dando 7003e, luego 70029, luego 7003e, etc. No sé por qué.
Modificando conf de udev
Ahora que tenemos códigos de entrada, echemos un vistazo a udev conf:
sudo gedit /lib/udev/hwdb.d/60-keyboard.hwdb
Busque "R400" y reemplace la presentación y el botón de visualización por lo que desee, pausa de reproducción y teclas de flecha detenidas :
# 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"
Como se señaló anteriormente, debido a 07003e y 070.029 son el mismo botón, que les dio la misma salida hasta la clave. El 7004b y el 7004e no aparecen aquí de forma predeterminada, tal vez porque son entradas PAGEUP y PAGEDOWN nativas y no están relacionadas con "Logitech Presenter R400". Vamos a agregarlos:
KEYBOARD_KEY_07004b=previoussong # top left <
KEYBOARD_KEY_07004e=nextsong # top right >
Aquí está mi conf final:
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"
Reglas de recarga (nuevas)
sudo udevadm hwdb --update
Luego, usando la misma identificación de evento que elegimos antes, aquí la identificación de evento 9:
sudo udevadm trigger /dev/input/event9
Puede verificar esta nueva asignación en un navegador web, por ejemplo:
$('body').on('keydown', function(e){ console.log(e.key) })
Eso me dio:
[>] ArrowUp
[ ] ArrowDown
< ArrowLeft
> ArrowRight