Страница 21 из 26
Раздел 3. Сводка кодов клавиш и применений. Различные коды клавиш и коды символов могут приводить к недо- разумениям. В нижеприведенных таблицах все они перечислены. Обра- тите внимание на следующие аномалии:
- клавиша Ins является единственной, которая при нажатии, как выдает код символа в буфер клавиатуры, так и меняет статус ре- гистра клавиш-переключателей.
- имеется 4 кода ASCII, которые могут быть получены двумя способами. ASCII 8 - нажатием клавиши BackSpace и Ctrl-H, ASCII 9 - клавиши Tab и Ctrl-I, ASCII 13 - клавиши Enter и Ctrl-M, а ASCII 27 - клавиши Esc и Ctrl-[.
- символы, соответствующие 32 управляющим кодам ASCII не выво- дятся на экран, при использовании функций ввода с клавиатуры, обеспечивающих автоматическое эхо. Они могут быть выведены либо с помощью функции 10H прерывания 10H, либо прямым выводом в память дисплея (оба способа обсуждаются в [4.3.1]).
- комбинации клавиши Ctrl с буквами алфавита генерируют одно- байтные коды ASCII. Все остальные комбинации Ctrl генерируют двухбайтные (расширенные) коды.
- клавиша <5> дополнительной клавиатуры не действует, если установлен режим управления курсором клавишей NumLock.
- комбинации Shift-PrtSc и Ctrl-Alt (а также SysReq для AT) это единственные случаи, когда комбинация клавиш приводит к не- медленному вызову некоторой процедуры. Из них только первая пе- репрограммируема. Прерывание обработки Ctrl-Break (также переп- рограммируемое) вызывается только тогда, когда статус Ctrl-Break будет обнаружен процедурой MS DOS.
- любой код ASCII, кроме 0, может быть введен путем нажатия клавиши Alt, набора кода ASCII на дополнительной клавиатуре и, затем, отпускания клавиши Alt. Поскольку код 0 исключен, то рас- ширенные коды не могут быть введены таким способом.
Отметим, что Вы практически ничего не можете сделать, чтобы прео- долеть ограничения, накладываемые на недопустимые комбинации клавиш. Например, Вы не можете определить комбинацию Ctrl + Cur- sorUp, принимая код CursorUp, а затем проверяя регистр статуса перключателей для определения того, была ли нажата клавиша Ctrl. Если Ctrl была нажата, то клавиша CursorUp вообще не выдает ника- кого кода.
|