Ввод с клавиатуры

В этом разделе описывается, как система создает ввод клавиатуры и как приложение получает и обрабатывает входные данные.

В этом разделе

Имя Описание
Сведения о вводе с клавиатуры Обсуждает ввод клавиатуры.
Использование ввода клавиатуры Охватывает задачи, связанные с вводом клавиатуры.
Справочник по вводу клавиатуры Содержит ссылку на API.

Функции

Имя Описание
ActivateKeyboardLayout Задает идентификатор входного языкового стандарта (ранее называемый дескриптором раскладки клавиатуры) для вызывающего потока или текущего процесса. Идентификатор языкового стандарта ввода указывает языковой стандарт, а также физический макет клавиатуры.
BlockInput Блокирует доступ к приложениям событий ввода клавиатуры и мыши.
EnableWindow Включает или отключает ввод мыши и клавиатуры в указанное окно или элемент управления. Если входные данные отключены, окно не получает входные данные, такие как щелчки мыши и нажатия клавиш. Если входные данные включены, окно получает все входные данные.
GetActiveWindow Извлекает дескриптор окна в активное окно, подключенное к очереди сообщений вызывающего потока.
GetAsyncKeyState Определяет, находится ли ключ вверх или вниз во время вызова функции, и указывает, был ли нажатием клавиши после предыдущего вызова GetAsyncKeyState.
GetFocus Извлекает дескриптор в окно с фокусом клавиатуры, если окно подключено к очереди сообщений вызывающего потока.
GetKeyboardLayout Извлекает идентификатор языкового стандарта активного ввода (ранее называемый раскладкой клавиатуры) для указанного потока. Если параметр idThread равен нулю, возвращается входной языковой стандарт для активного потока.
GetKeyboardLayoutList Извлекает входные идентификаторы языкового стандарта (ранее называемые дескрипторами раскладки клавиатуры), соответствующие текущему набору языковых стандартов ввода в системе. Функция копирует идентификаторы в указанный буфер.
GetKeyboardLayoutName Извлекает имя идентификатора языкового стандарта активного ввода (прежнее название — раскладка клавиатуры).
GetKeyboardState Копирует состояние 256 виртуальных ключей в указанный буфер.
GetKeyNameText Извлекает строку, представляющую имя ключа.
GetKeyState Извлекает состояние указанного виртуального ключа. Состояние указывает, находится ли ключ вверх, вниз или переключается (вкл., отключается при каждом нажатии клавиши).
GetLastInputInfo Извлекает время последнего входного события.
IsWindowEnabled Определяет, включено ли указанное окно для ввода мыши и клавиатуры.
LoadKeyboardLayout Загружает новый идентификатор языкового стандарта ввода (ранее называемый раскладкой клавиатуры) в систему. Несколько входных идентификаторов языкового стандарта можно загружать одновременно, но одновременно активируется только один процесс. Загрузка нескольких входных идентификаторов языкового стандарта позволяет быстро переключаться между ними.
MapVirtualKey Преобразует (сопоставляет) код виртуального ключа в код сканирования или значение символа или преобразует код сканирования в код виртуального ключа.
Чтобы указать дескриптор раскладки клавиатуры для перевода указанного кода, используйте функцию MapVirtualKeyEx .
MapVirtualKeyEx Карты код виртуального ключа в код сканирования или значение символа или преобразует код сканирования в код виртуального ключа. Функция преобразует коды с помощью языка ввода и идентификатора языкового стандарта ввода.
OemKeyScan Карты коды OEMASCII до 0x0FF в коды сканирования OEM и состояния смены. Эта функция предоставляет сведения, позволяющие программе отправлять текст OEM в другую программу путем имитации ввода клавиатуры.
RegisterHotKey Определяет горячий ключ на уровне системы.
SendInput Синтезирует нажатия клавиш, движения мыши и нажатия кнопки.
SetActiveWindow Активирует окно. Окно должно быть присоединено к очереди сообщений вызывающего потока.
Setfocus Задает фокус клавиатуры для указанного окна. Окно должно быть присоединено к очереди сообщений вызывающего потока.
SetKeyboardState Копирует 256-байтовый массив состояний клавиши клавиатуры в таблицу состояния ввода-состояния клавиатуры вызывающего потока. Это та же таблица, доступная к функциям GetKeyboardState и GetKeyState. Изменения, внесенные в эту таблицу, не влияют на ввод клавиатуры в любой другой поток.
ToAscii Преобразует указанный код виртуального ключа и состояние клавиатуры в соответствующие символы или символы. Функция преобразует код с помощью языка ввода и физической раскладки клавиатуры, определяемой дескриптором раскладки клавиатуры.
Чтобы указать дескриптор раскладки клавиатуры для перевода указанного кода, используйте функцию ToAsciiEx .
ToAsciiEx Преобразует указанный код виртуального ключа и состояние клавиатуры в соответствующие символы или символы. Функция преобразует код с помощью языка ввода и физического макета клавиатуры, определяемого идентификатором входного языкового стандарта.
ToUnicode Преобразует указанный код виртуального ключа и состояние клавиатуры в соответствующий символ Юникода или символы.
Чтобы указать дескриптор раскладки клавиатуры для перевода указанного кода, используйте функцию ToUnicodeEx .
ToUnicodeEx Преобразует указанный код виртуального ключа и состояние клавиатуры в соответствующий символ Юникода или символы.
UnloadKeyboardLayout Выгрузит входной идентификатор языкового стандарта (ранее называемый раскладкой клавиатуры).
Отмена регистрацииHotKey Освобождает горячий ключ, ранее зарегистрированный вызывающим потоком.
VkKeyScanEx Преобразует символ в соответствующий код виртуального ключа и состояние shift. Функция преобразует символ с помощью языка ввода и физического макета клавиатуры, определяемого идентификатором входного языкового стандарта.

