中央ボタンスクロールの libinput 設定を変更する udev スクリプト (xorg ファイルで回答、より良い解決策)

中央ボタンスクロールの libinput 設定を変更する udev スクリプト (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 の場所は、シェルで確認したものからコピーされます。

スクリプト内に logger の呼び出しがあり、それが複数回呼び出されています (なぜでしょうか?)。そのため、1 回だけ呼び出されると予想していましたが、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) の報告によると、サスペンド/再開時にも存続します。

参考文献:

関連情報