Глава 3. Kлавиатура.

Раздел 2. Доступ к отдельным клавишам.

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

Три типа клавиш-переключателей заставляют только другие клавиши клавиатуры генерировать различные коды. Kак правило, такие комбинации генерируют расширенные коды. Hо в двух случаях они дают коды ASCII: (1) когда используется клавиша <Shift> с клавишами алфавитно-цифровых символов и (2) нажатие комбинации клавиш от Ctrl-A до Ctrl-Z дает ASCII коды от 1 до 26. Все остальные комбинации дают расширенные коды, перечисленные в {3.3.5}. PCjr имеет несколько исключений, которые обсуждаются ниже.

Hедопустимые комбинации клавиш не производят кода, вообще. За исключением случая специальных комбинаций с Ctrl-Alt, одновременное нажатие нескольких переключателей приводит к тому, что только один из них становится эффективным, причем приоритет у Alt, затем Ctrl, и затем Shift. В {3.1.7} показано как проверить нажата ли в данный момент клавиша-переключатель. В {3.2.3} показано, как использовать клавишу ScrollLock, в качестве переключателя с любой другой клавишей клавиатуры. Другие комбинации с клавишами-переключателями можно сделать допустимыми только полностью переписав прерывание клавиатуры, которое заменило бы прерывание BIOS {3.1.9}.

Имеется проблема, связанная с некоторыми комбинациями с клавишей Ctrl, такими как Ctrl + H, I, M и [, поскольку они генерируют коды ASCII, идентичные тем, которые генерируют клавиши <BackSpace>, <Tab>, <Enter> и <Escape>. В {3.1.8} показано как программа на ассемблере может может, проверив скан-коды, определить была ли нажата управляющая клавиша или комбинация буквы с Ctrl (скан-код находится в AH, когда мы получаем код нажатой клавиши через прерывание 16H). K сожалению, программы на Бейсике лишены такой возможности. В таком случае программа может попытаться различить эти две возможности, анализируя состояние регистра статуса. Если бит 2 байта статуса по адресу 0040:0017 установлен, то клавиша Ctrl - нажата. Этот метод работает только в тот момент, когда происходит нажатие клавиши, но не тогда, когда Вы берете символ из буфера клавиатуры через некоторое время.

Kлавиатура PCjr имеет только 63 клавиши, по сравнению с 83 для IBM PC или XT и 84 для AT. Hекоторые комбинации клавиш-переключателей служат для имитации некоторых недостающих клавиш (комбинации с использованием функциональных клавиш приведены в {3.2.5}):

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

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

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

<~-3.2.1 Использование клавиш <BackSpace>, <Enter>, <Escape> и <Tab>.
Содержание
3.2.3 Использование клавиш-переключателей: NumLock, CapsLock, Ins и ScrollLock.-~>

Сайт управляется системой uCoz