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;
while (bioskey(1) ==
0);
key = bioskey(0);
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);
return 0;
}