【问题标题】:Mapping a key based on the device the key is on? (Linux)根据密钥所在的设备映射密钥? (Linux)
【发布时间】:2011-04-25 03:47:36
【问题描述】:

我拥有一个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

我是否可以基于此映射鼠标上的键?

【问题讨论】:

    标签: linux keyboard mouse keymapping


    【解决方案1】:

    尝试使用setxkbmapxkbcomp,而不是xmodmapxkbcomp 命令允许您指定输入设备 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

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 我的系统得到了 linux 代码,现在卡住了。我在 /drivers/hid/usbhid 的任何地方都看不到 init_module() 函数:(
      • 我找到了 /dev/input/by-id/usb-Razer_Razer_Naga-event-kbd 并对此进行了 hexdump 似乎我可以对程序进行解析。需要禁用 X 为 razer naga 执行此路线解释。
      • 我没有意识到这个问题已经快一年了......但希望我的回答可以帮助你:)
      • 嗨,Dan,我无法评论您的帖子,但我找到了一种方法来禁用 x 读取 razer 键盘“xinput set-int-prop 10 "Device Enabled" 8 0"。并且 /dev/... 仍然处于活动状态,这很好,这意味着我可以转换它们。我已经看过你发布的重新映射的东西,但我不知道如何利用它来发挥我的优势。我尝试重新映射到我不使用的语言,其中键盘布局“0-9”按钮是我永远不会使用的东西,哈哈。但是按下 razer 鼠标上的按钮仍然会打印 1、2、3 等...是的,我仍然很感兴趣,谢谢你的帮助,但我不知道 OP 哈哈
      • setxkbmap & xkbcomp 也弄乱了我的键盘布局。当我使用这些命令时,XFCE 键盘布局程序也会崩溃
      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多