如何映射两个按钮来滚动模拟?

如何映射两个按钮来滚动模拟?

我有一个罗技 Trackman Marble,它有 2 个大按钮和两个小按钮。它也没有滚轮。

使用此配置来自 Arch wiki,可以将其中一个小按钮配置为滚动修改器。

不过,我也是用左手模式使用鼠标,另一个小按钮是无法按下的。所以我想要两个都用于启用滚动的小按钮。

我尝试添加以下按钮映射,将按钮 9 映射到按钮 8,以便它们都触发滚动。但第二个按钮只会触发后退按钮。

Option          "ButtonMapping" "1 2 3 4 5 6 7 8 8"

我怎样才能做到这一点?

或者,如何在右手和左手配置之间轻松切换?如果我可以配置第四个无用的按钮来“镜像”鼠标,那就太好了。

答案1

我有相同的轨迹球,这是我/etc/X11/xorg.conf.d/99-logievdev.conf用于启用滚动的轨迹球:

Section "InputClass"
    Identifier      "Logitech USB Trackball"
    MatchProduct    "Logitech USB Trackball"
    MatchDevicePath "/dev/input/event*"
    MatchIsPointer  "true"
    Driver          "libinput"
    Option          "ButtonMapping"         "1 0 3 4 5 0 0 8 2"
    Option          "ScrollMethod"          "button"
    Option          "ScrollButton"          "8"
EndSection

请注意,您只需要Option "ScrollMethod"Option "ScrollButton"行即可启用轨迹球滚动。

也许我的手与你的手不同,但我发现所有四个按钮都对我有用。这就是为什么我将难以触及的小按钮分配给鼠标中键(按钮 2),以供那些偶尔需要它的罕见的旧 X11 程序使用。这也是为什么我不使用Option "MiddleEmulation"您链接的 Arch Wiki 配置中使用的配置。

可能该ScrollButton选项是在 之前处理的ButtonMapping,允许您将滚动分配给一个且仅一个按钮。

要在配置之间切换,您可以使用类似以下脚本的内容:

#!/bin/sh
MOUSENAME="Logitech USB Trackball"
CUR_SC_BUTTON=$(xinput --list-props "$MOUSENAME" | grep "Scrolling Button (" | cut -d : -f 2)
case $CUR_SC_BUTTON in
    8)
        # mouse is currently right-handed, switch to left
        xinput --set-prop "$MOUSENAME" "libinput Button Scrolling Button" 9
        xinput --set-button-map "$MOUSENAME" 3 2 1 4 5 6 7 9 8
        # note: may need to switch 9 and 8 around, depending on how
        # ButtonMapping and ScrollingButton interact
        ;;
    9)
        # mouse is currently left-handed, switch to right
        xinput --set-prop "$MOUSENAME" "libinput Button Scrolling Button" 8
        xinput --set-button-map "$MOUSENAME" 1 2 3 4 5 6 7 8 9
        ;;
esac

免责声明:我自己没有测试过这个脚本,我只是现在写的。

要使用“无用”按钮切换鼠标配置,您可以在选择的桌面环境中使用适当的工具来指定此脚本在按下鼠标按钮时运行。

相关内容