Получение состояния переключающих клавиш
Функция 02h возвращает в регистре AL состояние переключающих клавиш, таких как <Shift>, <Control>, <Alt>, <ScrollLock>, <NumLock>, <CapsLock>, <Insert>:
Регистры на входе: | AH = 02h | ||
Регистры на выходе: | AL = Байт состояния переключающих клавиш |
Формат байта состояния соответствует формату байта, находящегося в области данных BIOS по адресу 0000h:0417h:
Биты | Описание | ||
0 | Нажата правая клавиша <Shift> | ||
1 | Нажата левая клавиша <Shift> | ||
2 | Нажата комбинация клавиш <Control+Shift> с левой или правой стороны | ||
3 | Нажата комбинация клавиш <Alt+Shift> с левой или правой стороны | ||
4 | Состояние клавиши <ScrollLock> | ||
5 | Состояние клавиши <NumLock> | ||
6 | Состояние клавиши <CapsLock> | ||
7 | Состояние клавиши <Insert> |
Функция 02h может быть использована для анализа текущего состояния переключающих клавиш.
Ниже показан фрагмент кода, в котором проверяется состояние клавиши <CapsLock>:
rg.h.ah = 2;
int86(0x16, &rg, &rg);
if((rg.h.al & 0x40) == 0)
{
// Клавиша <CapsLock> не нажата,
// соответствующий светодиод не горит
. . .
}
else
{
// Клавиша <CapsLock> нажата
. . .
}
Функция 12h возвращает в регистре AL состояние переключающих клавиш, таких как <Shift>, <Control>, <Alt>, <ScrollLock>, <NumLock>, <CapsLock>, <Insert> и используется только для 101-клавишных клавиатур:
Регистры на входе: | AH = 12h | ||
Регистры на выходе: | AL = Байт состояния переключающих клавиш |
Эта функция определена для BIOS, изготовленной после 15 декабря 1985 года.