Ведущий ведущий Logitech R400 отправляет следующие коды клавиш:
keycode 112 (keysym 0xff55, Prior) [page up]
keycode 117 (keysym 0xff56, Next) [page down]
keycode 60 (keysym 0x2e, period)
keycode 71 (keysym 0xffc2, F5)
keycode 9 (keysym 0xff1b, Escape)
В принципе, я хочу использовать этот презентатор для удаленного управления Banshee, поэтому я хотел бы переназначить Prior
на B
, Next
- N
и т. д.
Как я могу изменить раскладку только для этого устройства (поскольку я, разумеется, не хочу переназначать эти коды клавиш по всему миру)?
Я никогда этого не делал, но я думаю, вам нужно создать файл ключевой карты в /lib/udev/keymaps/ и добавить правило для вашего устройства в /lib/udev/rules.d/95-keymap.rules
Подробности:
Клавиатура udev сопоставляет коды сканирования с кодами клавиш, поэтому вам нужно найти оба файла для создания файла карты. Чтобы найти коды сканирования, выполните следующие действия и нажмите кнопки на устройстве:sudo /lib/udev/keymap -i input/event5
Возможно, вам придется попробовать разные цифры для события *. Результат должен выглядеть следующим образом: scan code: 0x70037 key code: dot
scan code: 0x70029 key code: esc
scan code: 0x7003E key code: f5
scan code: 0x7004B key code: pageup
scan code: 0x7004E key code: pagedown
Список кодов клавиш можно найти здесь. Теперь создайте файл-раскладку (я храню его как / lib / udev / keymaps / logitech-r400): 0x70037 brightnessdown
0x70029 brightnessup
0x7003E brightnessdown
0x7004B brightnessup
0x7004E brightnessdown
Не делает ничего полезного - просто тест, чтобы легко увидеть, работает ли он. Чтобы временно проверить новую раскладку клавиатуры, запустите: sudo /lib/udev/keymap input/event5 /lib/udev/keymaps/logitech-r400
, что должно привести к выходу следующим образом: Remapped scancode 0x70037 to 0xe0 (prior: 0x34)
Remapped scancode 0x70029 to 0xe1 (prior: 0x01)
Remapped scancode 0x7003e to 0xe0 (prior: 0x3f)
Remapped scancode 0x7004b to 0xe1 (prior: 0x68)
Remapped scancode 0x7004e to 0xe0 (prior: 0x6d)
Теперь кнопки должны изменить яркость. Если вы хотите, чтобы это изменение было постоянным, вам нужно добавить правило udev к /lib/udev/rules.d/95-keymap.rules, которое применяет файл раскладки клавиатуры к устройству. Откройте файл: gksudo gedit /lib/udev/rules.d/95-keymap.rules В нижней части файла, но перед строкой LABEL="keyboard_end" добавьте: ENV{ID_VENDOR}=="Logitech*", ATTRS{idProduct}=="c52d", RUN+="keymap $name logitech-r400"
Сохранить, закрыть и после перезагрузки кнопки должны изменить яркость. Я на Ubuntu 16.04. Я сделал путеводитель здесь
Обнаружение с помощью evtestsudo 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"
Принял первый «USB-приемник Logitech», здесь он имеет идентификатор события 9. Testing ... (interrupt to exit)
OK сейчас 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» и замените презентацию & amp; displaytoggle по тому, что вы хотите, playpause & amp; клавиши со стрелками стоп-кадра: # 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 & amp; 070029 - одна и та же кнопка, я дал им тот же самый выходный ключ. 7004b & amp; 7004e не появляется здесь по умолчанию, возможно, потому что они являются родными PAGEUP & amp; PAGEDOWN и не относится к «Logitech Presenter R400». Давайте добавим их: KEYBOARD_KEY_07004b=previoussong # top left <
KEYBOARD_KEY_07004e=nextsong # top right >
Вот мой окончательный conf: 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
Затем, используя тот же самый идентификатор события, который мы выбрали раньше, здесь event id 9: sudo udevadm trigger /dev/input/event9
Вы можете проверить это новое отображение в веб-браузер, например: $('body').on('keydown', function(e){ console.log(e.key) })
Это дало мне: [>] ArrowUp
[ ] ArrowDown
< ArrowLeft
> ArrowRight