bioskey

王朝百科·作者佚名  2010-01-15
窄屏简体版  字體: |||超大  

函数名: 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中无法使用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航