Skrót klawiaturowy do zamiany przycisków myszy

22

Używam myszy obiema rękami i lubię przełączać się tam iz powrotem ze względów komfortu. Jest to jednak utrudnione, ponieważ trzeba przejść przez około zillion warstw menu, aby za każdym razem zamieniać przyciski. Czy istnieje prosty sposób na utworzenie pojedynczego skrótu klawiaturowego, który zamieniłby mój lewy i prawy przycisk myszy?

Edycja: Mój system operacyjny to Windows 7.

dsimcha
źródło

Odpowiedzi:

19

Jak wspomniano w blsub6, możesz zmienić wartość rejestru (za pomocą polecenia wywoływanego z pliku wsadowego):

REG ADD "HKCU\Control Panel\Mouse" /t REG_SZ /v SwapMouseButtons /d 1 /f

lub

REG ADD "HKCU\Control Panel\Mouse" /t REG_SZ /v SwapMouseButtons /d 0 /f

Musisz się jednak wylogować, zanim zacznie obowiązywać .

Lepszym rozwiązaniem jest, aby niewielka .exe z C #, aby zamienić ustawienie, jak opisano w odpowiedzi na to pytanie .

Utwórz plik tekstowy, który możesz wywołać swapmouse.cs, zawierający:

using System.Runtime.InteropServices;
using System;

class SwapMouse
{
    [DllImport("user32.dll")]
    public static extern Int32 SwapMouseButton(Int32 bSwap);

    static void Main(string[] args)
    {
        int rightButtonIsAlreadyPrimary = SwapMouseButton(1);
        if (rightButtonIsAlreadyPrimary != 0)
        {
            SwapMouseButton(0);  // Make the left mousebutton primary
        }
    }
}

I skompiluj to swapmouse.exez tym poleceniem:

"%SystemRoot%\Microsoft.NET\Framework64\v3.5\csc" swapmouse.cs

Następnie wystarczy dwukrotnie kliknąć skrót do tego pliku exe, aby zamienić przyciski myszy. Odbywa się natychmiast.

mivk
źródło
3
Aby rozpocząć exe za pomocą skrótu klawiaturowego :1. Right-click on the exe and select "Create Shortcut" 2. Move the shortcut to "C:\ProgramData\Microsoft\Windows\Start Menu" or the desktop 3. Right click on the shortcut, go to the Shorcut tab and select a shortcut key
Rad
5

Oto aplikacja do tego: http://code.google.com/p/mouseswap/

Jeśli masz zainstalowany AutoIt , oto skrypt do uruchomienia w pliku au3:

#NoTrayIcon

HotKeySet („# a”, „MouseSwap”)

Globalne przyciski $

Podczas gdy 1
   Sen (50)
WEnd

Func MouseSwap ()
   Jeśli $ Buttons = 0 to
      DllCall („user32.dll”, „int”, „SwapMouseButton”, „int”, 1)
      Przyciski $ = 1
      SplashTextOn („”, „E8”, 280,180, -1, -1,33, „Wingdings”, 80)
      Sen (600)
      SplashOff ()
   Jeszcze
      DllCall („user32.dll”, „int”, „SwapMouseButton”, „int”, 0)
      Przyciski $ = 0
      SplashTextOn („”, „8F”, 280,180, -1, -1,33, „Wingdings”, 80)
      Sen (600)
      SplashOff ()
   EndIf
EndFunc
Mika
źródło
4

Lepszy kod AHK:

Run, main.cpl
Send, {Space}{Enter}

Używam również myszy obiema rękami, a także mam Win7, ten kod działa dobrze!

Lady3Millennium
źródło
Jest to najlepsze rozwiązanie dla osób prowadzących szybkie zmiany.
Leonid Dworzański
3

Sposób klawiatury do przełączania przycisków myszy w systemie Windows Vista (być może 7) i nowszych:

  1. Klawisz Windows
  2. wpisz „mouse”
  3. Spacja
  4. Wchodzić

Tak, to 8 naciśnięć klawiszy, ale nie jest tak źle ... Zrobiłem to sporo

Kevin Driedger
źródło
5. ALT + F4, aby zamknąć okno ustawień myszy
Przemysław Remin
2

To jest wersja Autohotkey (zmodyfikowana / oparta na 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)
    }

