Сопоставление ключа на основе устройства, на котором включен ключ? (Linux) - PullRequest
5 голосов
/ 14 октября 2010

У меня есть 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 ]

2 голосов
/ 02 октября 2011

Вместо xmodmap, попробуйте использовать setxkbmap и xkbcomp.Команда xkbcomp позволяет указать идентификатор устройства ввода (используя опцию -i).

Чтобы получить список идентификаторов устройства, запустите xinput --list.(FWIW, мой Razer Salmosa был четко обозначен как «Razer Razer Salmosa».)

Вот как я преобразовал свою USB-клавиатуру (ID 16) для использования сопоставления клавиш на немецком языке, сохраняя при этом клавиатуру ноутбука на сопоставлении США:

setxkbmap de -print | xkbcomp - -i 16 $DISPLAY

Я действительно не знаю, как настроить xkb сопоставления, но я нашел учебник , который выглядит довольно неплохо .

1 голос
/ 02 октября 2011

ОК Решено.Следуйте инструкциям на этой вики https://github.com/graph/Razer-Naga-HotKey/wiki/How-to-get-Razer-Naga-HotKeying-Working-on-Debian

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...