Справочник программиста на персональном компьютере фирмы 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 'переключаем переменную