SYNOPSIS
sendevent event [event]...
DESCRIPTION
The sendevent utility sends mouse or keyboard events. These events are the equivalent of moving or clicking the mouse or typing keys on the keyboard.
Each type of event has its own format:
-
Mouse events are enclosed in {}.
-
Keyboard events are enclosed in <>.
-
Events can be grouped using ().
-
An event (or group of events) can be repeated n times by prepending :n:.
-
You can pause for n milliseconds with [n].
Mouse Events
sendevent supports the following mouse button events:
- {l}
-
means left mouse button down.
- {L}
-
means left mouse button up.
- {m}
-
means middle mouse button down.
- {M}
-
means middle mouse button up.
- {r}
-
means right mouse button down.
- {R}
-
means right mouse button up.
You can include multiple mouse button events in one set of {}. For example, you could use {lL} rather than {l}{L} or {rR} rather than {r}{R}.
sendevent supports the following mouse movement events:
- {ax, y}
- {Ax, y}
-
moves the mouse pointer to position (x, y) on the screen.
- {x1, y1}
-
moves the mouse pointer from its current position (x, y) on the screen to position (x+x1, y+y1).
Finally, on 10/2016/2019/11/2022/2025 systems, sendevent supports the following wheelmouse events:
- {wn}
-
moves the mouse pointer n pixels, where n can be positive or negative, depending on which way the wheel was to be rolled. The system default is 120 pixels equals one wheelmouse click.
- {x1}
-
means X button 1 down.
- {X1}
-
means X button 1 up.
- {x2}
-
means X button 2 down.
- {X2}
-
means X button 2 up.
Keyboard Events
sendevent supports the keyboard events:
VK_ACCEPT VK_ADD VK_APPS VK_ATTN VK_BACK VK_BROWSER_BACK VK_BROWSER_FAVORITES VK_BROWSER_FORWARD VK_BROWSER_HOME VK_BROWSER_REFRESH VK_BROWSER_SEARCH VK_BROWSER_STOP VK_CANCEL VK_CAPITAL VK_CLEAR VK_CONTROL VK_CONVERT VK_CRSEL VK_DECIMAL VK_DELETE VK_DIVIDE VK_DOWN VK_END VK_EREOF VK_ESCAPE VK_EXECUTE VK_EXSEL VK_F1 VK_F2 VK_F3 VK_F4 VK_F5 VK_F6 VK_F7 VK_F8 VK_F9 VK_F10 VK_F11 VK_F12 VK_F13 VK_F14 VK_F15 VK_F16 VK_F17 VK_F18 VK_F19 VK_F20 VK_F21 VK_F22 VK_F23 VK_F24 VK_FINAL VK_HANGUL VK_HANJA VK_HELP VK_HOME VK_ICO_00 VK_ICO_CLEAR VK_ICO_HELP VK_INSERT VK_JUNJA VK_KANA VK_KANJI VK_LAUNCH_APP1 VK_LAUNCH_APP2 VK_LAUNCH_MAIL VK_LAUNCH_MEDIA_SELECT VK_LBUTTON VK_LCONTROL VK_LEFT VK_LMENU VK_LSHIFT VK_LWIN VK_MBUTTON VK_MEDIA_NEXT_TRACK VK_MEDIA_PLAY_PAUSE VK_MEDIA_PREV_TRACK VK_MEDIA_STOP VK_MENU VK_MODECHANGE VK_MULTIPLY VK_NEXT VK_NONAME VK_NONCONVERT VK_NUMLOCK VK_NUMPAD0 VK_NUMPAD1 VK_NUMPAD2 VK_NUMPAD3 VK_NUMPAD4 VK_NUMPAD5 VK_NUMPAD6 VK_NUMPAD7 VK_NUMPAD8 VK_NUMPAD9 VK_OEM_1 VK_OEM_102 VK_OEM_2 VK_OEM_3 VK_OEM_4 VK_OEM_5 VK_OEM_6 VK_OEM_7 VK_OEM_8 VK_OEM_ATTN VK_OEM_AUTO VK_OEM_AX VK_OEM_BACKTAB VK_OEM_CLEAR VK_OEM_COMMA VK_OEM_COPY VK_OEM_CUSEL VK_OEM_ENLW VK_OEM_FINISH VK_OEM_FJ_JISHO VK_OEM_FJ_LOYA VK_OEM_FJ_MASSHOU VK_OEM_FJ_ROYA VK_OEM_FJ_TOUROKU VK_OEM_JUMP VK_OEM_MINUS VK_OEM_NEC_EQUAL VK_OEM_PA1 VK_OEM_PA2 VK_OEM_PA3 VK_OEM_PERIOD VK_OEM_PLUS VK_OEM_RESET VK_OEM_WSCTRL VK_PA1 VK_PACKET VK_PAUSE VK_PLAY VK_PRINT VK_PRIOR VK_PROCESSKEY VK_RBUTTON VK_RCONTROL VK_RETURN VK_RIGHT VK_RMENU VK_RSHIFT VK_RWIN VK_SCROLL VK_SELECT VK_SEPARATOR VK_SHIFT VK_SLEEP VK_SNAPSHOT VK_SPACE VK_SUBTRACT VK_TAB VK_UP VK_VOLUME_DOWN VK_VOLUME_MUTE VK_VOLUME_UP VK_XBUTTON1 VK_XBUTTON2 VK_ZOOM VK_0 VK_1 VK_2 VK_3 VK_4 VK_5 VK_6 VK_7 VK_8 VK_9 VK_A VK_B VK_C VK_D VK_E VK_F VK_G VK_H VK_I VK_J VK_K VK_L VK_M VK_N VK_O VK_P VK_Q VK_R VK_S VK_T VK_U VK_V VK_W VK_X VK_Y VK_Z
In addition, supports the following mappings so that more common key names can be used:
Keyboard Event Mapping VK_BACK VK_BACKSPACE VK_CAPITAL VK_CAPSLOCK VK_CONTROL VK_CTRL VK_LCONTROL VK_LCTRL VK_RCONTROL VK_RCTRL VK_DELETE VK_DEL VK_ESCAPE VK_ESC VK_INSERT VK_INS VK_MENU VK_ALT VK_LMENU VK_LALT VK_RMENU VK_RALT VK_NEXT VK_PAGEDOWN VK_NEXT VK_PGDN VK_OEM_1 VK_SEMICOLON VK_OEM_2 VK_SLASH VK_OEM_3 VK_TICK VK_OEM_3 VK_BACKQUOTE VK_OEM_4 VK_OPENBRACKET VK_OEM_5 VK_BACKSLASH VK_OEM_6 VK_CLOSEBRACKET VK_OEM_7 VK_QUOTE VK_OEM_COMMA VK_COMMA VK_OEM_MINUS VK_MINUS VK_OEM_PERIOD VK_PERIOD VK_OEM_PLUS VK_PLUS VK_PRIOR VK_PAGEUP VK_PRIOR VK_PGUP VK_RETURN VK_ENTER VK_SCROLL VK_SCROLL_LOCK VK_SNAPSHOT VK_PRINTSCREEN VK_START VK_LWIN
Descriptions of these keyboard events can be found at: http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/VirtualKeyCodes.asp
You can omit the leading VK_. If the first character of the name of the keyboard event is uppercase then this is a key-up event. Otherwise it is a key-down event. Here are a few examples:
<vk_a><VK_A> is the equivalent of typing a <a><A> is the equivalent of typing a <shift><vk_a><VK_A><SHIFT> is the equivalent of typing A <shift><a><A><SHIFT> is the equivalent of typing A <return><RETURN> is the equivalent of typing RETURN or ENTER
- Note:
-
Be sure to always enter the matching key-up event for any key-down event. Not doing so can leave the keyboard in a funny state. For example <shift> without <SHIFT> leaves the keyboard in SHIFT state. To fix this, just type the left SHIFT key or send <SHIFT> with sendevent.
To simplify sending strings using sendevent, built-in mappings are provided for most keyboard characters, allowing you to just type the characters that you want to send. For example:
a is the equivalent of <a><A> A is the equivalent of <shift><a><A><SHIFT> ` is the equivalent of <vk_oem_3><VK_OEM_3> ~ is the equivalent of <shift><vk_oem_3><VK_OEM_3><SHIFT> and so on
The command characters (, <, {, and the escape character \ take precedence over the built-in mappings. If you wish to send one of these characters using its built-in mapping, just preface it with \. For example:
sendevent "this is an \(example\) of using \\-escaping"
- Note:
-
The mappings for some keys are only valid in the OEM code page, as is evidenced by the explicit reference to OEM in the name of the keyboard event.
EXAMPLES
Send a command to a KornShell window that has the keyboard focus:
sendevent "echo abcde<return><RETURN>"
Do the above action twice in a row:
sendevent ":2:(echo abcde<return><RETURN>)"
Send a string to coordinates (100,200) (the left mouse button is also clicked to ensure the focus is on that location):
sendevent "{a100,200}{lL}this is a string"
DIAGNOSTICS
Possible exit status values are:
PORTABILITY
Windows 10. Windows Server 2016. Windows Server 2019. Windows 11. Windows Server 2022. Windows Server 2025.
AVAILABILITY
PTC MKS Toolkit for System Administrators
PTC MKS Toolkit for Developers
PTC MKS Toolkit for Interoperability
PTC MKS Toolkit for Professional Developers
PTC MKS Toolkit for Professional Developers 64-Bit Edition
PTC MKS Toolkit for Enterprise Developers
PTC MKS Toolkit for Enterprise Developers 64-Bit Edition
SEE ALSO
- Commands:
- winctrl
PTC MKS Toolkit 10.5 Documentation Build 40.