udev-Skript zum Ändern der Libinput-Einstellungen für das Scrollen mit der mittleren Taste (beantwortet mit Xorg-Datei, bessere Lösung)

udev-Skript zum Ändern der Libinput-Einstellungen für das Scrollen mit der mittleren Taste (beantwortet mit Xorg-Datei, bessere Lösung)

Ubuntu 18.04.2 auf einem Thinkpad T480

Ich möchte ein Udev-Skript ausführen, wenn meine Maus angeschlossen ist. Ich gehe davon aus, dass ein Benutzer namens Tim eine Xsession ausgeführt hat (ich verwende KDE Plasma).

Ziel ist die Konfiguration des Scrollens mit der mittleren Taste für eine USB-Maus von Logitech, einschließlich Hot Plug.

Meine Regel lautet:

/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"

Der Speicherort von XAUTHORITY wird von dem kopiert, was ich in einer Shell sehe.

Ich habe einen Aufruf zum Logger im Skript, und dieser wird mehrmals aufgerufen (warum?). Die Udev-Regel funktioniert also, obwohl ich erwartet hatte, dass sie nur einmal aufgerufen wird.

Es hat einen gewissen Effekt, weil es meine Einstellungen für das natürliche Scrollen durcheinander bringt ... dasselbe Skript aktiviert das natürliche Scrollen, aber nach dem Aufruf von udev werden die Einstellungen für das natürliche Scrollen zurückgesetzt. Es ist also schlimmer als ein Fehler, es bringt tatsächlich meine Einstellungen durcheinander :)

Wenn das Skript manuell ausgeführt wird, funktioniert es einwandfrei. Unabhängig davon, wie oft ich es aufrufe.

Bearbeiten

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

Wird diese Berechtigungseinstellung ein Problem darstellen?

Antwort1

Dies ist möglich mit einer Konfigurationsdatei auf/usr/share/X11/xorg.conf.d/41-libinput-local.conf

Diese Inhalte funktionieren gerätespezifisch:

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

Es funktioniert, wenn das Gerät nach Beginn der Sitzung per Hot Plug angeschlossen wird, und bleibt während des Suspendierens/Fortsetzens bestehen, wie von Tim (OP) berichtet.

Verweise:

verwandte Informationen