udev 腳本更改中鍵滾動的 libinput 設定(用 xorg 檔案回答,更好的解決方案)

udev 腳本更改中鍵滾動的 libinput 設定(用 xorg 檔案回答,更好的解決方案)

Thinkpad T480 上的 ubuntu 18.04.2

我想在連接滑鼠時運行 udev 腳本。我很高興地假設一個名為 tim 的使用者正在運行 Xsession(我使用 kdeplasma)。

目標是為 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 中看到的複製的。

我在腳本中調用了 logger,並且它被多次調用(為什麼?)所以 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) 所報告的,它在會話開始後熱插拔設備時起作用,並且在掛起/恢復期間仍然存在。

參考:

相關內容