การตรวจจับด้วย evtest
sudo evtest
ดูรายการอุปกรณ์:
/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"
รับ "Logitech USB Receiver" ตัวแรกซึ่งมีรหัสเหตุการณ์ 9
Testing ... (interrupt to exit)
ตกลงตอนนี้ต้องการให้ป้อนข้อมูล evtest เพียงคลิกที่ปุ่มรีโมท Logitech ฉันได้รับ (ง่าย):
[>] value 7003e (KEY_PRESENTATION)
[>] value 70029 (KEY_PRESENTATION)
[ ] value 70037 (KEY_DISPLAYTOGGLE)
< value 7004b (KEY_PAGEUP)
> value 7004e (KEY_PAGEDOWN)
หมายเหตุ:ฉันค้นพบหลังจากนั้นการคลิกหลายครั้งใน [>] ให้ 7003e แล้ว 70029 แล้ว 7003e เป็นต้นฉันไม่รู้ว่าทำไม
การแก้ไข udev conf
ตอนนี้เรามีรหัสป้อนข้อมูลมาดู udev conf:
sudo gedit /lib/udev/hwdb.d/60-keyboard.hwdb
ค้นหา "R400" และแทนที่งานนำเสนอและสลับการแสดงผลตามสิ่งที่คุณต้องการ, ปุ่ม playpause & stopcd arrow:
# 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"
ตามที่ระบุไว้ก่อนหน้านี้เพราะ 07003e และ 070029 เป็นปุ่มเดียวกันผมให้พวกเขาเอาท์พุทเดียวกันขึ้นที่สำคัญ ค่าเริ่มต้น 7004b & 7004e ไม่ปรากฏที่นี่อาจเป็นเพราะพวกเขาเป็นอินพุต PAGEUP & PAGEDOWN ดั้งเดิมและไม่เกี่ยวข้องกับ "Logitech Presenter R400" เพิ่มของพวกเขา:
KEYBOARD_KEY_07004b=previoussong # top left <
KEYBOARD_KEY_07004e=nextsong # top right >
นี่คือความเชื่อสุดท้ายของฉัน:
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"
โหลดซ้ำกฎ (ใหม่)
sudo udevadm hwdb --update
จากนั้นโดยใช้รหัสเหตุการณ์เดียวกับที่เราเลือกไว้ก่อนหน้านี่คือรหัสเหตุการณ์ 9:
sudo udevadm trigger /dev/input/event9
คุณสามารถตรวจสอบการทำแผนที่ใหม่ในเว็บเบราว์เซอร์ตัวอย่างเช่น:
$('body').on('keydown', function(e){ console.log(e.key) })
นั่นทำให้ฉัน:
[>] ArrowUp
[ ] ArrowDown
< ArrowLeft
> ArrowRight