Предположительно, существует двоичная поддержка эмуляции, которая доступна ядру Linux, хотя это должно быть скомпилировано в. Я всегда находил, хотя это, лучше портировать приложение или выполнить собственную альтернативу затем, пытается пробежать эмулятор.
Сначала найдите скан-код ключа, который необходимо переназначить, например с помощью утилиты 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, , этот метод должен работать.