SwapMouseButton function (Windows)

Switch View :
ScriptFree
SwapMouseButton function

Applies to: desktop apps only

Reverses or restores the meaning of the left and right mouse buttons.

Syntax

BOOL WINAPI SwapMouseButton(
  __in  BOOL fSwap
);

Parameters

fSwap [in]

Type: BOOL

If this parameter is TRUE, the left button generates right-button messages and the right button generates left-button messages. If this parameter is FALSE, the buttons are restored to their original meanings.

Return value

Type: BOOL

If the meaning of the mouse buttons was reversed previously, before the function was called, the return value is nonzero.

If the meaning of the mouse buttons was not reversed, the return value is zero.

Remarks

Button swapping is provided as a convenience to people who use the mouse with their left hands. The SwapMouseButton function is usually called by Control Panel only. Although an application is free to call the function, the mouse is a shared resource and reversing the meaning of its buttons affects all applications.

Requirements

Minimum supported client

Windows 2000 Professional

Minimum supported server

Windows 2000 Server

Header

Winuser.h (include Windows.h)

Library

User32.lib

DLL

User32.dll

See also

Reference
SetDoubleClickTime
Conceptual
Mouse Input

 

 

Send comments about this topic to Microsoft

Build date: 3/6/2012

Community Content

BenHutchinson_3
How do I use Rundll32 from the command line and pass boolean to an argument of the DLL I'm calling?
How do I pass boolean data from command prompt through rundll32.exe to a boolean type argument in a command running from user32.dll?

I'm trying to run this from CMD (the command prompt)

RUNDLL32.EXE user32.dll,SwapMouseButton *

Where the asterisk is here is where the argument should go. I already ran it without an argument and it swapped my left and right mouse buttons (seems TRUE is the default entry for the boolean argument). Now I want to undo it.
However I've tried each of these for passing FALSE in the argument, and none have worked (none set my mouse buttons back to normal).
F
f
false
False
FALSE
"false"
"False"
"FALSE"
0
-1

Please help me pass the argument as needed. Thanks in advance.

Thomas Lee
Use GetSystemMetrics(SM_SWAPBUTTON) to detect
Per Raymond Chen the his The Old New Thing blog -- if you want to find out if the mouse buttons are swapped, call GetSystemMetrics(SM_SWAPBUTTON). If you call SwapMouseButton () twice in a row and the user clicks at the wrong time, Windows will become rightfully confused.