Справочная информация : Я получил Microsoft Natural Ergonomic Keyboard 4000, и несколько клавиш вообще не работают в Ubuntu, например клавиши F1-F10. На моей машине работает Ubuntu 14.04.2 LTS.
Мое решение : я создал файл /etc/udev/hwdb.d/61-keyboard-local.hwdb
и настроил собственные правила:
keyboard:usb:v045ep00db*
KEYBOARD_KEY_0x1008ff27=pageup
KEYBOARD_KEY_0x1008ff26=pagedown
KEYBOARD_KEY_0xff6a=F1
KEYBOARD_KEY_0x1008ff6b=F5
Я получил шестнадцатеричный код через xev
. Например, для ключа, который должен быть клавишей F1 kbd>, xev
возвращает
KeyRelease event, serial 37, synthetic NO, window 0x4400001,
root 0xa2, subw 0x0, time 1746028, (12,-12), root:(61,40),
state 0x10, keycode 146 (keysym 0xff6a, Help), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
После изменения файла я запустил udevadm hwdb --update
и udevadm trigger
и, дополнительно перезапустил мой ноутбук.
Проблема : Соответствующие функции не назначены соответствующим клавишам.
Тот от xev
ключевой символ keysym
, здесь идея:
/keyboard/→ scancode
→ / входной драйвер / → keycode
→ сервер/X XKB/→ keysym
man xev
говорит: xev - печатают содержание X событий
Так, что Вы ищете, ранние аппаратные данные из клавиатуры, которая является scancode
. Это может быть найдено с помощью evtest
man evtest
evtest - Монитор события устройства ввода данных и инструментальное средство формирования запросов
Установите его
sudo apt-get install evtest
Выполненный
sudo evtest
Вывод
Event: time 1435906588.943349, type 4 (EV_MSC), code 4 (MSC_SCAN), value 3b
Event: time 1435906588.943349, type 1 (EV_KEY), code 59 (KEY_F1), value 1
Scancode 3b