Следующие функции устарели.

Function Description
Get КБ CodePage Извлекает текущую кодовую страницу.
keybd_event Синтезирует нажатие клавиши. Система может использовать такой синтезированный нажатие клавиш для создания сообщения WM_KEYUP или WM_KEYDOWN. Обработчик прерываний драйвера клавиатуры вызывает функцию keybd_event.
VkKeyScan Преобразует символ в соответствующий код виртуального ключа и состояние shift для текущей клавиатуры.

Сообщения

Имя Описание
WM_GETHOTKEY Определяет горячий ключ, связанный с окном.
WM_SETHOTKEY Связывает горячий ключ с окном. Когда пользователь нажимает горячий ключ, система активирует окно.

Notifications

Имя Описание
WM_ACTIVATE Отправлено как в активированное окно, так и в деактивированное окно. Если окна используют ту же очередь ввода, сообщение отправляется синхронно, сначала в процедуру окна деактивации окна верхнего уровня, а затем в процедуру окна верхнего уровня, активируемую. Если окна используют разные входные очереди, сообщение отправляется асинхронно, поэтому окно активируется немедленно.
WM_APPCOMMAND Уведомляет окно о том, что пользователь создал событие команды приложения, например щелкнув кнопку команды приложения с помощью мыши или введя клавишу команды приложения на клавиатуре.
WM_CHAR Размещено в окне с фокусом клавиатуры при переводе сообщения WM_KEYDOWN функцией TranslateMessage. Сообщение WM_CHAR содержит код символа нажатия клавиши.
WM_DEADCHAR Размещено в окне с фокусом клавиатуры при переводе сообщения WM_KEYUP функцией TranslateMessage. WM_DEADCHAR задает код символа, созданный мертвым ключом. Мертвый ключ — это ключ, который создает символ, например umlaut (double-dot), который объединяется с другим символом для формирования составного символа. Например, символ umlaut-O () создается путем ввода мертвого ключа для символа umlaut, а затем ввода ключа O.
WM_HOTKEY Опубликовано, когда пользователь нажимает горячий ключ, зарегистрированный функцией RegisterHotKey . Сообщение помещается в верхней части очереди сообщений, связанной с потоком, который зарегистрировал горячий ключ.
WM_KEYDOWN Размещено в окне с фокусом клавиатуры при нажатии несистемного клавиши. Несистемный ключ — это ключ, который нажимается, когда клавиша ALT не нажимается.
WM_KEYUP Размещено в окне с фокусом клавиатуры при освобождении несистемного ключа. Несистемный ключ — это клавиша, которая нажимается, если клавиша ALT не нажимается, или клавиша клавиатуры, которая нажимается, когда окно имеет фокус клавиатуры.
WM_KILLFOCUS Отправлено в окно непосредственно перед потерей фокуса клавиатуры.
WM_SETFOCUS Отправлено в окно после получения фокуса клавиатуры.
WM_SYSDEADCHAR Отправляется в окно с фокусом клавиатуры при переводе сообщения WM_SYSKEYDOWN функцией TranslateMessage. WM_SYSDEADCHAR задает код символа системного мертвого ключа, т. е. мертвый ключ, который нажимается при удержании клавиши ALT.
WM_SYSKEYDOWN Размещено в окне с фокусом клавиатуры, когда пользователь нажимает клавишу F10 (которая активирует строку меню) или удерживает клавиши ALT, а затем нажимает другой ключ. Это также происходит, если в настоящее время окно не имеет фокуса клавиатуры; В этом случае сообщение WM_SYSKEYDOWN отправляется в активное окно. Окно, которое получает сообщение, может различать эти два контекста, проверка код контекста в параметре lParam.
WM_SYSKEYUP Размещено в окне с фокусом клавиатуры, когда пользователь освобождает клавишу, которая была нажата, пока клавиша ALT была удерживалась. Это также происходит, если в настоящее время окно не имеет фокуса клавиатуры; В этом случае сообщение WM_SYSKEYUP отправляется в активное окно. Окно, которое получает сообщение, может различать эти два контекста, проверка код контекста в параметре lParam.
WM_UNICHAR Размещено в окне с фокусом клавиатуры при переводе сообщения WM_KEYDOWN функцией TranslateMessage. Сообщение WM_UNICHAR содержит код символа нажатия клавиши.

Структуры

Имя Описание
HARDWAREINPUT Содержит сведения об имитированном сообщении, созданном устройством ввода, кроме клавиатуры или мыши.
INPUT Содержит сведения, используемые для синтеза событий ввода, таких как нажатия клавиш, перемещение мыши и щелчки мыши.
KEYBDINPUT Содержит сведения о имитированном событии клавиатуры.
LASTINPUTINFO Содержит время последнего ввода.
MOUSEINPUT Содержит сведения о имитированном событии мыши.

Константы

Имя Описание
Коды виртуальных ключей Символьные имена констант, шестнадцатеричные значения и эквиваленты мыши или клавиатуры для кодов виртуальных ключей, используемых системой. Коды перечислены в числовом порядке.

См. также