Программирование на C и C++

Онлайн справочник программиста на C и C++

bioskey, _bios_keybrd

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
Пример: