检测键盘输入
程序员文章站
2022-05-27 10:32:23
...
对于键盘的输入检测通常处理方法是这样的
程序以while(1)的方式通过bioskey(1)不断监测是否有键盘输入。
如果监测到键盘输入,通过bioskey(0)把键盘的输入保存下来。
bioskey(0)的返回值包含了High-扫描码和low-ASCII.
bioskey(0)其实像getchar()一样阻塞等待,只是获取到不是ASCII,而是扫描码和ASCII。所以上面的程序也可以把
去掉
有其他朋友提到
[quote]
扫描码是每个键唯一的。
比方键盘上有两个enter,他们的ASCII是一样的,但是扫描码不一样。
[/quote]
但是我用上面的代码测试的时候打印的结果是一样的。
还有有其他朋友提到
[quote]
可以通过bioskey(2)获取特殊按键,比方说活Caps Lock,Shfit,Alt
[/quote]
但是我试过,程序对这些特殊按键没有反应。
如果有哪位朋友看出问题,不吝指点一二。
int key=0;
while(1){
if(bioskey(1)!=0){
key=bioskey(0);
printf("the key pressed is %x\n",key);
}
}
程序以while(1)的方式通过bioskey(1)不断监测是否有键盘输入。
如果监测到键盘输入,通过bioskey(0)把键盘的输入保存下来。
bioskey(0)的返回值包含了High-扫描码和low-ASCII.
bioskey(0)其实像getchar()一样阻塞等待,只是获取到不是ASCII,而是扫描码和ASCII。所以上面的程序也可以把
if(bioskey(1)!=0)
去掉
有其他朋友提到
[quote]
扫描码是每个键唯一的。
比方键盘上有两个enter,他们的ASCII是一样的,但是扫描码不一样。
[/quote]
但是我用上面的代码测试的时候打印的结果是一样的。
还有有其他朋友提到
[quote]
可以通过bioskey(2)获取特殊按键,比方说活Caps Lock,Shfit,Alt
[/quote]
但是我试过,程序对这些特殊按键没有反应。
如果有哪位朋友看出问题,不吝指点一二。