根据密钥所在的设备映射密钥? (Linux)的

时间:2010-10-14 00:41:03

标签: linux keyboard mouse keymapping

我拥有一个Razer Naga Mouse,essentaly它旁边有一个小小的小键盘。我想将这些密钥重新映射到不同的未使用的密钥或bash命令。我可以通过使用xev来获取密钥代码(例如鼠标上的“1”是键代码87),然后我可以使用xmodmap将密钥代码绑定到另一个密钥来轻松完成。

然而我的键盘上的小键盘也会继承这个,因为键码是相同的,我注意到的是“串口”是不同的。

例如,按下鼠标小键盘上的“1”按钮,这里是xev的输出。

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

,这是我的键盘numpad上按“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

无论如何我可以根据这个来映射鼠标上的按键吗?

2 个答案:

答案 0 :(得分:2)

而不是xmodmap,请尝试使用setxkbmapxkbcompxkbcomp命令允许您指定输入设备ID(使用-i选项)。

要获取设备ID列表,请运行xinput --list。 (FWIW,我的Razer Salmosa被清楚地标记为“Razer Razer Salmosa”。)

以下是我将USB键盘(ID 16)转换为使用德语键映射的方式,同时将我的笔记本电脑键盘保留在美国地图上:

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

我真的不知道如何设置xkb映射,但我找到了tutorial that looks pretty good

答案 1 :(得分:1)