Sorgen Sie dafür, dass die XInput-Einstellungen auch nach dem Ausschalten der USB-Maus bestehen bleiben (aber immer noch verbunden ist).

Sorgen Sie dafür, dass die XInput-Einstellungen auch nach dem Ausschalten der USB-Maus bestehen bleiben (aber immer noch verbunden ist).

Ich möchte, dass die XInput-Einstellungen für meine USB-Maus erhalten bleiben, nachdem sie aus- und wieder eingeschaltet wurde. Wie kann ich dieses Ereignis überwachen?

Das funktioniert nicht, da ich den USB-Empfänger nie ausstecke: Wie kann ich dafür sorgen, dass die Xinput-Einstellungen auch nach dem Aus- und Wiedereinstecken der Geräte sowie nach dem Herunterfahren, Neustarten usw. erhalten bleiben?

Soweit ich verstanden habe, kann udev für HW-Erkennungsanwendungen verwendet werden, aber es scheint nicht in der Lage zu sein, Statusänderungen im Gerät wie beispielsweise einem Logitech Unifying Receiver zu erkennen.

Ich denke, der Schlüssel zur Lösung dieses Problems liegt darin, Ereignisse im Receiver erfolgreich zu verfolgen und ein Skript zum Ausführen des Xinput-Befehls zu schreiben. Weiß jemand, wie ich dieses Ereignis erkennen kann? Solaar kann dies natürlich erkennen, aber das bedeutet nicht, dass es für einen Linux-Laienbenutzer einfach ist.

Danke!

Antwort1

Ich habe dieses Problem anhand eines Vorschlags gelöst, der aus einem anderen Beitrag im Unix-Stack Exchange stammte.

Kurz gesagt, ich führe ein Shell-Skript im Hintergrund aus, das alle 2 Sekunden eine Schleife durchläuft und nach einer Änderung an der Maus sucht. Wenn es eine findet, führt es den Xinput-Befehl erneut aus.

Die ursprüngliche (und einfachere) Lösung ist hier veröffentlicht:

https://unix.stackexchange.com/questions/332573/how-to-make-xinput-commands-permanent/340594#340594

Hier ist das Skript, das ich ausführe ~/.xinitrc:

# Map mouse button 8 (top right) to button 2 (top left) and vice versa, run when changes to the mouse occur
while true; do
        NEW_MOUSEID=$(xinput | grep "Expert Mouse" | grep -o -E '[0-9]+' | head -n 1)
        if [ "$MOUSEID" != "$NEW_MOUSEID" ]; then
                MOUSEID=$NEW_MOUSEID
                if [ "$MOUSEID" != "" ]; then
                        xinput --set-button-map $MOUSEID 1 8 3 4 5 6 7 2 9 10 11 12
                fi
        fi
        sleep 2
done &

Grundaufbau:

  • Achten Sie alle 2 Sekunden auf Änderungen der USB-ID von xinput
  • Wenn die Maus-ID leer ist, besteht keine Verbindung. Führen Sie xinput nicht aus (sonst erhalten Sie eine Fehlermeldung).
  • Die Analyse des xinputBefehls gibt nur die USB-Geräte-ID für die Maus „Expert Mouse“ zurück, z. B.: „14“

Beachten Sie, dass in der ursprünglichen Antwort vorgeschlagen wird, auf Änderungen zu achten lsusbund den Befehl dann erneut auszuführen. Das funktioniert genauso gut.

verwandte Informationen