udev 脚本用于更改中间按钮滚动的 libinput 设置(使用 xorg 文件回答,更好的解决方案)

udev 脚本用于更改中间按钮滚动的 libinput 设置(使用 xorg 文件回答,更好的解决方案)

Thinkpad T480 上的 ubuntu 18.04.2

我想在鼠标连接时运行 udev 脚本。我很高兴地假设名为 tim 的用户正在运行 Xsession(我使用 kde plasma)。

目标是配置 Logitech USB 鼠标的中间按钮滚动,包括热插拔。

我的规则是:

/etc/udev/rules.d/41-usb-mouse-add.rules


ACTION=="add" \
, ATTRS{idProduct}=="c539" \
, ATTRS{idVendor}=="046d" \
, ENV{DISPLAY}=":0" \
, ENV{XAUTHORITY}="/tmp/xauth-1000-_0" \
, RUN+="/home/tim/scripts/tweak_libinput.sh"

XAUTHORITY 的位置是从我在 shell 中看到的内容复制而来的。

我在脚本中调用了记录器,并且它被调用多次(为什么?)因此 udev 规则正在起作用,尽管我预计它只会被调用一次。

它确实产生了一些影响,因为它破坏了我的自然滚动设置... 同一个脚本将自然滚动设置为开启,但在 udev 调用之后,自然滚动设置被重置。所以这比失败更糟糕,它实际上破坏了我的设置 :)

手动运行该脚本时,无论我调用它多少次,它都能正常工作。

编辑

ls -l /tmp/xauth-1000-_0 
-rw------- 1 tim tim 53 Jun 11 20:07 /tmp/xauth-1000-_0

这个权限设置会有问题吗?

答案1

可以使用配置文件来实现/usr/share/X11/xorg.conf.d/41-libinput-local.conf

这些内容适用于特定设备:

Section "InputClass"
        Identifier "Logitech USB Receiver Mouse"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "ScrollButton" "2"
        Option "ScrollMethod" "button"
        Option "NaturalScrolling" "true"
EndSection

正如 Tim(OP)所报告的,它在会话开始后设备热插拔时起作用,并且在挂起/恢复期间仍然存在。

参考:

相关内容