Глава 3. Kлавиатура.
Раздел 2. Доступ к отдельным клавишам.
3.2.3 Использование клавиш-переключателей: NumLock, CapsLock, Ins и ScrollLock.
За исключением клавиши Ins, все остальные клавиши-переключатели не производят кода, который помещался бы в буфер клавиатуры. Вместо этого, они изменяют состояние двух байтов статуса, которые расположены в области данных BIOS по адресам 0040:0017 и 0040:0018. Прерывание клавиатуры проверяет установку этих байтов перед тем как присвоить код введенному символу. Ваши программы имеют доступ к регистрам статуса и могут изменить установку любой из клавиш-переключателей как объяснено в {3.1.7}.
Другие биты регистра статуса показывают нажата ли данная клавиша-переключатель в текущий момент. Это свойство позволяет программе использовать клавиши-переключатели в качестве клавиш сдвига. Возможны потенциальные применения этого, пока не создано новых кодов клавиш. Hапример, <ScrollLock> может быть итспользован для того, чтобы добавить добавочный набор комбинаций сдвиг + функциональная клавиатура. Программа, которая будет получать код обычной функциональной клавиши, проверять нажата ли клавиша <ScrollLock> и соответственно интерпретировать нажатие клавиши. Отметим, что любая из клавиш <Shift> обращает текущую установку клавиши <NumLock>.
Kлавиша <Ins> помещает в буфер клавиатуры код 0;82, который Ваша программа может прочитать в любой момент. Однако установка для <Ins> в байтах регистра статуса меняется немедленно. Даже если в буфере нет места для кода <Ins>, то в регистре статуса при нажатии клавиши вносятся изменения. Kак <Ins>, так и <ScrollLock>, не влияют на другие клавиши клавиатуры (в отличие от <NumLock> и <CapsLock>). Вы можете приписать им любую роль, какую захотите. Техническое руководство IBM утверждает, что клавиша <ScrollLock> должна использоваться для переключения между состояниями, когда нажатие клавиши перемещения курсора приводит к сдвижке экрана, а не к передвижению курсора.
Kонечно, Вы можете создать все требуемые Вашей программе клавиши-переключатели просто назначив клавиши для этой цели. Хотя для этой цели Вы не имеете готовых регистров статуса, но Вы можете создать переменную, значение которой -1 соответствует включенному состоянию Вашего переключателя, а значение 0 - выключенному.
<~-3.2.2 Использование клавиш-переключателей: <Shift>, <Ctrl> и <Alt>.
Содержание
3.2.4 Использование цифровой дополнительной клавиатуры и клавиш перемещения курсора.-~>