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

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

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

Для IBM PC и XT дополнительная цифровая клавиатура включает цифровые клавиши, клавиши <Ins> и <Del>, а также клавиши + и -. Hа AT добавляется клавиша "System Request" (Sys Rec), в то время как PCjr имеет только 4 клавиши перемещения курсора (остальные могут быть эмулированы специальными комбинациями с клавишами <Shift> и <Fn>, описанными в {3.2.2} и {3.2.5}). Kлавиша <NumLock> переключает между цифрами и клавишами управления курсором. Kлавиши <Ins> и <Del> работают только если режим <NumLock> включен, т.е. дополнительная клавиатура выдает цифры. Kлавиши + и выдают одни и те же коды независимо от установки режима <NumLock>.

Цифровые клавиши дополнительной клавиатуры выдают в точности те же однобайтные коды, которые выдают цифровые клавиши верхнего ряда основной клавиатуры - т.е. коды ASCII от 48 до 57 для цифр от 0 до 9. Это верно и для клавиш + и -. Программисты на ассемблере могут определить какая из двух клавиш нажата по скан-коду клавиши, который находится в AH при возврате как из прерывания 16H, так и из процедур ввода одной клавиши прерывания 21H. Отметим, что любая из клавиш <Shift> переводит клавиши дополнительной клавиатуры в режим противоположный тому, который установлен клавишей <NumLock>. Установка клавиши <CapsLock> не имеет значения. Kлавиша "5" в центре активна только как цифровая клавиша и в режиме перемещения курсора ввобще не выдает кода.

Kроме четырех общепринятых стрелок клавиши управления курсором включают также <Home>, <End>, <PgUp> и <PgDn>, которые часто используются для перемещения курсора сразу на целую строку или страницу. Все они генерируют двухбайтные расширенные коды. Эти клавиши не обеспечивают прямого контроля над курсором. Они просто выдают коды, как и все другие клавиши, и это уже задача программиста преобразовать эти коды в перемещения курсора на экране.

Допустимы некоторые комбинации клавиш дополнительной клавиатуры с клавишей Ctrl. <NumLock> должен соответствовать режиму управления курсором, чтобы эти комбинации работали. В {3.1.7} показано как Ваша программа может автоматически устанавливать режим NumLock. Вот перечень кодов клавиш дополнительной клавиатуры:

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


<~-3.2.3 Использование клавиш-переключателей: NumLock, CapsLock, Ins и ScrollLock.
Содержание
3.2.5 Использование функциональных клавиш.-~>

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