keybd_event function

Synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt handler calls the keybd_event function.

Note  This function has been superseded. Use SendInput instead.
 

Syntax

void keybd_event(
  BYTE      bVk,
  BYTE      bScan,
  DWORD     dwFlags,
  ULONG_PTR dwExtraInfo
);

Parameters

bVk

Type: BYTE

A virtual-key code. The code must be a value in the range 1 to 254. For a complete list, see Virtual Key Codes.

bScan

Type: BYTE

A hardware scan code for the key.

dwFlags

Type: DWORD

Controls various aspects of function operation. This parameter can be one or more of the following values.

Value Meaning
KEYEVENTF_EXTENDEDKEY
0x0001
If specified, the scan code was preceded by a prefix byte having the value 0xE0 (224).
KEYEVENTF_KEYUP
0x0002
If specified, the key is being released. If not specified, the key is being depressed.

dwExtraInfo

Type: ULONG_PTR

An additional value associated with the key stroke.

Return Value

This function does not return a value.

Remarks

An application can simulate a press of the PRINTSCRN key in order to obtain a screen snapshot and save it to the clipboard. To do this, call keybd_event with the bVk parameter set to VK_SNAPSHOT.

Examples

The following sample program toggles the NUM LOCK light by using keybd_event with a virtual key of VK_NUMLOCK. It takes a Boolean value that indicates whether the light should be turned off (FALSE) or on (TRUE). The same technique can be used for the CAPS LOCK key (VK_CAPITAL) and the SCROLL LOCK key (VK_SCROLL).

   #include <windows.h>

void SetNumLock( BOOL bState ) { BYTE keyState[256];

  GetKeyboardState((LPBYTE)&amp;keyState);
  if( (bState &amp;&amp; !(keyState[VK_NUMLOCK] &amp; 1)) ||
      (!bState &amp;&amp; (keyState[VK_NUMLOCK] &amp; 1)) )
  {
  // Simulate a key press
     keybd_event( VK_NUMLOCK,
                  0x45,
                  KEYEVENTF_EXTENDEDKEY | 0,
                  0 );

  // Simulate a key release
     keybd_event( VK_NUMLOCK,
                  0x45,
                  KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                  0);
  }

}

void main() { SetNumLock( TRUE ); }

Requirements

   
Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header winuser.h (include Windows.h)
Library User32.lib
DLL User32.dll

See Also

Conceptual

GetAsyncKeyState

GetKeyState

Keyboard Input

MapVirtualKey

Reference

SetKeyboardState

keybd_event