Алгоритм преобразования нажатых клавиш в графический символ на экране включает несколько этапов: 1
- Клавиатура создаёт два кода сканирования. 1 Один — когда пользователь нажимает клавишу, другой — когда отпускает. 13 Каждой клавише присвоен уникальный скан-код, который зависит от устройства. 13
- Драйвер устройства клавиатуры интерпретирует код сканирования и преобразует его в код виртуального ключа. 1 Это значение определено системой и не зависит от устройства. 1
- Раскладка клавиатуры создаёт сообщение, которое включает код сканирования, код виртуального ключа и другие сведения о нажатии клавиш. 1 Затем сообщение помещается в очередь системных сообщений. 1
- Система удаляет сообщение из очереди системных сообщений и отправляет его в очередь сообщений соответствующего потока. 1
- Цикл обработки сообщений потока удаляет сообщение и передаёт его в соответствующую оконную процедуру для дальнейшей обработки. 1
Чтобы получить коды символов, приложение использует функцию TranslateMessage. 1 Она передаёт сообщение в раскладку клавиатуры. 1 Раскладка проверяет код виртуальной клавиши сообщения и, если он соответствует символьной клавише, предоставляет эквивалент символьного кода. 1
Механизм преобразования кодов зависит от активной раскладки клавиатуры, одновременных нажатий других клавиш (например, SHIFT) и других факторов. 3