У меня есть винтажная клавиатура IBM 122 модели M, которую я адаптирую для использования на современном компьютере. Я использую Teensy 2.0 для кодирования и обработки USB. Я позаимствовал прошивку из проекта клавиатуры Humble Hacker ( https://github.com/humblehacker/keyboard ) и добавил дополнительные ключи в конфигурацию сборки. Все идет нормально.
Все «обычные» ключи работают, но ядро, кажется, сбрасывает дополнительные ключи ( F13- F24и т. Д.).
Запуск /lib/udev/keymap -i input/event0
показывает коды сканирования всех нормальных клавиш, но ничего для дополнительных клавиш.
Запуск wireshark
для захвата пакетов через порт USB показывает, что клавиатура отправляет коды сканирования, но похоже, что ядро просто сбрасывает их в принципе.
Я чувствую, что это что-то в драйверах ядра, которое просто не доставляет коды сканирования, чего оно не ожидает.
Я бы подумал, что в каком-то .h
файле в исходном коде ядра будет какая-то карта «главного» ключа , но до сих пор мне не удалось найти ее.
Стоит подчеркнуть, что я не спрашиваю о сопоставлении дополнительных клавиш в X, как многие другие до меня. Это проблема низкого уровня, по-видимому, связанная с ядром. Предположим на данный момент, что я не буду использовать X вообще. Что мне нужно, чтобы коды сканирования отображались при запуске /lib/udev/keymap -i
, я могу сделать все остальное оттуда.
источник
evtest
вместо этого/lib/udev/keymap -i
, не знаю, выйдет ли что-то по-другомуОтветы:
Ядро видит странные коды сканирования и сбрасывает их. Я попытался бы получить эти значения кодов сканирования и затем обновить индекс аппаратной базы данных. Короче говоря, план таков:
получить коды из вывода dmesg - dmesg должен вывести что-то вроде этого при нажатии неизвестного кода клавиши:
a0
будучи значением кода.создать файл сопоставления пользовательских кодов. Примеры и справка находятся в файле по умолчанию
(
/usr/lib/udev/hwdb.d/60-keyboard.hwdb
для Arch это может отличаться в других дистрибутивах).обновить и запустить аппаратную базу данных, выполнив команды:
где
eventXX
соответствует вашей клавиатуре (вы можете получить его, запустивevtest
). Вы также можете перезагрузить компьютер вместо запуска.Посмотрите в Arch wiki и в файле сопоставления кодов по умолчанию более подробное описание (или в вашей документации по распространению, если это не Arch).
Это надежный и простой метод, который делает отображение на уровне ядра, поэтому работает независимо от того, какой сервер отображения, DE и т. Д.
источник
Этот сайт предлагает пользовательские преобразования клавиатуры http://straypoetry.com/ibm-model-m-keyboard/
Основано на информации с этого сайта: http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html
источник