# Keyword Reference

# $tagKEYBDINPUT

Contains information about a low-level keyboard input event

Global Const $tagKEYBDINPUT = "dword type;struct;word wVk;word wScan;dword dwFlags;dword time;ulong_ptr dwExtraInfo;byte filler[8];endstruct"

## Parameters

type | $INPUT_KEYBOARD - the event is a keyboard event.
wVk | A virtual-key code. The code must be a value in the range 1 to 254. If the dwFlags member specifies $KEYEVENTF_UNICODE, wVk must be 0.
wScan | A hardware scan code for the key. If dwFlags specifies $KEYEVENTF_UNICODE, wScan specifies a Unicode character which is to be sent to the foreground application.
dwFlags | Specifies various aspects of a keystroke. This member can be certain combinations of the following values. $KEYEVENTF_EXTENDEDKEY (1) - If specified, the wScan scan code consists of a sequence of two bytes, where the first byte has a value of 0xE0. $KEYEVENTF_KEYUP (2) - If specified, the key is being released. If not specified, the key is being pressed. $KEYEVENTF_UNICODE (4) - If specified, the system synthesizes a $VK_PACKET keystroke. The wVk parameter must be zero. This flag can only be combined with the $KEYEVENTF_KEYUP flag. $KEYEVENTF_SCANCODE (8) - If specified, wScan identifies the key and wVk is ignored.
time | The time stamp for the event, in milliseconds. If this parameter is zero, the system will provide its own time stamp.
dwExtraInfo | An additional value associated with the keystroke. Use the GetMessageExtraInfo function to obtain this information.
filler | not documented in MSDN.

## Remarks

$INPUT_KEYBOARD supports nonkeyboard-input methods—such as handwriting recognition or voice recognition—as if it were text input by using the $KEYEVENTF_UNICODE flag.
If $KEYEVENTF_UNICODE is specified, SendInput sends a WM_KEYDOWN or WM_KEYUP message to the foreground thread's message queue with wParam equal to VK_PACKET.
Once GetMessage or PeekMessage obtains this message, passing the message to TranslateMessage posts a WM_CHAR message with the Unicode character originally specified by wScan.
This Unicode character will automatically be converted to the appropriate ANSI value if it is posted to an ANSI window.
Set the $KEYEVENTF_SCANCODE flag to define keyboard input in terms of the scan code.
This is useful for simulating a physical keystroke regardless of which keyboard is currently being used.
You can also pass the $KEYEVENTF_EXTENDEDKEY flag if the scan code is an extended key.
The virtual key value of a key can change depending on the current keyboard layout or what other keys were pressed, but the scan code will always be the same.