CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по библиотечным функциям языка Си
bioskey, _bios_keybrd - работа с клавиатурой
Описание
Оба имени обозначают одну функцию. Два произношения нужны для совместимости с разными компиляторами. bioskey передает флаг для BIOS_прерывания 0x14 - - прерывание от клавиатуры. Значения flag: 0 - чтение значения ввода с клавиатуры из буфера ввода. Ждет ввода, если буфер пуст. 1 - определение наличия значений нажатых клавиш в буфере ввода от клавиатуры. 2 - чтение состояния клавиш типа 'shift'.
Использование
#include <bios.h> int bioskey(int flag); int _bios_keybrd (int flag);
Возвращаемое значение
Если flag=0, то возвращаемое значение является рас- ширенным кодом клавиши. ASCII код клавиши находится при этом в младшем байте, а скан-код ее - в старшем байте. Если младший байт нулевой, то это не ASCII код (это может быть стрелка или функциональная кла- виша). Если flag=1, то 0 возвращается при отсутствии ввода от клавиатуры в буфере ввода; в противном слу- чае возвращается расширенный код клавиши. При этом, код клавиши остается в буфере ввода и еще доступен для чтения. Если flag=2, то возвращаемое значение ин- формирует о состоянии 'shift' клавиш: 0x01 - нажата правая shift клавиша 0x02 - нажата левая shift клавиша 0x04 - нажата клавиша Ctrl 0x08 - нажата клавиша Alt 0x10 - включен ключ Scrolllock 0x20 - включен ключ Numlock 0x40 - включен ключ Capslock 0x80 - включен ключ Ins
Пример
#include <bios.h> #include <stdio.h> main () { int key, shift; int lastshift = 0; while (1) { shift=bioskey(2); if(shift!=lastshift) /* Если изменился shift статус*/ printf("shift = 0x%02x\n", shift); /* Если клавиша нажата*/ if (bioskey(1)) { /* Читаем клавишу*/ Key=bioskey(0); if ((Key & 0xFF)== 'q') break; printf("Клавиша = 0x%04x\n", Key); } lastshift=shift; } }