首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

C语言键盘内容读取

发布网友 发布时间:2022-04-20 10:03

我来回答

5个回答

热心网友 时间:2022-07-12 06:43

综观TC提供的键盘输入函数,以bioskey函数为最合适选择。

int bioskey(int cmd);
使用BIOS中断0x16执行各种键盘操作。参数cmd确定实际得操作。
bioskey的返回值由cmd决定:
0:低8位非0,返回在队列中等待的下一输入键的ascii字符或键盘的下一次按键输入的ascii字符。低8位为0,则高8位为扩展键盘码。

1:测试是否有可读的输入键,为0,则没有。Ctrl_break 返回0xffff(-1)。否则,返回下一个输入键。键值还保存,供下次cmd=0时bioskey调用返回。

2:请求当前换档键状态。状态值由下列值相或(or)得到:

位7 0x80 Insert ON
6 0x40 Caps ON
5 0x20 Numlock ON
4 0x10 Scroll Lock ON
3 0x08 ALT
2 0x04 CTRL
1 0x02 <- SHIFT
0 0x01 -> SHIFT

为了方便起见,我们首先定义一些常用功能键的键值。

#define ReturnKey 0x0d
#define ESC 0x1b
#define Back 0x08

#define LeftArrow 0x4b00
#define RightArrow 0x4d00
#define UpArrow 0x4800
#define DownArrow 0x5000

#define PageUp 0x4900
#define PageDown 0x5100
#define Home 0x4700
#define End 0x4f00

#define F1 0x3b00
#define F2 0x3c00
#define F3 0x3d00
#define F4 0x3e00
#define F5 0x3f00
#define F6 0x4000
#define F7 0x4100
#define F8 0x4200
#define F9 0x4300
#define F10 0x4400

int GetKey(void)
{
int tKey;
while(bioskey(1)==0)
;

tKey=bioskey(0);
if ((tKey & 0xff)!=0)
tKey=tKey & 0xff;
return tKey;

}

以上代码,可基本完成常用程序键盘读取操作。

但我们必须注意到,对于函数GetKey的定义中,bioskey函数的使用,我们只是对cmd=0,1的情况进行了处理,而对于cmd=2,也即换档键状态没有进行处理,因而诸如ctrl-home等等GetKey不能进行相应的接收,如果确实需要,须继续扩充GetKey函数。

热心网友 时间:2022-07-12 06:43

你可以用一下字符读取函数或字符串读取函数
字符读取 getchar();
字符串 gets();

注意书写格式
char a;
a=getchar(); //读取一个字符给变量a
putchar(a);//输出字符

char b[100];
gets(b);//读取字符串给数组b
puts(b);//输出字符串
2种读取方式不同,另如果同时多条读取需要用fflush(stdin)清空缓存

fflush(stdin);//可以先不写,先写是为了保证缓存可用
char a;
char b[100];
a=getchar();
putchar(a);
fflush(stdin);
gets(b);
puts(b);

热心网友 时间:2022-07-12 06:44

获取键盘内容例程:
#include "stdio.h"
int main(void){
char a,b;
scanf(" %c",&a);
scanf(" %c",&b);
printf("%c %c\n",a,b);
return 0;
}

热心网友 时间:2022-07-12 06:44

可以用bioskey函数来读取键盘的功能键!

热心网友 时间:2022-07-12 06:45

如果要用到箭头啊,功能键这些键的话,就用bioskey(0)这个函数

switch(bioskey(0))
{
case 0x4800:...
/*这里的0x4800是相应的键的扫描码,因为bioskey(0)返回的是键的扫描码,这个是哪个箭头的忘了*/
case ....
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com