Phát hiện với evtest
sudo evtest
Nhìn vào danh sách thiết bị:
/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"
Lấy "Bộ thu USB Logitech" đầu tiên, ở đây có id sự kiện 9.
Testing ... (interrupt to exit)
OK bây giờ evtest muốn đầu vào, chỉ cần nhấp vào các nút từ xa Logitech, tôi đã nhận được điều này (đơn giản hóa):
[>] value 7003e (KEY_PRESENTATION)
[>] value 70029 (KEY_PRESENTATION)
[ ] value 70037 (KEY_DISPLAYTOGGLE)
< value 7004b (KEY_PAGEUP)
> value 7004e (KEY_PAGEDOWN)
Lưu ý: Tôi phát hiện ra rằng sau đó nhấp nhiều lần vào [>] là đưa ra 7003e, rồi 70029, rồi 7003e, v.v. Tôi không biết tại sao.
Sửa đổi udev conf
Bây giờ chúng ta có mã đầu vào, hãy xem udev conf:
sudo gedit /lib/udev/hwdb.d/60-keyboard.hwdb
Tìm kiếm "R400" và thay thế bản trình bày & hiển thị bằng các phím bạn muốn, nút phát và nút mũi tên dừng:
# 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"
Như đã đề cập trước đây, bởi vì 07003e & 070.029 là cùng một nút, tôi đưa cho họ cùng một sản lượng lên chủ chốt. 7004b & 7004e không xuất hiện ở đây theo mặc định, có thể vì chúng là các đầu vào PAGEUP & PAGEDOWN gốc và không liên quan đến "Logitech Presenter R400". Hãy thêm chúng:
KEYBOARD_KEY_07004b=previoussong # top left <
KEYBOARD_KEY_07004e=nextsong # top right >
Đây là conf cuối cùng của tôi:
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"
Quy tắc tải lại (mới)
sudo udevadm hwdb --update
Sau đó, bằng cách sử dụng cùng một id sự kiện mà chúng tôi đã chọn trước đây, ở đây sự kiện id 9:
sudo udevadm trigger /dev/input/event9
Bạn có thể kiểm tra ánh xạ mới này trong trình duyệt web, ví dụ:
$('body').on('keydown', function(e){ console.log(e.key) })
Điều đó đã cho tôi:
[>] ArrowUp
[ ] ArrowDown
< ArrowLeft
> ArrowRight