중간 버튼 스크롤에 대한 libinput 설정을 변경하는 udev 스크립트(xorg 파일로 응답, 더 나은 솔루션)

중간 버튼 스크롤에 대한 libinput 설정을 변경하는 udev 스크립트(xorg 파일로 응답, 더 나은 솔루션)

Thinkpad T480의 우분투 18.04.2

마우스가 연결되어 있을 때 udev 스크립트를 실행하고 싶습니다. 나는 tim이라는 사용자가 Xsession을 실행하고 있다고 가정하게 되어 기쁩니다(저는 kde 플라즈마를 사용합니다).

목표는 핫 플러그를 포함하여 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의 위치는 쉘에 보이는 것에서 복사되었습니다.

스크립트에 로거 호출이 있는데 여러 번 호출됩니다. (왜?) 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)이 보고한 대로 세션이 시작된 후 장치가 핫 플러그되면 작동하며 일시 중지/재개 중에도 유지됩니다.

참고자료:

관련 정보