Machen Sie Maus Linkshänder und Touchpad Rechtshänder

10

Ich sehe, dass ich Maus und Touchpad in einem Panel konfigurieren kann (Ubuntu 13.10, Standardeinstellungen, Gnome). Welches ist zu einem gewissen Grad. Ich möchte nämlich, dass das Touchpad anders konfiguriert ist als die Maus und ...

Wenn ich eine (USB) Maus angeschlossen habe, benutze ich sie normalerweise für Linkshänder. Deshalb schalte ich die Tasten auf Linkshänder. Aber wenn ich das Touchpad benutze, fühle ich mich mit dieser Art von Konfiguration ein bisschen verloren. Deshalb möchte ich es rechtshändig haben.

Gibt es eine Möglichkeit, Folgendes zu erreichen: Wenn ich eine Maus einstecke (bzw. wenn sie erkannt wird), automatisch auf Linkshänder umschalten und wenn ich den Stecker aus der Steckdose ziehe, automatisch auf Rechtshänder umschalten?

Löwe
quelle

Antworten:

10

Ich verstehe Ihre Frustration, aber dieses Problem kann mit Hilfe des xinputTools sehr einfach gelöst werden .

Schließen Sie zuerst Ihre USB-Maus an und führen Sie dann den folgenden Befehl aus:

xinput list

um das idvon deiner Maus zu sehen. Die Ausgabe des obigen Befehls kann ähnlich sein wie:

xinput | Katze
⎡ ID des virtuellen Kernzeigers = 2 [Hauptzeiger (3)]
⎜ ↳ XTEST-Zeiger-ID des virtuellen Kerns = 4 [Slave-Zeiger (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad-ID = 14 [Slave-Zeiger (2)]
⎜ ↳ USB-Maus-ID = 11 [Slave-Zeiger (2)]
⎣ ID der virtuellen Kerntastatur = 3 [Haupttastatur (2)]
    ...

Im obigen Beispiel hat die USB-Maus id=11. Wir werden dies idim folgenden Befehl verwenden, der die Tasten für Linkshänder nur für die USB-Maus (und nicht für das Tauchpad) austauscht:

xinput set-button-map 11 3 2 1

Allgemein:

xinput set-button-map id 3 2 1

Verwenden Sie zum Zurücksetzen der Änderung:

xinput set-button-map id 1 2 3

Um die Änderung dauerhaft zu machen, fügen Sie den folgenden Befehl an Startup - Anwendungen (Suche in Dash für Startup - Anwendungen ):

sh -c "xinput set-button-map id 3 2 1"

Aktualisieren:

Da sich die ID nach dem Neustart möglicherweise ändert, der Name der USB-Maus jedoch nicht, können Sie auch nach dem Namen der Maus suchen und diese anwenden. Um die Details zu überspringen reg. Wenn Sie den Namen auswählen, sieht die endgültige Lösung folgendermaßen aus:

für id in `/ usr / bin / xinput list | / bin / grep ' USB-Maus ' | / bin / grep -o [0-9] [0-9] `; xinput set-button-map $ id 3 2 1; erledigt;

Packen Sie es in die oben genannten Startup-Anwendungen, die Sie endlich erhalten:

sh -c "für ID in` / usr / bin / xinput-Liste | / bin / grep ' USB-Maus ' | / bin / grep -o [0-9] [0-9] `; mache xinput set-button-map $ id 3 2 1; erledigt; "
Radu Rădeanu
quelle
2
Ich weiß nicht, ob ich Ihren Beitrag bearbeiten soll oder nicht. Ihr Ansatz gab mir die richtige Richtung, aber das Problem war / ist, dass ein Neustart die ID der Maus ändern könnte. Deshalb habe ich es geändert sh -c "for id in '/usr/bin/xinput list | /bin/grep 'Razer' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"und das funktioniert (vielleicht muss man sich um die richtigen Bindestriche kümmern). Danke für den Hinweis.
LeO
@LeO In meinem Fall ändert ein Neustart die ID der Maus nicht. Ich habe nicht mit mehr Mäusen getestet oder die Position des USB-Anschlusses geändert.
Radu Rădeanu
@LeO Wie auch immer, deine Idee ist sehr gut, also mach weiter, bitte bearbeite die Antwort. Wenn nicht, werde ich es später tun.
Radu Rădeanu
8

Es gibt einen noch einfacheren Weg als in Radu Rădeanus Antwort . xinputakzeptiert den Namen des Eingabegeräts als Alternative zu seiner numerischen ID. Da Ihre USB-Maus wahrscheinlich generisch behandelt wird, ist der Name höchstwahrscheinlich USB Mouse. Daher müssen Sie wahrscheinlich nicht einmal laufen xinput list.

So wird Ihr xinput set-button-mapmit diesem Namen anstelle der numerischen ID:

xinput set-button-map "USB Mouse" 3 2 1

Dies tritt an die Stelle von und sollte dasselbe erreichen, indem es zu einer linkshändigen Maus gemacht wird, genau wie bei Verwendung der numerischen ID-Methode . (Und das Ersetzen durch wird immer noch funktionieren, um es auf eine rechtshändige Maus umzustellen.)xinput set-button-map id 3 2 13 2 13 2 11 2 3

Dies hat den Vorteil, dass es, sofern es anfänglich funktioniert, über Neustarts hinweg weiterhin funktioniert, ohne dass die ID-Nummer des Geräts mithilfe langer, komplexer Befehle abgerufen werden muss.

Reedstrm
quelle
1
Diese Antwort verdient mehr Gegenstimmen.
Mephisto
In meinem Fall habe ich eine drahtlose Maus + Tastatur, daher xinput listwerden 2 Einträge mit demselben Namen angezeigt ("2.4G Wireless Keyboard & Mouse"), außer dass einer "[Slave-Zeiger (2)]" und der andere "[Slave-Tastatur (3") sagt )] ". Bei Ihrer Lösung tritt also der Fehler "Es gibt mehrere Geräte mit dem Namen" 2.4G Wireless Keyboard & Mouse "" auf. Im Moment verwende ich Radus Lösungszusatz grep 'slave pointer'. Ich frage mich, ob xinput es erlaubt, irgendwie anzugeben, dass wir uns auf einen Zeiger beziehen, ohne dies alles zu tun.
Matiascelasco
1

