Отображение ключа в зависимости от устройства, на котором он находится? (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» на моей цифровой клавиатуре.

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

Можно ли каким-либо образом отобразить клавиши на моей мыши на основе этого?

5
задан Cœur 16 May 2018 в 03:05
поделиться