回答:
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 ながら1 寝る(50) 終了 Func MouseSwap() If $ Buttons = 0 Then 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() EndIf EndFunc
より良いAHKコード:
Run, main.cpl
Send, {Space}{Enter}
私はまた、両手でマウスを使用し、Win7も持っています。このコードはうまく機能します!
Windows Vista(おそらく7)以降でマウスボタンを切り替えるキーボードの方法:
ええ、それは8回のキープレスですが、それほど悪くはありません...私はそれをたくさんやりました
これは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」キーなどのホットキーにマップし(オートホットキーを使用)、キーを押すだけでマウスの左ボタンと右ボタンを瞬時に切り替えることができます。コントロールパネルの読み込みやレジストリの設定/再起動をいじる必要はありません。
ここではいくつかの良い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)
キーボードショートカットについては知りませんが、ここで説明することを行う2つのregファイルを作成できます。クリックするだけで移動できます。
本当に必要な場合は、regファイルをトリガーするAutoHotkeyスクリプトをセットアップします
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」を押すたびに、マウスボタンが入れ替わります。
マウスボタンを変更するためのマウスへの依存はありません。
ご覧になりましたか:https : //www.eithermouse.com/
これはコンパイルされた自動ホットキースクリプトで、システムトレイからボタンを交換でき、同時に2つのマウスを使用できます。左手と右手を交互に使用する2つのマウスがあります。これにより、カーソルとマウスボタンの角度が自動的に変更されます。
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