клавиатура трудно повторно отображает ключи?

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

19
16.12.2014, 00:13
1 ответ

Сначала найдите скан-код ключа, который необходимо переназначить, например с помощью утилиты evtest . Должна быть выведена такая строка, как следующая (с MSC_SCAN в ней):

Event: time 1417131619.686259, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70068

, за которой следует вторая, содержащая текущий код клавиши. Если строка MSC_SCAN не выводится, это связано с ошибкой драйвера ядра, но скан-код все еще можно найти с помощью утилиты input-kbd ; evtest должен был указать код клавиши, чтобы можно было легко найти соответствующую строку в выводе input-kbd (например, с помощью grep ).

После определения скан-кодов ключей, которые необходимо переназначить, создайте файл, такой как /etc/udev/hwdb.d/98-custom-keyboard.hwdb , содержащий переназначения. Некоторую информацию дает начало файла /lib/udev/hwdb.d/60-keyboard.hwdb . В моем случае (который работает) у меня есть:

evdev:input:b0003v05ACp0221*
 KEYBOARD_KEY_70035=102nd       # Left to z: backslash bar
 KEYBOARD_KEY_70064=grave       # Left to 1: grave notsign
 KEYBOARD_KEY_70068=insert      # F13: Insert

(До udev 220 мне приходилось использовать keyboard: usb: v05ACp0221 * для первой строки.)

evdev: строка должна быть в начале строки. Обратите внимание, что буквы в идентификаторе поставщика и продукта должны быть заглавными. В каждой настройке KEYBOARD_KEY_ должно быть точно указано на один пробел перед (примечание: строка без пробелов выдаст сообщение об ошибке, а строка с двумя пробелами молча игнорировалась в старых версиях udev). KEYBOARD_KEY_ следует за скан-кодом в шестнадцатеричном формате (например, что выдают evtest и input-kbd ). Допустимые значения могут быть получены либо из вывода evtest , либо из вывода input-kbd , либо даже из файла /usr/include/linux/input.h : например, KEY_102ND даст 102-й (путем удаления KEY_ и преобразования в нижний регистр), который я использовал выше.

После сохранения файла введите:

udevadm hwdb --update

, чтобы (пере) построить базу данных /etc/udev/hwdb.bin (вы можете проверить его временную метку). Затем

udevadm trigger --sysname-match="event*"

учтет новые настройки. Вы можете проверить с помощью evtest .

В 2014 году выпущенный udev содержал неполную / ошибочную информацию в /lib/udev/hwdb.d/60-keyboard.hwdb , но вы можете посмотреть последнюю разрабатываемую версию файл и / или мой отчет об ошибке и обсуждение , касающееся документации и проблем с интервалами.

Если это не сработает, проблема может быть обнаружена после временного увеличения уровня журнала udevd с помощью элемента управления udevadm (подробности см. На странице руководства udevadm (8)) .

Для старых версий udev , таких как 204, , этот метод должен работать.

17
27.01.2020, 19:45

Теги

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