Сочетание клавиш для переключения кнопок мыши
Я использую свою мышь обеими руками и люблю переключаться назад и вперед из соображений комфорта. Тем не менее, это затрудняется тем, что приходится каждый раз проходить около миллиона слоев меню, чтобы менять кнопки. Есть ли простой способ создать одну комбинацию клавиш, которая поменяла бы левую и правую кнопки мыши?
Изменить: Моя ОС Windows 7.
11 ответов
Как упоминалось в 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
Затем вы просто дважды щелкаете по ярлыку к этому файлу, чтобы поменять местами кнопки мыши. Это вступает в силу немедленно.
Это версия 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), и я могу мгновенно переключаться между левой и правой кнопкой мыши нажатием клавиши. Там нет необходимости гадить с загрузкой панели управления или настройки реестра / перезагрузки.
Чем лучше код AHK:
Run, main.cpl
Send, {Space}{Enter}
Я также использую мышь обеими руками, а также имею Win7, этот код работает хорошо!
Вот приложение для этого: http://code.google.com/p/mouseswap/
Если у вас установлен AutoIt, вот скрипт для запуска в файле au3:
#NoTrayIcon HotKeySet ("# а","MouseSwap") Глобальные кнопки $ Пока 1 Sleep(50) венед Func MouseSwap() Если $Buttons = 0, то DllCall("user32.dll", "int", "SwapMouseButton", "int", 1) $Buttons = 1 SplashTextOn("","Е8",280180,-1,-1,33,"Wingdings",80) Sleep(600) SplashOff() еще DllCall("user32.dll", "int", "SwapMouseButton", "int", 0) $Buttons = 0 SplashTextOn("","8F",280180,-1,-1,33,"Wingdings",80) Sleep(600) SplashOff() EndIf EndFunc
Клавиатурный способ переключения кнопок мыши в Windows Vista (возможно, 7) и выше:
- Ключ Windows
- типа "мышь"
- Пробел
- Войти
Да, это 8 нажатий клавиш, но не так уж плохо... Я сделал это кучу
Решение AC++ :
#include "winuser.h"
int main(){
if (SwapMouseButton(0) == 0)
SwapMouseButton(1);
return 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)
Мне нравится избегать использования случайных exe-файлов, когда это возможно, вот решение AutoHotKey, основанное на ранее упомянутом решении для клавиатуры.
Сделайте ярлык с именем c:\mouse.ink, чтобы открыть настройки мыши.
Используйте этот скрипт AHK:
#a::
Run c:\mouse
sleep 250
send {Space}
Send {Enter}
return
Вы смотрели на: https://www.eithermouse.com/
Это скомпилированный скрипт autohotkey, который позволяет вам менять кнопки на панели задач sys, а также позволяет одновременно использовать две мыши. У меня есть две мыши, которые я чередую между левой и правой руками. И это автоматически меняет угол наклона курсора и кнопки мыши.
Как упомянуто Мивк, это прямо вперед и работает как шарм. Это то, что упоминал Мивк
Создайте текстовый файл, который вы можете назвать 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", кнопка мыши будет меняться.
Нет никакой зависимости от мыши, чтобы изменить кнопку мыши больше.
Я не знаю о сочетаниях клавиш, но вы можете сделать два reg-файла, которые делают то, что описано здесь . Просто нажмите и прочь.
Если вы действительно хотите сойти с ума, установите скрипт AutoHotkey, который запускает reg-файлы