Не удается переназначить клавиши на клавиатуре Microsoft с HWDB

Я пытаюсь переназначить LCtrl и CapsLock на моем Microsoft Проводная клавиатура 600 с HWDB, но по какой-то причине система не видит внесенных мной изменений.

Вот как выглядит мое правило hwdb :

evdev:input:b*v045Ep07F8*
 KEYBOARD_KEY_3a=leftctrl
 KEYBOARD_KEY_1d=capslock

Коды поставщика и модели взяты из lsusb и были повторно подтверждены в / sys / devices / pci0000: 00 / *

После копирования файла конфигурации в /etc/udev/hwdb.d , запуска обновления systemd-hwdb и выдачи триггера udevadm без изменений в конфиге клавиатуры присутствуют.

Еще пробовал:

  • Перезагрузка - не помогла.
  • Явное указание шины как 0003 - не помогло.
  • Подтверждение с помощью evtest , что коды клавиш, которые я использую, верны для моей клавиатуры - да, это правильные коды клавиш.
  • Подтверждение того, что применяемые правила перечислены в sudo udevadm info / sys / class / input / eventX - да, новые правила перечислены, которые должны означать, что они были применены успешно? Тем не менее, клавиши ведут себя так же, как и раньше.
E: KEYBOARD_KEY_1d=capslock
E: KEYBOARD_KEY_3a=leftctrl
E: ID_USB_DRIVER=usbhid

Когда я использую evdev: atkbd: dmi: * в качестве идентификатора устройства, вместо этого изменение правильно применяется к клавиатуре моего ноутбука, поэтому я знаю правило и процесс, который я использую для переназначения клавиш, должен быть правильным, это должно быть проблема с неправильным идентификатором (хотя я проверял его пять раз).

Любая помощь будет принята с благодарностью.

0
задан 21 December 2020 в 17:29

1 ответ

Оказывается, я указывал неправильный вид сканзозов. При получении ключевых кодов Evtest , вы получаете следующий вывод (при условии, что кнопка «Левая смена» Нажата):

...
Event: time xxx.xxx, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e1
Event: time xxx.xxx, type 1 (EV_KEY), code 42 (KEY_LEFTSHIFT), value 0
...

Код I использовал, был стандартным кодом ключа (42). Но, как оказывается, это неправильно.

Фактический код, который вы Предполагается указывать в файле HWDB, представляет собой Scancode из строки MSC_SCAN (в этом примере 700E1 , предшествовавшее слово значение )

Это работает:

evdev:input:b*v045Ep07F8*
 KEYBOARD_KEY_70039=leftctrl
 KEYBOARD_KEY_700e0=capslock

Ссылка: Rebinding Keyboard Keys @ Altlinux.org (это на русском языке (это на русском языке, но это самая полная статья, которую я нашел в Интернете, которая подчеркивает этот нюанс )

Я ярко помню, используя основные сканзоды на моих ноутбуках и их работающих. Я не совсем уверен, почему это так. Возможно, они могут соответствовать av_msc Scancodes на некоторых типах клавиатур.

0
ответ дан 18 March 2021 в 23:49

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

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