Сопоставление ключа на основе устройства, на котором включен ключ? (Linux)
У меня есть мышь Razer Naga Mouse, в сущности, на ней есть небольшая цифровая панель. Я хочу переназначить эти ключи на разные неиспользуемые ключи или на команды bash. Я могу легко это сделать, используя xev для захвата кода клавиши (например, "1" на мыши - это код 87), а затем я могу использовать xmodmap, чтобы связать код клавиши с другим ключом.
Однако цифровая клавиатура на моей клавиатуре также унаследует это, поскольку код клавиши тот же, но я заметил, что "последовательный" отличается.
Например, вот вывод команды xev при нажатии кнопки "1" на моей цифровой клавиатуре.
KeyPress event, serial 34, synthetic NO, window 0x1c00001,
root 0x1ae, subw 0x0, time 2179878, (170,-2), root:(198,345),
state 0x0, keycode 87 (keysym 0xff9c, KP_End), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 35, synthetic NO, window 0x1c00001,
root 0x1ae, subw 0x0, time 2179966, (170,-2), root:(198,345),
state 0x0, keycode 87 (keysym 0xff9c, KP_End), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
а вот и вывод при нажатии "1" на моей клавиатуре numpad
KeyPress event, serial 35, synthetic NO, window 0x1c00001,
root 0x1ae, subw 0x0, time 2180261, (170,-2), root:(198,345),
state 0x0, keycode 87 (keysym 0xff9c, KP_End), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x1c00001,
root 0x1ae, subw 0x0, time 2180341, (170,-2), root:(198,345),
state 0x0, keycode 87 (keysym 0xff9c, KP_End), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Могу ли я в любом случае сопоставить ключи на моей мыши на основе этого?
2 ответа
Вместо xmodmap
попробуйте использовать setxkbmap
а также xkbcomp
, xkbcomp
Команда позволяет указать идентификатор устройства ввода (используя -i
опция).
Чтобы получить список идентификаторов устройств, запустите xinput --list
, (FWIW, мой Razer Salmosa был четко обозначен как "Razer Razer Salmosa".)
Вот как я преобразовал свою USB-клавиатуру (ID 16), чтобы использовать немецкое сопоставление клавиш, сохраняя при этом клавиатуру моего ноутбука в сопоставлении США:
setxkbmap de -print | xkbcomp - -i 16 $DISPLAY
Я действительно не знаю, как настроить xkb
сопоставления, но я нашел учебник, который выглядит довольно хорошо.
Хорошо решено. Следуйте инструкциям в этой вики https://github.com/graph/Razer-Naga-HotKey/wiki/How-to-get-Razer-Naga-HotKeying-Working-on-Debian