dsi*_*cha 27 windows mouse keyboard-shortcuts autohotkey autoit
我用双手使用鼠标,并且出于舒适的原因喜欢来回切换。然而,每次都需要经过无数层菜单来交换按钮,这使得这变得很困难。有没有一种简单的方法来创建一个可以交换我的左右鼠标按钮的键盘快捷键?
编辑:我的操作系统是 Windows 7。
miv*_*ivk 24
正如 blsub6 所提到的,您可以更改注册表值(使用从批处理文件调用的命令):
REG ADD "HKCU\Control Panel\Mouse" /t REG_SZ /v SwapMouseButtons /d 1 /f
Run Code Online (Sandbox Code Playgroud)
或者
REG ADD "HKCU\Control Panel\Mouse" /t REG_SZ /v SwapMouseButtons /d 0 /f
Run Code Online (Sandbox Code Playgroud)
但是,您需要先注销才能生效。
该更好的解决办法是让用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
}
}
}
Run Code Online (Sandbox Code Playgroud)
并swapmouse.exe
使用以下命令将其编译为:
"%SystemRoot%\Microsoft.NET\Framework64\v3.5\csc" swapmouse.cs
Run Code Online (Sandbox Code Playgroud)
在更新的 .NET 版本中,您可能需要添加/out:swapmouse.exe
和/target:exe
:
"[%SystemRoot%]\Microsoft.NET\Framework64\[version]\csc" /out:swapmouse.exe /target:exe swapmouse.cs
Run Code Online (Sandbox Code Playgroud)
然后您只需双击该 exe 即可交换鼠标按钮。它立即生效。
或者,正如 rad 所提到的,您可以创建一个快捷方式,并在其“属性”的“快捷方式”选项卡中定义键盘快捷方式/热键。
这是 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)
}
Run Code Online (Sandbox Code Playgroud)
这适用于所有 Windows(包括 Windows 10)。我通常将它映射到键盘上的热键,例如“F12”键(使用 Autohotkey),我可以通过按下一个键立即在鼠标左键和右键之间切换。无需处理加载控制面板或设置注册表/重新启动。
这是一个应用程序:http : //code.google.com/p/mouseswap/
如果您安装了AutoIt,下面是在 au3 文件中运行的脚本:
#NoTrayIcon HotKeySet("#a","MouseSwap") 全局 $Buttons 虽然 1 睡眠(50) 结束 Func MouseSwap() 如果 $Buttons = 0 那么 DllCall("user32.dll", "int", "SwapMouseButton", "int", 1) $按钮 = 1 SplashTextOn("","E8",280,180,-1,-1,33,"Wingdings",80) 睡眠(600) 飞溅() 别的 DllCall("user32.dll", "int", "SwapMouseButton", "int", 0) $按钮 = 0 SplashTextOn("","8F",280,180,-1,-1,33,"Wingdings",80) 睡眠(600) 飞溅() 万一 结束函数
小智 5
更好的 AHK 代码:
Run, main.cpl
Send, {Space}{Enter}
Run Code Online (Sandbox Code Playgroud)
我也用双手鼠标,也有Win7,这段代码很好用!
归档时间: |
|
查看次数: |
36731 次 |
最近记录: |