Mendeteksi dengan evtest
sudo evtest
Lihatlah daftar perangkat:
/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"
Mengambil yang pertama "Penerima USB Logitech", di sini ia memiliki acara id 9.
Testing ... (interrupt to exit)
OK sekarang evtest ingin input, cukup klik pada tombol remote Logitech, saya mendapatkan ini (disederhanakan):
[>] value 7003e (KEY_PRESENTATION)
[>] value 70029 (KEY_PRESENTATION)
[ ] value 70037 (KEY_DISPLAYTOGGLE)
< value 7004b (KEY_PAGEUP)
> value 7004e (KEY_PAGEDOWN)
Catatan: Saya menemukan setelah mengklik beberapa kali pada [>] memberikan 7003e, kemudian 70029, lalu 7003e, dll. Saya tidak tahu mengapa.
Mengubah konfigurasi udev
Sekarang kita memiliki kode input, mari kita lihat udev conf:
sudo gedit /lib/udev/hwdb.d/60-keyboard.hwdb
Cari "R400" dan ganti presentasi & displaytoggle dengan apa yang Anda inginkan, playpause & stopcd panah tombol:
# 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"
Seperti disebutkan sebelumnya, karena 07003e & 070.029 adalah tombol yang sama, saya memberi mereka output yang sama up kunci. 7004b & 7004e tidak muncul di sini secara default, mungkin karena mereka adalah input PAGEUP & PAGEDOWN asli dan tidak terkait dengan "Logitech Presenter R400". Mari kita tambahkan mereka:
KEYBOARD_KEY_07004b=previoussong # top left <
KEYBOARD_KEY_07004e=nextsong # top right >
Ini conf terakhir saya:
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"
Muat ulang aturan (baru)
sudo udevadm hwdb --update
Kemudian dengan menggunakan id acara yang sama yang kami pilih sebelumnya, di sini event id 9:
sudo udevadm trigger /dev/input/event9
Anda dapat memeriksa pemetaan baru ini di browser web, misalnya:
$('body').on('keydown', function(e){ console.log(e.key) })
Itu memberi saya:
[>] ArrowUp
[ ] ArrowDown
< ArrowLeft
> ArrowRight