CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
bioskey
bioskey
Функция Интерфейс с клавиатурой при помощи функций BIOS. Синтаксис #include<bios.h> int bioskey(int cmd); Файл, содержащий bios.h прототип Описание bioskey посредством прерывания BIOS 0x16 выполняет различные операции c клавиатурой. Параметр cmd определяет операцию. Возвращаемое Значение, возвращаемое функцией bioskey, зависит от значение выполняемой операции, которая определяется аргументом cmd: --------------------------------------------------- cmd Операция --------------------------------------------------- 0 Если младшие 8 бит не нулевые, bioskey возвращает код ASCII следующей нажатой клавиши, ожидающей в очереди. Если младшие 8 битов равны 0, то старшие 8 битов содержат расширенные коды клавиатуры, описание которых вы можете найти в документе "Техническое справочное руководство по IBM PC". 1 Производится проверка, имело ли место нажатие клавиши. Если при проверке возвращается значение 0, это означает, что клавиша не была нажата. В противном случае возвращается значение очередной нажатой клавиши. Сам же код очередной нажатой клавиши сохраняется и будет возвращен при следующем вызове функции bioskey при значении параметра cmd, равном нулю. 2 Запрашивает текущий статус клавиш типа SHIFT. Значение получается при логическом сложении следующих кодов (операции "ИЛИ") Бит 7 0x80 INSERT нажат Бит 6 0x40 CAPS нажат Бит 5 0x20 NUM LOCK нажат Бит 4 0x10 SCROLL LOCK нажат Бит 3 0x08 ALT нажат Бит 2 0x04 CTRL нажат Бит 1 0x02 LEFT SHIFT нажат Бит 0 0x01 RIGHT SHIFT нажат Переносимость bioskey поддерживается только на компьютерах IBM PC или совместимых с ними. Пример: #include <stdio.h> #include <bios.h> #include <ctype.h> #define RIGHT 0x0001 #define LEFT 0x0002 #define CTRL 0x0004 #define ALT 0x0008 int main(void) { int key, modifiers; /* Функция 1 возвращает 0, пока не будет нажата клавиша. Ожидание ввода. */; /* now use function 0 to get return value of while (bioskey(1) == 0); /* Теперь используем функцию 0, чтобы получить значение клавиши */ key = bioskey(0); /* Используем функцию 2, чтобы определить, используются ли клавиши типа SHIFT */. modifiers = bioskey(2); if (modifiers) { printf("["); if (modifiers & RIGHT) printf("RIGHT "); if (modifiers & LEFT ) printf("LEFT "); if (modifiers & CTRL ) printf("CTRL "); if (modifiers & ALT ) printf("ALT "); printf("] "); } /* вывести символ нажатой клавишу */ if (isalnum(key & 0xFF)) printf("'%c'\n",key); else printf("%#02x\n",key); }