WM_SYSKEYUP

This message is sent when the user releases a key that was pressed while the ALT key was held down. It also occurs when no window currently has the input focus; in this case, the WM_SYSKEYUP message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lParam parameter.

Parameter Description  
wParam Contains the virtual-key code of the key being released.  

lParam Contains the repeat count, scan code, key-transition code, previous key state, and context code, as shown in the following list:  
  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.
Parameter Description  

  Bit Value
  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_SYSKEYUP messages, the key-transition bit (bit 31) is 1. The context-code bit (bit 29) is 1 if the ALT key is down while the key is pressed; it is 0 if the message is sent to the active window because no window has the input focus.  

Comments

When the context code is zero, the message can be passed to the TranslateAccelerator function, which will handle it as though it were a normal key message instead of a system-key message. This allows accelerator keys to be used with the active window even if the active window does not have the input focus.

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.

For non-USA Enhanced 102-key keyboards, the right ALT key is handled as a CONTROL-ALT key. The following shows the sequence of messages which result when the user presses and releases this key:

Order Message Virtual-key code (lParam)

1 WM_KEYDOWN VK_CONTROL
2 WM_KEYDOWN VK_MENU
3 WM_KEYUP VK_CONTROL
4 WM_SYSKEYUP VK_MENU