词条 | bioskey |
释义 | 函数名: bioskey 功 能: 直接使用BIOS服务的键盘接口 函数原型:int bioskey (int cmd) 说明:bioskey()的函数原型在bios.h中 bioskey()完成直接键盘操作,cmd的值决定执行什么操作。 cmd = 0: 当cmd是0,bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。 cmd = 1: 当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。 cmd = 2: 当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。 字节位 含义 0 右边Shift键状态 1 左边Shift键状态 2 Ctrl键状态 3 Alt键状态 4 ScrollLock键状态 5 NumLock键状态 6 CapsLock键状态 7 Insert键状态 字节位为1表示该键被按下,为0表示松开。 程序例: #include <stdio.h> #include <bios.h> #include <ctype.h> #define RIGHT 0x01 #define LEFT 0x02 #define CTRL 0x04 #define ALT 0x08 int main(void) { int key, modifiers; /* function 1 returns 0 until a key is pressed */ while (bioskey(1) == 0); /* function 0 returns the key that is waiting */ key = bioskey(0); /* use function 2 to determine if shift keys were used */ 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("]"); } /* print out the character read */ if (isalnum(key & 0xFF)) printf("'%c'\", key); else printf("%#02x\", key); return 0; } 注:此函数是TC编译环境下的函数,VC中无法使用。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。