Справочник программиста на персональном компьютере фирмы IBM. Клавиатура - Использование клавиш-переключателей: NumLock,  CapsLock, Ins и ScrollLock

ОГЛАВЛЕНИЕ

     3.2.3 Использование клавиш-переключателей: NumLock,  CapsLock, Ins и ScrollLock.


   За исключением клавиши Ins, все остальные клавиши-переключате-
ли  не производят кода, который помещался бы в буфер  клавиатуры.
Вместо этого, они изменяют состояние двух байтов статуса, которые
расположены   в  области  данных  BIOS  по  адресам  0040:0017  и
0040:0018.  Прерывание клавиатуры проверяет установку этих байтов
перед  тем как присвоить код введенному символу.  Ваши  программы
имеют доступ к регистрам статуса и могут изменить установку любой
из клавиш-переключателей как объяснено в [3.1.7].
   Другие  биты регистра статуса показывают нажата ли данная кла-
виша-переключатель в текущий момент. Это свойство позволяет прог-
рамме использовать клавиши-переключатели в качестве клавиш  сдви-
га.  Возможны  потенциальные  применения  этого,  пока не создано
новых кодов клавиш.  Например, <ScrollLock> может быть итспользо-
ван для того, чтобы добавить добавочный  набор комбинаций сдвиг +
функциональная клавиатура.  Программа, которая будет получать код
обычной  функциональной   клавиши,   проверять  нажата ли клавиша
<ScrollLock>  и соответственно интерпретировать нажатие  клавиши.
Отметим, что любая из клавиш  <Shift>  обращает текущую установку
клавиши <NumLock>.
   Клавиша  <Ins> помещает в буфер клавиатуры код  0;82,  который
Ваша программа может прочитать в  любой момент.  Однако установка
для  <Ins>  в байтах регистра статуса меняется немедленно.   Даже
если в буфере нет места для кода <Ins>, то в регистре статуса при
нажатии  клавиши  вносятся изменения.  Как <Ins>, так и  <Scroll-
Lock>, не влияют на другие клавиши клавиатуры (в отличие от <Num-
Lock>  и  <CapsLock>).  Вы можете приписать им любую роль,  какую
захотите.   Техническое  руководство  IBM утверждает, что клавиша
<ScrollLock> должна использоваться для переключения между состоя-
ниями, когда  нажатие  клавиши  перемещения  курсора  приводит  к
сдвижке экрана, а не к передвижению курсора.
   Конечно,  Вы можете создать все требуемые Вашей программе кла-
виши-переключатели просто  назначив  клавиши  для этой цели. Хотя
для этой цели Вы не имеете готовых регистров статуса, но Вы може-
те создать переменную, значение которой -1 соответствует включен-
ному состоянию Вашего переключателя, а значение 0 - выключенному.
Например, используем клавишу F10 для включения и выключения пере-
менной Clock:

100 '''переключение статуса переменной
110 CLOCK = -1            'начинаем с включенным состоянием
120 IF X<=100 THEN NOT CLOCK 'переключаем переменную