我用双手使用鼠标,为了舒适起见,我喜欢来回切换。但是,每次切换按钮时都需要经过无数层菜单,这很困难。有没有一种简单的方法可以创建一个可以切换鼠标左键和右键的键盘快捷键?
编辑:我的操作系统是 Windows 7。
答案1
正如 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
但你需要退出才能生效。
这更好的解决方案是用 C# 制作一个很小的 .exe 来交换设置,如这个问题。
创建一个可调用的文本文件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
在较新版本的 .NET 中,您可能需要/out:swapmouse.exe
添加/target:exe
:
"[%SystemRoot%]\Microsoft.NET\Framework64\[version]\csc" /out:swapmouse.exe /target:exe swapmouse.cs
然后你只需双击该 exe 即可交换鼠标按钮。它会立即生效。
或者,正如 rad 提到的,您可以创建一个快捷方式,并在其属性的快捷方式选项卡中定义键盘快捷键/热键。
答案2
更好的 AHK 代码:
Run, main.cpl
Send, {Space}{Enter}
我也用双手使用鼠标,并且也拥有 Win7,这个代码运行良好!
答案3
这是 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”键(使用 Autohotkey),并且我可以通过按下一个键立即在鼠标左键和右键之间切换。无需费力加载控制面板或设置注册表/重新启动。
答案4
在 Windows Vista(可能是 7)及更高版本上切换鼠标按钮的键盘方式:
- Windows 键
- 输入“鼠标”
- 空格键
- 进入
是的,需要按 8 次键,但还不错……我已经按了很多次了