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_ON | 0x0080 |
CAPS LOCK включён. |
ENHANCED_KEY | 0x0100 |
Клавиша расширенная. |
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
.
Смотрите также: