Справочник программиста на персональном компьютере фирмы IBM. Клавиатура - Использование цифровой дополнительной клавиатуры и  клавиш перемещения курсора

ОГЛАВЛЕНИЕ

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


   Для IBM PC и  XT  дополнительная  цифровая клавиатура включает
цифровые  клавиши, клавиши <Ins> и <Del>, а также клавиши + и  -.
На AT добавляется клавиша  "System Request" (Sys Rec), в то время
как  PCjr  имеет только 4 клавиши перемещения курсора  (остальные
могут быть  эмулированы  специальными  комбинациями  с  клавишами
<Shift>  и <Fn>, описанными в [3.2.2] и [3.2.5]).  Клавиша  <Num-
Lock> переключает между цифрами  и клавишами управления курсором.
Клавиши  <Ins> и <Del> работают только если режим <NumLock> вклю-
чен, т.е.  дополнительная клавиатура выдает цифры.  Клавиши + и -
выдают  одни  и те же коды независимо от установки  режима  <Num-
Lock>.
   Цифровые клавиши  дополнительной  клавиатуры выдают в точности
те  же однобайтные коды, которые выдают цифровые клавиши верхнего
ряда основной клавиатуры - т.е.   коды ASCII от 48 до 57 для цифр
от 0 до 9.  Это верно и для клавиш + и -. Программисты на ассемб-
лере могут определить какая из  двух  клавиш  нажата по скан-коду
клавиши,  который находится в AH при возврате как  из  прерывания
16H, так и из процедур ввода одной клавиши прерывания 21H.  Отме-
тим, что любая из клавиш <Shift> переводит клавиши дополнительной
клавиатуры в режим противоположный  тому, который установлен кла-
вишей <NumLock>.  Установка клавиши <CapsLock> не имеет значения.
Клавиша "5" в  центре  активна  только  как  цифровая клавиша и в
режиме перемещения курсора ввобще не выдает кода.
   Кроме четырех общепринятых стрелок клавиши управления курсором
включают также  <Home>,  <End>,  <PgUp>  и  <PgDn>, которые часто
используются  для  перемещения курсора сразу на целую строку  или
страницу.  Все они генерируют двухбайтные  расширенные коды.  Эти
клавиши не обеспечивают прямого контроля над курсором. Они просто
выдают коды, как и все другие клавиши,  и это уже задача програм-
миста преобразовать эти коды в перемещения курсора на экране.
   Допустимы некоторые комбинации клавиш дополнительной клавиату-
ры с клавишей Ctrl.  <NumLock>  должен соответствовать режиму уп-
равления курсором, чтобы эти комбинации работали. В [3.1.7] пока-
зано как Ваша программа может  автоматически  устанавливать режим
NumLock. Вот перечень кодов клавиш дополнительной клавиатуры:

   Коды ASCII:          43                   +
                        45                   -
                        46                   .
                        48-57                0-9
   Расширенные коды:

   72,75,77,80          CursorUp,Left,Right&Down
   71,73,79,81          Home,PgUp,End,PgDn
   82,83                Ins,Del
   115,116              Ctlr-cursor left, -cursor right
   117,118,119,132      Ctlr-end, -PgDn, -Home, -PgUp

   AT  имеет  84-ю клавишу, Sys Req, которая уникальна  по  своей
функции. Клавиша предназначена  для многопользовательских систем,
как способ входа в главное меню системы.  Когда клавиша нажимает-
ся, в AX появляется код 8500H и  выполняется  прерывание 15H. При
отпускании  клавиши в AX появляется код 8501H, и опять же  выпол-
няется прерывание 15H. BIOS AT  не обрабатывает функции 84H и 85H
прерывания  15H,  а просто делает возврат.  Но  можно  программно
заменить вектор прерывания для 15H, чтобы он указывал на процеду-
ру  обработки  клавиши Sys Req.  Такая процедура  должна  сначала
прочитать AL, чтобы узнать  была  ли  клавиша нажата (AL = 0) или
отпущена (AL = 1).  Заметим, что прерывание 15H предоставляет ряд
процедур, некоторые из  которых   могут  потребоваться  программе
обработки  Sys  Req.  В этом случае процедура обработки  Sys  Req
должна восстанавливать замененный  ей вектор прерывания, и если в
AH указаны функции отличные от 84H и 85H, то надо передать управ-
ление оригинальному прерыванию 15H [1.2.4].