Программирование клавиатуры

Основанная на сообщениях архитектура Windows идеальна для работы с клавиатурой.

Приложение узнает о нажатиях клавиш посредством сообщений, которые посылаются оконной процедуре. Когда пользователь нажимает и отпускает клавиши,

  • Драйвер клавиатуры передает информацию о нажатии клавиш в Windows.
  • Windows сохраняет эту информацию (в виде сообщений) в системной очереди сообщений.
  • Затем она передает сообщения клавиатуры, по одному за раз, в очередь сообщений программы, содержащей окно, имеющее фокус ввода ( input focus).
  • Затем программа отправляет сообщения соответствующей оконной процедуре (с помощью функции DispatchMessage).

Смысл этого двухступенчатого процесса – сохранение сообщений в системной очереди сообщений и дальнейшая их передача в очередь сообщений приложения – в синхронизации.

  • Если пользователь печатает на клавиатуре быстрее, чем программа может обрабатывать поступающую информацию, Windows сохраняет информацию о дополнительных нажатиях клавиш в системной очереди сообщений, поскольку одно из дополнительных нажатий может быть переключением фокуса ввода на другую программу. Информацию о последующих нажатиях следует затем направлять в другую программу. Таким образом, Windows корректно синхронизирует такие события клавиатуры.

Для отражения различных событий клавиатуры Windows посылает программам восемь различных сообщений. Программы вполне могут игнорировать многие из них; кроме того, в большинстве случаев, в этих сообщениях от клавиатуры содержится значительно больше закодированной информации, чем нужно приложению.

Сообщения, которые приложение получает от Windows о событиях, относящихся к клавиатуре, различаются на аппаратные (keystrokes) и символьные (characters). Такое положение соответствует двум представлениям о клавиатуре.

  • Во-первых, клавиатуру можно считать набором клавиш. В клавиатуре имеется только одна клавиша <A>. Нажатие на эту клавишу является аппаратным событием; отпускание этой клавиши является аппаратным событием.
  • Во-вторых, клавиатура также является устройством ввода, генерирующим отображаемые символы. Клавиша <A>, в зависимости от состояния клавиш <Ctrl>, <Shift> и <CapsLock>, может стать источником нескольких символов. Обычно, этим сомволом является строчное ‘a’. Если же нажата клавиша <Shift> или установлен режим <CapsLock>, то этим символом является прописное ‘A’. Если нажата клавиша <Ctrl>, этим символом является <Ctrl+A>.

Для сочетаний двух аппаратных событий, которые генерируют отображаемые символы, Windows посылает программе и оба аппаратных и символьное сообщение.

  • Некоторые клавиши не генерируют символов. Это такие клавиши, как клавиши переключения, функциональные клавиши, клавиши управления курсором и специальные клавиши, такие как <Insert> и <Delete>. Для таких клавиш Windows вырабатывает только аппаратные сообщения.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: