int bioskey(int cmd)
unsigned _bios_keybrd(unsigned cmd)
Эти функции не определены стандартом ANSI С. Файл bios.h содержит также несколько макросов, которые могут быть использованы в качестве параметров этих функций.
Функции bioskey() и _bios_keybrd() выполняют прямые операции с клавиатурой. Параметр cmd определяет, какая именно операция будет выполняться.
Если cmd равен 0 или макросу _KEYBRD_READ, то обе функции возвращают нажатую клавишу. (Они будут ждать, пока клавиша не будет нажата.) Обе функции возвращают 16-разрядное значение, которое состоит из двух различных величин. Младший байт содержит ASCII-код в том случае, если нажата «обычная» клавиша. При нажатии «специальной» клавиши он содержит 0. Специальные клавиши включают в себя клавиши-стрелки, функциональные клавиши и т.д. Старший байт содержит код клавиши.
Если cmd равен 1 или макросу _KEYBRD_READY, то обе функции выполняют проверку нажатия клавиши. Они возвращают значение нажатой клавиши (—1 для CTRL-BRK), которое является ненулевым в случае нажатия клавиши и нулевым в противном случае.
Когда параметр cmd равен 2 или макросу _KEYBRD_SHIFTSTATUS, то возвращается статус сдвига. Статус различных клавиш, которые сдвигают состояние, кодируется в младшем байте возвращаемой величины, как показано ниже:
Разряд | Значение |
---|---|
0 | Нажата правая клавиша SHIFT |
1 | Нажата левая клавиша SHIFT |
2 | Нажата клавиша CTRL |
3 | Нажата клавиша ALT |
4 | Нажата клавиша SCROLL LOCK |
5 | Нажата клавиша NUM LOCK |
6 | Нажата клавиша CUPS LOCK |
7 | Нажата клавиша INS |
Следующее замечание касается только функции _bios_keybrd(). Если параметр cmd равен _NKEYBRD_READ, то функция _bios_keybrd() читает код расширенной клавиатуры. Если параметр cmd равен _NKEYBRD_READY, то проверяются дополнительные клавиши расширенной клавиатуры. Наконец, если cmd равен _NKEYBRD_SHIFTSTATUS, то возвращается следующая информация статуса, которая записывается в старший байт возвращаемой величины:
Разряд | Значение |
---|---|
8 | Нажата левая клавиша CTRL |
9 | Нажата левая клавиша ALT |
10 | Нажата правая клавиша CTRL |
11 | Нажата правая клавиша ALT |
12 | Нажата клавиша SCROLL LOCK |
13 | Нажата клавиша NUM LOCK |
14 | Нажата клавиша CUPS LOCK |
15 | Нажата левая клавиша SYSREQ |