Answers:
如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
然后,您只需双击该exe的快捷方式即可交换鼠标按钮。立即生效。
这是一个适用于此的应用程序:http : //code.google.com/p/mouseswap/
如果您安装了AutoIt,则以下是要在au3文件中运行的脚本:
#NoTrayIcon HotKeySet(“#a”,“ MouseSwap”) 全局$ Button 虽然1 睡眠(50) 结束 Func MouseSwap() 如果$ Buttons = 0,则 DllCall(“ user32.dll”,“ int”,“ SwapMouseButton”,“ int”,1) $ Buttons = 1 SplashTextOn(“”,“ E8”,280,180,-1,-1,33,“ Wingdings”,80) 睡眠(600) SplashOff() 其他 DllCall(“ user32.dll”,“ int”,“ SwapMouseButton”,“ int”,0) $ Buttons = 0 SplashTextOn(“”,“ 8F”,280,180,-1,-1,33,“ Wingdings”,80) 睡眠(600) SplashOff() 万一 EndFunc
更好的AHK代码:
Run, main.cpl
Send, {Space}{Enter}
我也用双手鼠标,也有Win7,这段代码不错!
在Windows Vista(可能是7)及更高版本上切换鼠标按钮的键盘方式:
是的,这是8个按键,但还算不错...我已经做了很多
这是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建议,但这是直接交换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)
我不知道键盘快捷键是什么,但是您可以制作两个reg文件来执行此处所述的操作。只需单击即可离开。
如果您真的想了解它,请设置一个触发注册表文件的AutoHotkey脚本
正如mivk所提到的,这是直截了当的,而且就像一种魅力。这就是mivk提到的
制作一个文本文件,您可以调用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”时,鼠标按钮将被交换。
不再依赖于鼠标来更改鼠标按钮。
您是否看过:https : //www.twomouse.com/
这是一个已编译的自动热键脚本,可让您交换sys托盘中的按钮,也可以让您同时拥有两只鼠标。我有两只老鼠,我在左右手之间交替使用。并自动更改光标和鼠标按钮的角度。
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