Аппаратное обеспечение IBM PC



         

Клавиатурные функции библиотеки Microsoft C


Стандартные библиотеки трансляторов Microsoft QuickC и C 6.0 содержат набор функций, предназначенных для работы с клавиатурой. Эти функции повторяют и немного дополняют возможности функций MS-DOS и BIOS, обслуживающих клавиатуру.

Самые простые из них - getch() и getche(). Они описаны в файле conio.h.

Функция getch() имеет следующий прототип:

int getch(void);

Эта функция возвращает ASCII-код прочитанного из клавиатурного буфера символа, причем прочитанный символ не отображается на экране. Если была нажата функциональная клавиша или клавиша перемещения курсора, функция возвращает 0. В этом случае функцию надо вызвать еще раз для получения расширенного ASCII-кода нажатой клавиши.

Функция обрабатывает клавиши Ctrl-С и Ctrl-Break - при вводе этих комбинаций клавиш работа программы завершается.

Если клавиатурный буфер пуст, программа переводится в состояние ожидания.

Функция getche() полностью аналогична функции getch(), за исключением того, что прочитанный символ отображается на экране. Приведем прототип функции getche():

int getche(void);

Приведем пример программы, отображающей на экране ASCII-коды и расширенные ASCII-коды нажимаемых клавиш:

#include <conio.h> #include <ctype.h> #include <stdio.h>

void main() { int key;

// Читаем в цикле символы с клавиатуры и отображаем // ASCII-коды нажатых клавиш. // Выходим из цикла при нажатии не клавишу ESC

for(;;) {

// Читаем символ

key = getch();

// Если прочитанный символ равен 0, вызываем функцию getch() // для получения расширенного ASCII-кода нажатой клавиши

if( (key == 0) (key == 0xe0) ) { key = getch(); printf( "Расширенный ASCII-код:\t" ); }

else printf( "ASCII-код:\t");

printf("%d\n",key);

// При нажатии на клавишу ESC выходим из цикла

if( key == 27) break; } }

Для проверки буфера клавиатуры на наличие символов можно использовать функцию kbhit(). Она также описана в файле conio.h:

int kbhit(void);

Если буфер клавиатуры не пуст, функция возвращает ненулевое значение. В этом случае программа может прочитать символы из буфера клавиатуры при помощи фукнкций getch() и getche(). Если буфер клавиатуры пуст, функция возвращает нулевое значение.




Содержание  Назад  Вперед