Ich habe festgestellt, dass der Startbefehl in der anderen Antwort nur funktioniert, wenn die ID eine zweistellige Zahl ist. Hier sind meine Änderungen, die sowohl für ein- als auch für zweistellige Zahlen funktionieren sollten:

In Startanwendungen

bash -c "for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*`; do xinput set-button-map ${id:3} 3 2 1; done;"
Robbie
quelle
0
device_id=$(/usr/bin/xinput list \
            | /bin/grep 'slave  pointer' \
            | /bin/grep 'Wireless Keyboard&Mouse' \
            | tr " " "\n" \
            | /bin/grep "id=" \
            | /bin/grep -o [0-9][0-9]* \
        )
/usr/bin/xinput set-button-map $device_id 3 2 1 

Hier ist eine ausführlichere Lösung, die zwei Probleme löst:

  • Es funktioniert für Geräte-IDs mit einer beliebigen Anzahl von Ziffern (wie die @robbie-Lösung, jedoch etwas anders geschrieben).
  • Berücksichtigt, dass der Gerätename möglicherweise dupliziert wird. In meinem Fall habe ich eine drahtlose Maus + Tastatur, daher xinput listwerden 2 Einträge mit demselben Namen angezeigt ("2.4G Wireless Keyboard & Mouse"), außer dass einer "[Slave-Zeiger (2)]" und der andere "[Slave-Tastatur (3") sagt )] ". Bei der @ reedstrm-Lösung hatte ich den Fehler "Es gibt mehrere Geräte mit dem Namen '2.4G Wireless Keyboard & Mouse'.", Während bei der @ Radu Rădeanu-Lösung forüber zwei IDs iteriert wurde, eine für die Maus und eine für die Tastatur mit einer Fehlermeldung "Gerät hat keine Tasten" mit der zweiten.
matiascelasco
quelle