Wie tausche ich primäre und sekundäre Maustasten von der Befehlszeile aus oder mit einem Hotkey aus, ohne ein Programm neu zu starten oder zu kompilieren?

809
ludinom

Mein achtjähriger Sohn ist Linkshänder und ich bin Rechtshänder. Ich möchte in der Lage sein, primäre und sekundäre Maustasten von der Befehlszeile aus schnell und einfach zu wechseln. Wir verwenden Windows 10. Ich habe dies gefunden, das C- und C # * -Lösungen bietet. Ich habe dies gefunden, das eine Lösung bietet, die einen Neustart erfordert, und außerdem einen Link zur Stack Overflow-Antwort enthält. Es scheint mir jedoch, dass dies möglich sein sollte, ohne auf eine kompilierte Sprache zurückzugreifen. Ich würde mich über eine Lösung freuen, die PowerShell, Python, Perl und Nircmd verwendet Dienstprogramm usw. verwendet, aber ich würde lieber nicht auf eine kompilierte Sprache zurückgreifen.

Danke für deine Hilfe.

Bearbeiten: Die Frage wurde geändert, um "... oder mithilfe eines Hotkeys ..." hinzuzufügen, da ich dies letztendlich mit einem Autohotkey-Hotkey tun wollte. es stellt sich heraus, dass Autohotkey den Swap selbst durchführen kann. Ich nahm an, dass die Antwort zB ein Powershell-Skript wäre, das ich mit einem Autohotkey-Hotkey aufrufen würde. Sehen Sie sich die akzeptierte Antwort an.

0
Würden Sie mit einem AutoHotkey-Skript zufrieden sein? Es wäre ziemlich einfach, eine Toggle-Funktion zu erstellen. Confuzing vor 6 Jahren 0
Dies funktioniert zwar nicht mit allen Programmen. Confuzing vor 6 Jahren 0
Ich habe das noch nie gemacht, und ich kenne Powershell nicht gut, schaue aber unter "DLLImport" nach und sehe beispielsweise (https://stackoverflow.com/questions/24391367). Fügen Sie das mit den Informationen aus Ihrem C # -Beispiel zusammen. Ich habe Beispiele für VBS-Windows-API-Hacks gesehen, bei denen Sie Excel durch Anhängen einer temporären Funktion automatisieren. Dies ist jedoch eine haarige IMO Yorik vor 6 Jahren 0
Verwirrend wäre Autohotkey in Ordnung. Ich verwende es häufig (z. B. habe ich beim Schreiben dieser Frage mein normales Skript so geändert, dass ich "; sharp" eingeben kann und ein scharfes Symbol eingefügt wird). Ich wusste nicht, dass Autohotkey dies tun kann. Ich kann es an diesem Punkt wahrscheinlich selbst herausfinden. Vielen Dank ludinom vor 6 Jahren 0
Yorick, vielen Dank. Ich werde wahrscheinlich die AHK-Route gehen. ludinom vor 6 Jahren 0
Ich verstehe den Unterschied zwischen der Verwendung einer kompilierten Sprache und dem Ausführen von nircmd (das in einer kompilierten Sprache geschrieben wurde) nicht ganz ... grawity vor 6 Jahren 0
Grawity, vielen Dank für Ihre Bitte um Klarstellung. Ich verwende kein C #, und derzeit verwende ich kein C (oder C ++), und es ist mir egal, einen C- oder C # -Compiler einzurichten. Dies wäre sicherlich eine Option, aber da es einfachere Wege gibt, dies ohne einen Compiler zu tun, würde ich das vorziehen. Obwohl ich von der Befehlszeile aus nach einer Möglichkeit gefragt habe, hätte ich dann einen Autohotkey-Hotkey eingerichtet, um diese Befehlszeile aufzurufen. es stellt sich heraus, dass Autohotkey den Swap selbst durchführen kann. Ich hoffe, dass dies meine Präferenz klarstellt. ludinom vor 6 Jahren 0

2 Antworten auf die Frage

3
Confuzing

Hier ist was ich für AHK gefunden habe. Schaltet einfach die Maustasten mit umctrl+alt+m

swap: swap=false  ^!m:: swap := !swap   #if !swap RButton::LButton LButton::RButton 
Danke vielmals! Ich hatte keine Gelegenheit, darauf zurückzukommen und es selbst zu schreiben, aber Sie haben mir die Mühe erspart. Tut mir leid, dass ich Ihnen die Mühe gemacht habe. Ich hätte es herausfinden können, wenn Sie mich in Richtung AHK gerichtet haben. Ich habe dies in mein Standard-AHK-Skript geschrieben, das beim Start ausgeführt wird, und einen anderen Schlüssel verwendet (normalerweise verwende ich ^ #! Für meine AHK-Hotkeys, aber ^ #! M wird bereits von Remember the Milk verwendet, also habe ich ^ #! S verwendet. zum tauschen) und es funktioniert super. Es tut mir leid, dass ich nicht verteidigen kann. oder besser gesagt, ich habe zugestimmt, aber es zählt nicht, weil ich einen Ruf von weniger als 15 habe. Daher wird meine Meinung aufgezeichnet, aber nicht angezeigt. ludinom vor 6 Jahren 0
@Confuzing, sehr schöne Lösung. Nur eine Frage, es wird immer als Linkshänder gestartet, wissen Sie, wie Sie es standardmäßig als Rechtshänder starten lassen. Ich habe versucht, "swap = false" zu ändern, aber das hilft nicht. Vielen Dank! electroid vor 5 Jahren 0
@electroid Das Ändern des Auslagerungswerts in true sollte funktionieren. Sie können jedoch die Option "#if! Swap" in "#if swap" ändern oder sie möglicherweise einfacher in Windows-Mauseinstellungen umkehren. Confuzing vor 5 Jahren 1
@Confuzing, Ihre Lösung ändert den `#if! Swap` in` #if swap` und funktioniert einwandfrei! Vielen Dank! electroid vor 5 Jahren 0
1
otter.pro

Dies ist die Antwort, die auf https://superuser.com/a/1357020/790554 veröffentlicht wurde .

Dies ist die Autohotkey-Version (modifiziert / basiert auf https://github.com/jNizM/AHK_DllCall_WinAPI/blob/master/src/Mouse%20Input%20Functions/SwapMouseButton.ahk ).

; autohotkey code - mapped to F12 F12:: buttonState := DllCall("user32.dll\SwapMouseButton", "UInt", 1) if buttonState <> 0 { buttonState := DllCall("user32.dll\SwapMouseButton", "UInt", 0) } 

Dies funktioniert gut mit allen Windows (einschließlich Windows 10). Normalerweise ordne ich es einem Hotkey wie "F12" auf meiner Tastatur zu (mithilfe von Autohotkey), und ich kann sofort mit dem Drücken einer Taste zwischen linker und rechter Maustaste wechseln.