我已经看到许多与此问题类似的讨论,但我尚未能够使其发挥作用。
我最近左手小指骨折严重。我得到了四轮分体踏板车并尝试将踏板重新映射到诸如控制、alt 和 tab 之类的东西。
该设备的行为类似于鼠标 - 默认情况下,踏板被映射到滚轮向上、滚轮向下、右键单击和左键单击。当我运行 xinput 时,我得到以下内容:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Good Work Systems, Inc. GWS IDI Device id=9 [slave pointer (2)]
⎜ ↳ PixArt USB Optical Mouse id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Good Work Systems, Inc. GWS IDI Device id=10 [slave keyboard (3)]
↳ Lenovo Lenovo Black Silk USB Keyboard id=12 [slave keyboard (3)]
↳ Lenovo Lenovo Black Silk USB Keyboard id=13 [slave keyboard (3)]
踏板是“良好工作系统”装置。
我最接近得到这个行为的方法是创建和编辑一个 .xbindkeys 配置,如下所示:
# Copy
"xte 'keydown Control_L' 'key C' 'keyup Control_L'"
b:5
# Cut
"xte 'keydown Control_L' 'key X' 'keyup Control_L"
b:4
# Paste
"xte 'keydown Control_L' 'key V' 'keyup Control_L'"
b:3
# Select All
"xte 'keydown Control_L' 'key A' 'keyup Control_L'"
b:1
但这也会影响我的常规鼠标按钮。如何指定每个设备的键映射?
答案1
将设备的鼠标按钮映射到未使用的鼠标按钮,然后使用 xbindkeys 来引用这些按钮。
- 用于
xinput list
查找您的设备的 ID。 - 使用
xinput set-button-map
将按钮重新映射到其他鼠标按钮。例如,如果xinput list
指示您的设备 ID 为 15,并且您的设备有四个按钮,请执行xinput set-button-map 15 10 11 12 13
。现在您已将设备 15 的鼠标点击设置为 b:10、b:11、b:12 和 b:13。 - 更新您的 .xbindkeysrc 以将这些按钮重新映射到您想要的快捷方式。
答案2
我意识到这个问题已经两年了,而且已经回答过了,但为了便于将来参考,您可以在调用时指定设备 ID xte
。
# Copy
"xte -i 9 'keydown Control_L' 'key C' 'keyup Control_L'"
b:5
# Cut
"xte -i 9 'keydown Control_L' 'key X' 'keyup Control_L"
b:4
# Paste
"xte -i 9 'keydown Control_L' 'key V' 'keyup Control_L'"
b:3
# Select All
"xte -i 9 'keydown Control_L' 'key A' 'keyup Control_L'"
b:1
这应该将更改限制到由 给出的 ID 标识的单个设备-i
。由于这些 ID 在每次启动时可能会被不同地映射,因此您可能需要将更改编写成脚本,以便可以手动执行它。
(也可以看看 https://askubuntu.com/a/492745)