Wykrywanie za pomocą evtest
sudo evtest
Spójrz na listę urządzeń:
/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"
Wziął pierwszy „odbiornik Logitech USB”, tutaj ma identyfikator zdarzenia 9.
Testing ... (interrupt to exit)
OK, teraz evtest chce wejść, po prostu kliknij na zdalne przyciski Logitech, mam to (uproszczone):
[>] value 7003e (KEY_PRESENTATION)
[>] value 70029 (KEY_PRESENTATION)
[ ] value 70037 (KEY_DISPLAYTOGGLE)
< value 7004b (KEY_PAGEUP)
> value 7004e (KEY_PAGEDOWN)
Uwaga: Odkryłem, że po tym wielokrotnym kliknięciu [>] podałem 7003e, potem 70029, potem 7003e itd. Nie wiem dlaczego.
Modyfikacja udev conf
Teraz, gdy mamy kody wejściowe, spójrzmy na udev conf:
sudo gedit /lib/udev/hwdb.d/60-keyboard.hwdb
Wyszukaj „R400” i zamień prezentację i wyświetlanie według tego, czego chcesz, klawiszy strzałek Playpause i 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"
Jak wcześniej wspomniano, ponieważ 07003e i 070029 są tym samym przyciskiem, dałem im ten sam klawisz zwiększania mocy wyjściowej . 7004b i 7004e nie pojawiają się tutaj domyślnie, być może dlatego, że są natywnymi wejściami PAGEUP i PAGEDOWN i nie są powiązane z „Logitech Presenter R400”. Dodajmy je:
KEYBOARD_KEY_07004b=previoussong # top left <
KEYBOARD_KEY_07004e=nextsong # top right >
Oto moja ostatnia konf:
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"
Przeładowywanie (nowe) zasady
sudo udevadm hwdb --update
Następnie, używając tego samego identyfikatora zdarzenia, który wybraliśmy wcześniej, tutaj identyfikator zdarzenia 9:
sudo udevadm trigger /dev/input/event9
Możesz sprawdzić to nowe mapowanie w przeglądarce internetowej, na przykład:
$('body').on('keydown', function(e){ console.log(e.key) })
To dało mi:
[>] ArrowUp
[ ] ArrowDown
< ArrowLeft
> ArrowRight