KEY_EVENT_RECORD

Структура KEY_EVENT_RECORD используется для получения входных событий в консольной структуре INPUT_RECORD.
typedef struct _KEY_EVENT_RECORD {
    BOOL bKeyDown;
    WORD wRepeatCount;
    WORD wVirtualKeyCode;
    WORD wVirtualScanCode;
    union {
        WCHAR UnicodeChar;
        CHAR  AsciiChar;
    } uChar;
    DWORD dwControlKeyState;
} KEY_EVENT_RECORD;

Элементы

bKeyDown
Равно TRUE если клавиша нажата, иначе FALSE.
wRepeatCount
Число повторов нажатия клавиши. Например, когда клавиша нажата, вы можете получить пять сообщений с этим членом равным 1, одно сообщение с равным 5, или несколько сообщений с элементом большим, либо равным 1.
wVirtualKeyCode
Виртуальный код клавиши, определяющий данную клавишу в независимой от устройства форме.
wVirtualScanCode
Виртуальный скан-код клавиши. Определяет устройство-зависимое значение, генерируемое аппаратурой клавиатуры.
uChar
Переведённый Unicode или ASCII символ, в зависимости от того, использовалась Wide- или ANSI-версия функции ReadConsoleInput.
dwControlKeyState
Состояние управляющих клавиш. Может быть комбинацией следующих значений:
КлавишаЗначениеОписание
CAPSLOCK_ON0x0080 CAPS LOCK включён.
ENHANCED_KEY0x0100 Клавиша расширенная.
LEFT_ALT_PRESSED 0x0002 Левый ALT нажат.
LEFT_CTRL_PRESSED 0x0008 Левый CTRL нажат.
NUMLOCK_ON 0x0020 NUM LOCK включён.
RIGHT_ALT_PRESSED 0x0001 Правый ALT нажат.
RIGHT_CTRL_PRESSED 0x0004 Правый CTRL нажат.
SCROLLLOCK_ON 0x0040 SCROLL LOCK включён.
SHIFT_PRESSED 0x0010 Клавиша SHIFT нажата.

Замечания

Расширенные клавиши для IBM® 101- и 102-х клавишных клавиатур - это INS, DEL, HOME, END, PAGE UP, PAGE DOWN, клавиши курсора, клавиша divide (/) и ENTER на цифровой части.
Сообщения клавиатурного ввода генерируются, когда любая клавиша, включая управляющую, нажата или отпущена. Однако, когда клавиша ALT нажимается и отпускается, это имеет специальное значение в Windows и такое событие не передаётся приложению. Также сочетание CTRL+C не передаётся, если хендл входной консоли имеет флаг ENABLE_PROCESSED_INPUT.
Смотрите также:
PeekConsoleInput, ReadConsoleInput, WriteConsoleInput, INPUT_RECORD