C语言 如何在一段时间内检测键盘是否按下

Python014

C语言 如何在一段时间内检测键盘是否按下,第1张

C语言实现的键盘检测:

/*

检测当前是否有键盘输入,并更新键值JR_KeyValue

*/

int

JR_AnyKeys(void)

/*

返回键值ASCII码

对应自定义键值

*/

int

JR_GetKeyNum(void)

/*

检测指定键是否有按下

*/

int

JR_IsKeyDown(const

int

key)

BUG:在一次检测中多次调用函数JR_GetKeyNum()就会出错了。

FIX:把JR_KeyBoard.c文件中的JR_GetKeyNum()函数里面的第一句“JR_AnyKeys()”注释掉就可以了。

#include <bios.h>

#include <stdio.h>

main()

{

int key

for()

{

if (bioskey(1)) /*有键按下,读取键值*/

key=bioskey(0)

else/*无键按下,返回0*/

key=0

switch(key)

{case 0: ...../*无按键,执行该操作*/

case 0xXXXXH:..../*不同键值,做不同处理*/

。。。。。

}

}

}

该程序段功能:

判断是否有键按下,若有进行不同操作,若无进行其他操作。

相关原理:

函数名: bioskey

功 能: 直接使用BIOS服务的键盘接口

函数原型:int bioskey (int cmd)

说明:bioskey()的函数原型在bios.h中

bioskey()完成直接键盘操作,cmd的值决定执行什么操作。

cmd = 1:

当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。

键盘有按键时,会把键值(扫描码)存入缓冲区,当需要判断是否有键按下时,扫描缓冲区,为空则无键按下,不为空则有键按下。注意:该功能并不清空缓冲区。

cmd = 0:

当cmd是0,bioskey()返回键盘键入的值。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。

其操作步骤为:

1.检测缓冲区是否有数据;

2.没有则继续第一步;

3.读取缓冲区第一个单元中的键盘输入

4.读取的扫描码

5.将已读取的键盘输入从缓冲区删除