Окт 16

Клавиатура

Windows обеспечивает поддержку клавиатуры, независимую от аппаратуры и от национального языка, используемого в системе. Независимость от аппаратуры достигается благодаря использованию программного драйвера клавиатуры. Независимость от национального языка реализуется выбором нужной кодовой страницы
Каждой клавише на клавиатуре соответствуют два уникальных целых числа, называемых скан-кодом нажатия и скан-кодом отпускания клавиши. Скан-код (scan code) является аппаратно-зависимым, то есть на клавиатурах разных производителей одна и та же клавиша может иметь разные скан-коды1. Когда пользователь нажимает или отпускает клавишу, драйвер клавиатуры получает соответствующие скан-коды. Полученный скан-код преобразуется драйвером в виртуальный код клавиши (virtual-key code). Этот код является уже аппаратно-независимым, поэтому в системе Windows он однозначно идентифицирует нажатую или отпущенную клавишу. Завершающим действием драйвера является создание сообщения, содержащего скан-код, виртуальный код клавиши и другую информацию о нажатой/отпущенной клавише. Это сообщение помещается в системную очередь сообщений.
Windows извлекает сообщение из системной очереди и передает его в очередь сообщений того приложения, которое имеет активное окно.
Далее сообщение извлекается в известном вам цикле обработки сообщений, поступая в конечном счете на обработку в соответствующую оконную процедуру.