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


22

我双手都用鼠标,出于舒适的原因,我喜欢来回切换。但是,由于每次需要遍历不计其数的菜单来交换按钮,所以这变得困难。有没有简单的方法来创建单个键盘快捷方式,该快捷方式将交换我的鼠标左键和右键?

编辑:我的操作系统是Windows 7。

Answers:


19

如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的快捷方式即可交换鼠标按钮。立即生效。


3
通过键盘快捷键启动exe :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
Rad Rad

5

这是一个适用于此的应用程序: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


3

在Windows Vista(可能是7)及更高版本上切换鼠标按钮的键盘方式:

  1. Windows键
  2. 输入“鼠标”
  3. 空格键
  4. 输入

是的,这是8个按键,但还算不错...我已经做了很多


5. ALT + F4关闭鼠标设置窗口
Przemyslaw Remin,

2

这是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”键(使用自动热键),并且可以通过按一个键立即在鼠标左右键之间切换。无需加载控制面板或设置注册表/重启。


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)

-1

我不知道键盘快捷键是什么,但是您可以制作两个reg文件来执行此处所述的操作。只需单击即可离开。

如果您真的想了解它,请设置一个触发注册表文件的AutoHotkey脚本


那不好,仅仅改变注册表项是没有效果的。按钮保持不变。您需要重新引导或注销然后重新登录才能生效。
Synetech 2014年

-1

我想避免在可能的情况下使用随机的exe文件,这是一个基于前面提到的键盘解决方案的AutoHotKey解决方案。

在名为c:\ mouse.ink的快捷方式中打开鼠标设置。

使用此AHK脚本:

#a::
Run c:\mouse
sleep 250
send {Space}
Send {Enter}
return

该exe只是一个经过编译的AutoIt脚本(类似于AutoHotkey)。代替exe,您可以运行au3。
云母

-1

正如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”时,鼠标按钮将被交换。

不再依赖于鼠标来更改鼠标按钮。


1
欢迎来到超级用户!这将重复另一个答案,并且不添加任何新内容。除非您确实有新贡献,否则请不要发布答案。
DavidPostill

-1

您是否看过:https : //www.twomouse.com/

这是一个已编译的自动热键脚本,可让您交换sys托盘中的按钮,也可以让您同时拥有两只鼠标。我有两只老鼠,我在左右手之间交替使用。并自动更改光标和鼠标按钮的角度。


如果您已包含执行此操作的脚本,则将更加有用。否则,最好将其作为注释。
Synetech 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.