18

Я использую свою мышь обеими руками и люблю переключаться назад и вперед по соображениям комфорта. Однако это усложняется тем, что приходится каждый раз проходить около миллиарда слоев меню, чтобы менять кнопки. Есть ли простой способ создать одну комбинацию клавиш, которая поменяла бы меня левой и правой кнопкой мыши?

Изменить: Моя ОС Windows 7.

10 ответов10

15

Как упоминалось в blsub6, вы можете изменить значение реестра (с помощью команды, вызываемой из командного файла):

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

или же

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

Однако вам необходимо выйти из системы, прежде чем она вступит в силу.

Лучшее решение - создать крошечный .exe-файл с C # для замены настроек, как описано в ответах на этот вопрос.

Создайте текстовый файл, который вы можете назвать swapmouse.cs , содержащий это:

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
        }
    }
}

И скомпилируйте его в swapmouse.exe с помощью этой команды:

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

Затем вы просто дважды щелкаете по ярлыку к этому файлу, чтобы поменять местами кнопки мыши. Это вступает в силу немедленно.

5

Вот приложение для этого: http://code.google.com/p/mouseswap/

Если у вас установлен AutoIt , вот скрипт для запуска в файле au3:

#NoTrayIcon

HotKeySet("#a","MouseSwap")

Global $Buttons

While 1
   Sleep(50)
WEnd

Func MouseSwap()
   If $Buttons = 0 Then
      DllCall("user32.dll", "int", "SwapMouseButton", "int", 1)
      $Buttons = 1
      SplashTextOn("","E8",280,180,-1,-1,33,"Wingdings",80)
      Sleep(600)
      SplashOff()
   Else
      DllCall("user32.dll", "int", "SwapMouseButton", "int", 0)
      $Buttons = 0
      SplashTextOn("","8F",280,180,-1,-1,33,"Wingdings",80)
      Sleep(600)
      SplashOff()
   EndIf
EndFunc
3

Чем лучше код AHK:

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

Я также использую мышь обеими руками, а также Win7, этот код работает хорошо!

3

Клавиатурный способ переключения кнопок мыши в Windows Vista (возможно, 7) и выше:

  1. Ключ Windows
  2. типа "мышь"
  3. Пробел
  4. Войти

Да, это 8 нажатий клавиш, но не так уж плохо ... Я сделал это кучу

2

Это версия Autohotkey (изменена / основана на 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)
    }

Это прекрасно работает со всеми Windows (включая Windows 10). Я обычно сопоставляю это с горячей клавишей, такой как клавиша "F12" на моей клавиатуре (используя AutoHock), и я могу мгновенно переключаться между левой и правой кнопкой мыши нажатием клавиши. Там нет необходимости гадить с загрузкой панели управления или настройки реестра / перезагрузки.

0

Несколько хороших советов по AutoHotkey здесь, но этот меняет местами кнопки в Windows и выдает всплывающее уведомление.

Это копия скрипта mouseswap Autoit, упомянутого слюдой.

#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

Более краткая альтернатива без всплывающего окна:

Swapped := DllCall("SwapMouseButton", Int, 0)
if Swapped = 0
 DllCall("SwapMouseButton", Int, 1)
-1

Я не знаю о сочетаниях клавиш, но вы можете сделать два reg-файла, которые делают то, что описано здесь. Просто нажмите и прочь.

Если вы действительно хотите сойти с ума, установите скрипт AutoHotkey, который запускает reg-файлы

-1

Как упомянуто Мивк, это прямо вперед и работает как шарм. Это то, что упоминал Мивк

Создайте текстовый файл, который вы можете назвать swapmouse.cs, содержащий это:

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
        }
    }
}

И скомпилируйте его в swapmouse.exe с помощью этой команды:

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

Теперь вы можете создать папку с именем C:\Program Files\swapmouse и скопировать swapmouse.exe во вновь созданную папку.

Теперь создайте ярлык для этого файла swapmouse.exe на рабочем столе.

Под свойством файла ярлыка добавьте комбинацию клавиш, в этом случае я использовал «Ctrl + Alt + S» и применил.

Теперь каждый раз, когда вы нажимаете «Ctrl + Alt + S», кнопка мыши будет меняться.

Нет никакой зависимости от мыши, чтобы изменить кнопку мыши больше.

-1

Мне нравится избегать использования случайных exe-файлов, когда это возможно, вот решение AutoHotKey, основанное на ранее упомянутом решении для клавиатуры.

Сделайте ярлык с именем c:\mouse.ink, чтобы открыть настройки мыши.

Используйте этот скрипт AHK:

#a::
Run c:\mouse
sleep 250
send {Space}
Send {Enter}
return
-1

Вы смотрели на: https://www.eithermouse.com/

Это скомпилированный скрипт autohotkey, который позволяет вам менять кнопки в системном трее, а также позволяет одновременно использовать две мыши. У меня есть две мыши, которые я чередую между левой и правой руками. И это автоматически меняет угол наклона курсора и кнопки мыши.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .