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. |
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.