web-dev-qa-db-ja.com

マウスボタンを交換するキーボードショートカット

私はマウスを両手で使用し、快適さの理由で前後に切り替えるのが好きです。ただし、ボタンを毎回交換するために、メニューの何兆ものレイヤーを通過する必要があるため、これは困難になります。マウスの左ボタンと右ボタンを入れ替える単一のキーボードショートカットを作成する簡単な方法はありますか?

編集:私のOSはWindows 7です。

22
dsimcha

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へのショートカットをダブルクリックして、マウスボタンを入れ替えます。すぐに有効になります。

20
mivk

これがそのためのアプリです: http://code.google.com/p/mouseswap/

AutoIt がインストールされている場合、au3ファイルで実行するスクリプトは次のとおりです。

#NoTrayIcon 
 
 HotKeySet( "#a"、 "MouseSwap")
 
グローバル$ Buttons 
 
 While 1 
 Sleep(50)
 WEnd 
 
 Func MouseSwap()
 If $ Buttons = 0 Then 
 DllCall( "user32.dll"、 "int"、 "SwapMouseButton"、 "int"、1)
 $ Buttons = 1 
 SplashTextOn( ""、 "E8"、280,180、-1、-1 、33、 "Wingdings"、80)
 Sleep(600)
 SplashOff()
 Else 
 DllCall( "user32.dll"、 "int"、 " SwapMouseButton "、" int "、0)
 $ Buttons = 0 
 SplashTextOn(" "、" 8F "、280,180、-1、-1,33、" Wingdings "、80)
 Sleep(600)
 SplashOff()
 EndIf 
 EndFunc 
5
Mica

より良いAHKコード:

Run, main.cpl
Send, {Space}{Enter}

私は両手でマウスを使用し、Win7も持っています。このコードはうまくいきます。

4
Lady3Millennium

Windows Vista(おそらく7)以上でキーボードでマウスボタンを切り替える方法:

  1. Windowsキー
  2. 「マウス」と入力します
  3. スペースキー
  4. 入る

ええ、それは8つのキープレスですが、それほど悪くはありません...私はそれをたくさんやった

3
Kevin Driedger

これはオートホットキーバージョンです( に基づいて変更/ベースになっています)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」キーなどのホットキーにマップし(オートホットキーを使用)、キーを押すだけでマウスの左ボタンと右ボタンを瞬時に切り替えることができます。コントロールパネルの読み込みやレジストリの設定/再起動をいじる必要はありません。

2
otter.pro

ここにいくつかの良いAutohotkeyの提案がありますが、これはWindowsのボタンを直接入れ替えてポップアップ通知を出します。

これは、micaが言及した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)
0
Iain