Страница 13 из 26
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 сдвигает экран вправо
|