私はマウスを両手で使用し、快適さの理由で前後に切り替えるのが好きです。ただし、ボタンを毎回交換するために、メニューの何兆ものレイヤーを通過する必要があるため、これは困難になります。マウスの左ボタンと右ボタンを入れ替える単一のキーボードショートカットを作成する簡単な方法はありますか?
編集:私のOSはWindows 7です。
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") グローバル$ 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
より良いAHKコード:
Run, main.cpl
Send, {Space}{Enter}
私は両手でマウスを使用し、Win7も持っています。このコードはうまくいきます。
Windows Vista(おそらく7)以上でキーボードでマウスボタンを切り替える方法:
ええ、それは8つのキープレスですが、それほど悪くはありません...私はそれをたくさんやった
これはオートホットキーバージョンです( に基づいて変更/ベースになっています)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のボタンを直接入れ替えてポップアップ通知を出します。
これは、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)