交换鼠标按钮的键盘快捷键

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 所提到的,您可以创建一个快捷方式,并在其“属性”的“快捷方式”选项卡中定义键盘快捷方式/热键。

  • 通过 **keyboard** 快捷方式启动 exe:`1. 右键单击 exe 并选择“创建快捷方式” 2. 将快捷方式移动到“C:\ProgramData\Microsoft\Windows\Start Menu”或桌面 3. 右键单击​​快捷方式,转到“快捷方式”选项卡并选择一个快捷键` (4认同)

ott*_*pro 7

这是 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),我可以通过按下一个键立即在鼠标左键和右键之间切换。无需处理加载控制面板或设置注册表/重新启动。

  • 被高度低估的答案。这是最好的! (2认同)

Mic*_*ica 5

这是一个应用程序: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,这段代码很好用!


bls*_*ub6 0

我不知道键盘快捷键,但您可以创建两个 reg 文件来执行此处描述的操作。只需点击一下即可离开。

如果您真的想疯狂,请设置一个触发 reg 文件的AutoHotkey脚本