Страница 14 из 26
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 'переключаем переменную
|