Большинство клавиш клавиатуры имеют постоянное значение, когда они объединяются в нажатии с различными клавишами модификаторов (SHIFT, CTRL и ALT). Все обычные клавиши клавиатуры (символьные и специальных символов) имеют код клавиши соответствующий значению ASCII.

Значения кода клавишы и клавиши модификаторв возвращаются в структуре EventRec. Код клавиши может быть найден в EventRec.message, а код клавиши модификатора может быть найден в EventRec.modifiers.

Visual FoxPro интерпретирует нажатия некоторых клавиш в зависимости от используемой клавиши модификатора в виде различных значений, когда объединяются нажатия клавиш. Например, если нажаты SHIFT+F10, то соответствующие поля в структуре EventRec должны имет значения:

Аналогично, если нажаты CTRL+F10, то значениями в структуре EventRec будут:

Когда с нажатием клавиши используется нажатие более одного модификатора, то значения кодов складываются. Например, если вы нажмете CTRL+SHIFT+F10, то будут возвращены следующие значения:

Значение EventRec.modifiers в предшествующем примере равно 0x3000, так как оба модификатора - и CTRL, и SHIFT - были включены в нажатие клавиши. Поэтому значение клавиши модификатора SHIFT (0x1000) было добавлено к значению клавищи модификатора CTRL (0x2000), в результате чего мы получили значение 0x3000.

NoteЗамечание

Метод интерпретации клавиш в Visual FoxPro (особенно в случае использования совместного использования клавиш с модификаторами) присущ Visual FoxPro. Другие программы могут интерпретировать нажатия клавиш по разному. Если клавина нажата в комбинации с одним или множеством клавиш модификаторов (SHIFT, CTRL и ALT), то высший полубайт будет представлять используемые модификаторы.

В приведенной ниже таблице показывается, что клавиша F8 имеет разные коды в зависимости от используемого модификатора.

Нажатые клавиши Модификаторы Значение кода клавиши F8

F8

Нет

\x142

SHIFT+F8

SHIFT

\x15B

CTRL+F8

CTRL

\x165

ALT+F8

ALT

\x16F

Каждая специальная клавиша, которая может быть объединена с модификаторами, в случае объединения будет иметь уникальное значение своего кода. Если специальная клавиша объединяется с множеством модификаторов, то уникальное значение, присваиваемое клавише представляет собой значение в соответствии с приведенными ниже правилами:

  1. Сначала проверяется - была ли нажата комбинация клавиш, включая ALT, так как основной клавише будет присвоено ее значение сложенное со значением кода клавиши ALT.

  2. Если комбинация клавиш не включает в себя клавишу ALT, то проверяется - была ли нажата клавиша CTRL, так как основной клавише будет присвоено ее значение сложенное со значением кода клавиши  CTRL.

  3. Если не были нажаты ни ALT, ни CTRL, то смотрим - была ли нажата клавиша SHIFT.

  4. И наконец, в случае, если модификаторы вообще не использовались, то присваивается значение основной клавиши без добавления значений кода модификаторов.

Expand image Коды специальных клавиш

Expand imageПример

Expand imageСмотрите также