在 Linux 中配置 Kensington Slimblade

Nel*_*ira 7 linux ubuntu xinput

我刚买了一个 Kensigton Slimblade 轨迹球,我正在尝试配置它。我正在从我的旧 Logitech Marble 配置中改编它。

我希望配置是:

  • 左下:左键单击
  • 左上:向后
  • 右上:右键单击和滚珠滚动锁定
  • 右下角:单击鼠标中键

到目前为止我可以设置的配置是:

  • 左下:左键单击
  • 左上:单击鼠标中键
  • 右上:右键单击和滚珠滚动锁定
  • 右下:向后

这是我的配置脚本:

xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Middle Button Emulation" 8 1   

xinput set-button-map "Kensington Kensington Slimblade Trackball" 1 2 8 4 5 6 7 

xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Wheel Emulation" 8 1
xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Wheel Emulation Button" 8 8
xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Wheel Emulation Axes" 8 6 7 4 5
xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Wheel Emulation Timeout" 16 300
Run Code Online (Sandbox Code Playgroud)

在运行此脚本之前,xev将按钮编号报告为:

Left-Bottom: 1, Left-Top: 2, Right-Top: 8, Right-Botom: 3
Run Code Online (Sandbox Code Playgroud)

运行此脚本后:

Left-Bottom: 1, Left-Top: 2, Right-Top: 8, Right-Botom: 8
Run Code Online (Sandbox Code Playgroud)

所以AFAIK,xinput set-button-map改变按钮顺序。在页面中,我了解到,第二个值相当于鼠标中键,以及第8到Thumb1(通常与后退功能)。所以我想我应该像这样使用数字 3 作为第二个元素和 2 作为第 8 个元素:

xinput set-button-map "Kensington Kensington Slimblade Trackball" 1 3 8 4 5 6 7 2
Run Code Online (Sandbox Code Playgroud)

但是现在左上角的按钮有右键单击功能,左下角的按钮被禁用。xev现在报道

Left-Bottom: 1, Left-Top: 3, Right-Top: 2, Right-Botom: 8. 
Run Code Online (Sandbox Code Playgroud)

任何人都知道我如何按照我的意图设置配置?我正在使用 Ubuntu 16.04。谢谢。

Nel*_*ira 6

在我发布问题几分钟后,我找到了答案。如果有人需要的话(Mint 18/Ubuntu 16.04 的配置):

xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Middle Button Emulation" 8 0
7 8 9 
xinput set-button-map "Kensington Kensington Slimblade Trackball" 1 8 2 4 5 6 7 3 2
xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Wheel Emulation" 8 1
xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Wheel Emulation Button" 8 8
xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Wheel Emulation Axes" 8 6 7 4 5
xinput set-int-prop "Kensington Kensington Slimblade Trackball" "Evdev Wheel Emulation Timeout" 16 300
Run Code Online (Sandbox Code Playgroud)

编辑

升级到 Mint 19(在家)和 Ubuntu 18.04(办公室)后,我发现上面的配置不起作用。18.04 对此类设备使用不同的库 (libinput),即使我重新安装了 Evdev,某些选项也不起作用。经过痛苦的搜索,我找到了解决方案。在文件夹中创建扩展名为 .conf 的文件/usr/share/X11/xorg.conf.d/。就我而言,我将其命名为10-slimblade.conf. 将此配置放入文件中:

Section "InputClass"
        Identifier "Kensington Kensington Slimblade Trackball"
        MatchProduct "Kensington Kensington Slimblade Trackball"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "ButtonMapping" "1 8 2 4 5 6 7 3 2"
        Option "ScrollButton" "8"
        Option "ScrollMethod" "button"
        Option "MiddleEmulation" "on"
EndSection
Run Code Online (Sandbox Code Playgroud)

重新启动会话,就是这样。