Справочник программиста на персональном компьютере фирмы IBM. Клавиатура - Использование клавиш-переключателей: Shift, Ctrl  и Alt

ОГЛАВЛЕНИЕ

     3.2.2  Использование клавиш-переключателей: Shift, Ctrl  и Alt.


   Три типа клавиш-переключателей заставляют только другие клави-
ши  клавиатуры генерировать различные коды.  Как  правило,  такие
комбинации генерируют  расширенные  коды.   Но в двух случаях они
дают  коды ASCII: (1) когда используется клавиша <Shift> с
клавишами
алфавитно-цифровых символов и  (2)  нажатие  комбинации клавиш от
Ctrl-A до Ctrl-Z дает ASCII коды от 1 до 26. Все остальные комби-
нации дают расширенные коды, перечисленные  в [3.3.5]. PCjr имеет
несколько исключений, которые обсуждаются ниже.
   Недопустимые комбинации клавиш не производят кода, вообще.  За
исключением случая специальных комбинаций с Ctrl-Alt, одновремен-
ное нажатие нескольких переключателей приводит к тому, что только
один из них становится эффективным, причем приоритет у Alt, затем
Ctrl, и затем Shift. В [3.1.7] показано как проверить нажата ли в
данный  момент  клавиша-переключатель.   В  [3.2.3] показано, как
использовать клавишу ScrollLock, в качестве переключателя с любой
другой клавишей клавиатуры.  Другие комбинации с клавишами-перек-
лючателями  можно сделать допустимыми только полностью  переписав
прерывание  клавиатуры,   которое   заменило   бы прерывание BIOS
[3.1.9].
   Имеется проблема, связанная с некоторыми комбинациями с клави-
шей Ctrl, такими как Ctrl + H, I, M и [, поскольку они генерируют
коды ASCII, идентичные тем, которые генерируют клавиши  <BackSpa-
ce>, <Tab>, <Enter> и <Escape>.  В [3.1.8] показано как программа
на ассемблере может может, проверив скан-коды, определить была ли
нажата управляющая клавиша или  комбинация буквы с Ctrl (скан-код
находится  в AH, когда мы получаем код нажатой клавиши через пре-
рывание 16H).  К  сожалению,  программы  на  Бейсике лишены такой
возможности.  В таком случае программа может попытаться различить
эти две возможности, анализируя состояние регистра статуса.  Если
бит 2 байта статуса по адресу  0040:0017  установлен,  то клавиша
Ctrl  -  нажата.  Этот метод работает только в тот момент,  когда
происходит нажатие клавиши, но  не  тогда, когда Вы берете символ
из буфера клавиатуры через некоторое время.
   Клавиатура PCjr имеет только 63 клавиши, по сравнению с 83 для
IBM PC или XT и 84 для AT. Некоторые комбинации клавиш-переключа-
телей  служат для имитации некоторых недостающих клавиш (комбина-
ции с использованием функциональных клавиш приведены в [3.2.5]):

   Комбинация клавиш PCjr      PC/XT/AT эквиваленты

   Alt + Fn + 0-9              0-9 (скан-коды дополнительной циф-
                               ровой клавиатуры
   Alt + /                     \
   Alt + '                     `
   Alt + [                     |
   Alt + ]                     ~
   Alt + .                     * (скан-код, как от клавиши PrtSc
   Shift + Del                 . (скан-код, как от доп. кл-ры)

   Клавиатура PCjr допускает также  следующие уникальные комбина-
ции с участием клавиш-переключателей:

   Fn + Shift + Esc            переключает цифровые клавиши в
                               функциональные
   Ctrl + Alt + CapsLock       переключает звуковое подтверждение
                               нажатия клавиши
   Ctrl + Alt + Ins            запускает диагностику
   Ctrl + Alt + CursorLeft     сдвигает экран влево
   Ctrl + Alt + CursorRight    сдвигает экран вправо