Как изменить раскладку одного устройства (ведущий Logitech)?

Ведущий ведущий 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 и т. д.

Как я могу изменить раскладку только для этого устройства (поскольку я, разумеется, не хочу переназначать эти коды клавиш по всему миру)?

19
задан 23 October 2011 в 01:06

2 ответа

Я никогда этого не делал, но я думаю, вам нужно создать файл ключевой карты в /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"
Сохранить, закрыть и после перезагрузки кнопки должны изменить яркость.
15
ответ дан 25 May 2018 в 17:50
  • 1
    О, как я мог забыть об этом (/ lib / udev / keymaps / zepto-znote был внесен мной: D). Позднее я расскажу о том, как я работал над вашим ответом. – htorque 23 October 2011 в 00:24
  • 2
    Просто хотелось добавить к этому ответу, что вы можете установить нулевое значение в том, что «eventX» ваша клавиатура может быть запущена /lib/udev/findkeyboards. Это отобразит список всех подключенных в настоящее время клавиатур, поэтому вам не придется так много попробовать. Logitech r400 появился как «клавиатура USB: вход / событие11». для меня. – jat255 16 August 2012 в 00:26
  • 3
    Хороший ответ, но как я могу найти ID_VENDOR и idProduct для использования? Я попробовал /sys/class/dmi/id/sys_vendor и /sys/class/dmi/id/product_name, но это не сработало. – PutzKipa 25 October 2012 в 18:22
  • 4
    /lib/udev/keymap и /lib/udev/findkeyboards больше не существуют 13.10. forum.ubuntu-fr.org/viewtopic.php?id=1395051 говорит, что вместо этого используйте evtest. – Stéphane Gourichon 4 November 2013 в 16:07
  • 5
    Здравствуйте, @htorque, не могли бы вы обновить ответ по-новому? В Ubuntu Trusty все эти файлы больше не существуют. Ты единственный, кого я видел в сети, имея тот же самый выход. – londumas 1 April 2014 в 02:39

Я на Ubuntu 16.04. Я сделал путеводитель здесь

Обнаружение с помощью 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"
Принял первый «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
3
ответ дан 25 May 2018 в 17:50
  • 1
    Я сделал некоторые небольшие улучшения в вашем оригинальном руководстве logitech-r400-remap.md от GitHub. Не стесняйтесь изменять их или редактировать их на своей веб-странице GitHub, если вы хотите (никакая атрибуция мне не нужна). Ваш ответ был отклонен, потому что это был ответ только на мой взгляд, поэтому я также отключил downvote. – karel 26 January 2017 в 16:33
  • 2
    Я удивлен, что люди сбиты с толку, потому что я предоставил ссылку, сегодня я сделал это руководство, чтобы помочь людям, довольно грустно видеть такую ​​реакцию ... Как если бы я отправлял людей на сайт, полный рекламы и amp; viruses -_- '' В любом случае, благодаря вам, я исправил опечатки на Github (я не английский на родной язык). – Ssh-uunen 26 January 2017 в 16:49
  • 3
    Отправленные были удалены, поэтому теперь ваш ответ имеет возможность быть рассмотренным по существу, как и любой другой ответ здесь. – karel 27 January 2017 в 12:18
  • 4
    Я понял, что downvotes был удален, я просто говорю, что я удивлен / грустен / устал от такого отношения, которое есть у некоторых людей. Мы находимся здесь, на веб-сайте, посвященном оказанию помощи друг другу, плюс linux & amp; github - все о opensource & amp; люди, дающие время и amp; исходный код друг к другу. Во всем этом великом мире некоторые экстремисты считают, что ваш вклад - дерьмо, потому что вы предоставили ссылку на Github вместо того, чтобы помещать контент в первую очередь. Это похоже на то, что вы даете пищу кому-то, кто просит чего-то поесть, и человек бросает пищу на ваше лицо, потому что ей не хватает соли. – Ssh-uunen 27 January 2017 в 16:29

Другие вопросы по тегам:

Похожие вопросы: