重新映射辅助设备上的按钮

重新映射辅助设备上的按钮

我已经看到许多与此问题类似的讨论,但我尚未能够使其发挥作用。

我最近左手小指骨折严重。我得到了四轮分体踏板车并尝试将踏板重新映射到诸如控制、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 来引用这些按钮。

  1. 用于xinput list查找您的设备的 ID。
  2. 使用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。
  3. 更新您的 .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

相关内容