Działa to poprawnie ze wszystkimi systemami Windows (w tym Windows 10). Zazwyczaj odwzorowuję go na klawisz skrótu, taki jak klawisz „F12” na klawiaturze (za pomocą przycisku Autohotkey), i mogę natychmiast przełączać lewy i prawy przycisk myszy za naciśnięciem klawisza. Ładowanie panelu sterowania lub rejestrowanie / ponowne uruchamianie nie jest konieczne.

otter.pro
źródło
0

Kilka dobrych sugestii Autohotkey tutaj, ale ta zamienia przyciski bezpośrednio w systemie Windows i wyświetla powiadomienie wyskakujące.

Jest to kopia skryptu Autoit mousewap wspomnianego przez mica.

#a::
if button = 0
    {
    DllCall("SwapMouseButton", "int", 1)
    button = 1
    SplashTextOn, 120, 30, Mouse Button, Left handed
    Sleep 600
    SplashTextOff
    }
else
    {
    DllCall("SwapMouseButton", "int", 0)
    button = 0
    SplashTextOn, 120, 30, Mouse Button, Right handed
    Sleep 600
    SplashTextOff
    }
return

Krótsza alternatywa bez wyskakującego okienka:

Swapped := DllCall("SwapMouseButton", Int, 0)
if Swapped = 0
 DllCall("SwapMouseButton", Int, 1)
Iain
źródło
-1

Nie wiem o skrócie klawiaturowym, ale możesz utworzyć dwa pliki reg, które działają tak, jak tu opisano . Wystarczy kliknąć i gotowe.

Jeśli naprawdę chcesz się tym zakochać , skonfiguruj skrypt AutoHotkey, który wyzwala pliki reg

blsub6
źródło
To nie jest dobre, po prostu zmiana wpisu rejestru nie ma wpływu; przyciski pozostają niezmienione. Musisz je zrestartować lub wylogować i ponownie zalogować, aby zaczęły obowiązywać.
Synetech,
-1

Jeśli to możliwe, unikam używania losowych plików exe, oto rozwiązanie AutoHotKey oparte na wcześniej wspomnianym rozwiązaniu z klawiaturą.

Utwórz skrót o nazwie c: \ mouse.ink, który otworzy ustawienia myszy.

Użyj tego skryptu AHK:

#a::
Run c:\mouse
sleep 250
send {Space}
Send {Enter}
return
Rachunek
źródło
Plik exe to tylko skompilowany skrypt AutoIt (podobny do AutoHotkey). Zamiast exe możesz uruchomić au3.
Mika
-1

Jak wspomniał mivk, jest to proste i działa jak urok. O tym wspomniał Mivk

Utwórz plik tekstowy, który możesz nazwać swapmouse.cs, zawierający:

using System.Runtime.InteropServices;
using System;

class SwapMouse
{
    [DllImport("user32.dll")]
    public static extern Int32 SwapMouseButton(Int32 bSwap);

    static void Main(string[] args)
    {
        int rightButtonIsAlreadyPrimary = SwapMouseButton(1);
        if (rightButtonIsAlreadyPrimary != 0)
        {
            SwapMouseButton(0);  // Make the left mousebutton primary
        }
    }
}

I skompiluj go do swapmouse.exe za pomocą tego polecenia:

"%SystemRoot%\Microsoft.NET\Framework64\v3.5\csc" swapmouse.cs

Teraz możesz utworzyć folder o nazwie C: \ Program Files \ swapmouse i skopiować plik swapmouse.exe do nowo utworzonego folderu.

Teraz utwórz skrót do tego pliku swapmouse.exe na pulpicie.

Pod właściwością pliku skrótu dodaj klawisz skrótu, w tym przypadku użyłem „Ctrl + Alt + S” i zastosowałem.

Teraz za każdym razem, gdy naciśniesz „Ctrl + Alt + S”, przycisk myszy zostanie zamieniony.

Zmiana myszy nie jest już zależna od myszy.

Saad Faruque
źródło
1
Witamy w Super User! To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
DavidPostill
-1

Czy spojrzałeś na: https://www.eithermouse.com/

Jest to skompilowany skrypt auto-klucza, który pozwala zamieniać przyciski z zasobnika sys, a także umożliwia jednoczesne używanie dwóch myszy. Mam dwie myszy, których używam do przełączania lewej i prawej ręki. A to automatycznie zmienia kąt kursora i przycisku myszy.

pilot odrzutowca
źródło
Byłoby to bardziej pomocne, gdybyś załączył do tego skrypt. W przeciwnym razie jest to lepsze jako komentarz.
Synetech,