WM_KEYDOWN

This message is sent when a nonsystem key is pressed. A nonsystem key is a keyboard key that is pressed when the ALT key is not pressed, or a keyboard key that is pressed when a window has the input focus.

Parameter Description  

wParam Specifies the virtual-key code of the given key.  
lParam Contains the repeat count, scan code, key-transition code, previous key state, and context code, as shown in the following list:  
Parameter Description  

  Bit Value
  0–15 (low-order word) Repeat count (the number of times the key stroke is repeated as a result of the user holding down the key).
  16–23 (low byte of high-order word) Scan code (OEM-dependent value).
  24 Extended key, such as a function key or a key on the numeric key pad (1 if it is an extended key).
  25–26 Not used.
  27–28 Used internally by Windows.
  29 Context code (1 if the ALT key is held down while the key is pressed, 0 otherwise).
  30 Previous key state (1 if the key is down before the message is sent, 0 if the key is up).
  31 Transition state (1 if the key is being released, 0 if the key is being pressed).
  For WM_KEYDOWN messages, the key-transition bit (bit 31) is 0 and the context-code bit (bit 29) is 0.  

Comments

Because of auto-repeat, more than one WM_KEYDOWN message may occur before a WM_KEYUP message is sent. The previous key state (bit 30) can be used to determine whether the WM_KEYDOWN message indicates the first down transition or a repeated down transition.

For IBM Enhanced 101- and 102-key keyboards, enhanced keys are the right ALT and the right CONTROL keys on the main section of the keyboard; the INSERT, DELETE, HOME, END, PAGE UP, PAGE DOWN and DIRECTION keys in the clusters to the left of the numeric key pad; and the divide (/) and ENTER keys in the numeric key pad. Some other keyboards may support the extended-key bit in the lParam parameter.