Primäre Maustaste ändern für Linkshänder-Maus

tursi

Lieutenant
Registriert
Okt. 2020
Beiträge
611
Hallo,

ich nutze 2 normale Rechtshänder-Mäuse und 1 Lift for Business Linkshänder-Maus. Alle nutze ich links und auch rechts. Nun ist die Primäre Maustaste bei den beiden Rechtshänder-Mäusen die linke Taste, was in Ordnung ist. Bei der Linkshänder-Maus ist es aber die rechte Taste. Wenn ich nun die Maus wechsle, würde ich gerne mausspezifisch auch bei der Linkshänder-Maus die linke Maustaste als die Primärtaste konfiguriert haben. Jedoch kann ich das nur global über die Systemeinstellungen für alle 3 Mäuse ändern. Hat jemand eine Idee, wie man es mausspezifisch ändern kann?

Im schlimmsten Fall dann via Skript manuell, lieber aber eigentlich permanent.

Grüsse
 
Versuche es mal per Powershell-Skript. Wichtig, vorher die Hardware-ID der Linkshänder-Maus im Geräte-Manager heraussuchen und im Skript entsprechend einfügen.


Hier eine Version die prüft, ob die Linkshänder-Maus angeschlossen ist und dann die Taste ändert:

# PowerShell-Skript zum Ändern der Primärtaste für die Linkshänder-Maus

# ID der Linkshänder-Maus (Beispiel)
$leftHandedMouseId = "HID\VID_046D&PID_C52D" # Beispiel-ID der Linkshänder-Maus

# Geräteliste abrufen und prüfen, ob die Linkshänder-Maus angeschlossen ist
$leftHandedMouseConnected = Get-WmiObject Win32_PnPEntity | Where-Object { $.PNPClass -eq "Mouse" -and $.DeviceID -like "$leftHandedMouseId" }

if ($leftHandedMouseConnected) {
Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" -Name SwapMouseButtons -Value 0
[System.Windows.Forms.MessageBox]::Show("Die Primärtaste wurde für die Linkshänder-Maus auf die linke Taste konfiguriert.", "Mauskonfiguration")
}

Edit: Skript eingekürzt ;-)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Kuristina
Ich hätte jetzt nicht mit so einem langen Powershell-Skript gerechnet. ^^ Mit Linux und X11 wäre es einfach:

Code:
mausname="Wings Tech Xtrfy M42"
device_id=$(xinput list | grep "$mausname" | grep -v "Keyboard" | grep -o 'id=[0-9]*' | cut -d= -f2)
xinput set-button-map $device_id 3 2 1

und einfach in die .bashrc. Aber der TE nutzt ja sicher Windows?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Towatai
Okay, dann möchte ich auch meine hochkomplexen Coding-Skills mit AutoHotKey zeigen, wie man die linke und rechte Maustaste vertauschen kann:

Code:
LButton::RButton
RButton::LButton

😅

  • Texteditor öffnen
  • Code einfügen
  • Textdatei als "SwapMouseButtons.ahk" oder so etwas speichern
  • die .ahk Datei anklicken
 
  • Gefällt mir
Reaktionen: Kuristina und Towatai
Dafür muss autohotkey installiert sein. Windows oder Linux kann damit sonst nichts anfangen.
 
  • Gefällt mir
Reaktionen: aragorn92
@gidra
Ich verstehe das Problem nicht. Apps sind doch dazu da, um installiert zu werden.
Ich installiere beispielsweise niemals zusätzliche Software oder Treiber für Maus und Tastatur, da AutoHotKey mehr kann als Logitech, Razer, usw. anbieten.
 
AI-Nadja schrieb:
Ich verstehe das Problem nicht.
cmd oder bat werden von Windows als solche erkannt. Mit autohotkey Erweiterung kann Windows nichts anfangen. Ich habe das schon gemacht, um bei der neuen Maus die Zusatztasten zu programmieren. Hatte sehr lange welche von Logitech und die hatte nur die 3 Standardtasten. Man kann anschliessend die fertige ahk Datei ins exe konvertieren. Die lässt sich dann auch ohne autohotkey per Autostart mit starten.
 
@gidra
Ja, man kann es zu exe konvertieren, was man direkt im Startfenster sieht, wenn man AutoHotKey installiert hat.

Gleich die zweite Option:
1722783492912.png


Ich selbst ziehe es vor, die Script-Dateien mit einer Tastenkombination zu starten oder anzuhalten, da ich unterschiedliche Tastenbelegungen bzw. Skripte nutze. (z.B. für Home Office oder für ausgewählte Spiele)
Funktioniert sowohl auf Windows, als auch Linux wunderbar.
 
Towatai schrieb:
Versuche es mal per Powershell-Skript. Wichtig, vorher die Hardware-ID der Linkshänder-Maus im Geräte-Manager heraussuchen und im Skript entsprechend einfügen.


Hier eine Version die prüft, ob die Linkshänder-Maus angeschlossen ist und dann die Taste ändert:



Edit: Skript eingekürzt ;-)
Sorry, nutze hier Win10, irgendwann mal Win11. Vergessen, anzugeben.

Wenn ich das Skript ausführe, kriege ich leider diese Fehlermeldung:

$.PNPClass : Die Benennung "$.PNPClass" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder
eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern
enthalten), und wiederholen Sie den Vorgang.
Ergänzung ()

areiland schrieb:
Hier: https://www.win-10-forum.de/threads/maustasten-per-makro-tauschen.3116/#post-17913 hätte ich auch noch was. Und das könnte man dann über die Aufgabenplanung automatisieren, indem man das Ereignisprotokoll auswertet und beim anschliessen der Mäuse jeweils in den passenden Modus schalten lässt.
Danke aber das ist eine exe. Powershell Skript wäre mir da lieber.
Ergänzung ()

Ich kann zwar mit diesem Befehl hier:

Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" -Name SwapMouseButtons -Value 0

den entsprechenden Registrywert von 0 auf 1 und wieder zurück setzen. Jedoch wechselt das nichts an der Bedienung, es ist immer noch die linke Maustaste die primäre :(

Das hier hat funktioniert:


Code:
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null

$SwapButtons = Add-Type -MemberDefinition @'
[DllImport("user32.dll")]
public static extern bool SwapMouseButton(bool swap);
'@ -Name "NativeMethods" -Namespace "PInvoke" -PassThru

Write-Host "Mouse buttons currently swapped?" ([System.Windows.Forms.SystemInformation]::MouseButtonsSwapped)

[bool]$returnValue = $SwapButtons::SwapMouseButton(!([System.Windows.Forms.SystemInformation]::MouseButtonsSwapped))

Write-Host "Mouse buttons currently swapped?" ([System.Windows.Forms.SystemInformation]::MouseButtonsSwapped)
 
Zuletzt bearbeitet:
Zurück
Oben