ToAscii

  int ToAscii(uVirtKey, uScanCode, lpbKeyState, lpwTransKey, fuState)    
  UINT uVirtKey; /* virtual-key code */
  UINT uScanCode; /* scan code */
  PBYTE lpbKeyState; /* address of key-state array */
  LPWORD lpwTransKey; /* buffer for translated key */
  UINT fuState; /* active-menu flag */

The ToAscii function translates the specified virtual-key code and keyboard state to the corresponding Windows character or characters.

Parameters

uVirtKey

Specifies the virtual-key code to be translated.

uScanCode

Specifies the hardware scan code of the key to be translated. The high-order bit of this value is set if the key is up.

lpbKeyState

Points to an array of 256 bytes that contains the current keyboard state. Each element (byte) in the array contains the state of one key. If the high-order bit of a byte is set, the key is pressed (is down).

lpwTransKey

Points to the buffer that receives the translated Windows character or characters.

fuState

Specifies whether a menu is active. This parameter must be 1 if a menu is active, or 0 otherwise.

Return Value

The return value is negative if the specified key was a dead key. Otherwise, it is one of the following values:

Value Meaning

2 Two characters were copied to the buffer. This is usually an accent and a dead-key character, when the dead key cannot be translated otherwise.
1 One Windows character was copied to the buffer.
0 The specified virtual key has no translation for the current state of the keyboard.

Comments

The parameters supplied to the ToAscii function might not be sufficient to translate the virtual-key code because a previous dead key is stored in the keyboard driver.

Typically, ToAscii performs the translation based on the virtual-key code. In some cases, however, the wScanCode parameter may be used to distinguish between a key press or a key release. The scan code is used for translating ALT+number key combinations.

See Also

VkKeyScan