C语言bioskey()函数问题
当cmd是0,bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。
1.那我怎么能取出低8位的ascii的值?
2.当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。有是什么意思?
最后详细点。。。谢谢 展开
那我怎么能取出低8位的ascii的值?
答:short a = bioskey(cmd);//要获取普通键时,cmd的值设置为0;即:short a = bioskey(0);
int low = a &0xff; //低八位放在了low里了
int high = a >>8; //高八为放在了high里了
short a = bioskey(2);
int low = a &0xff; //第八位放在了low里了
当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表示松开。
不是说低八位吗?也就是0-7这八位。如只按下了Ctrl键,就是:[高位] 00000100 [地位]; 也就是low = 4;
加入按下Ctrl键的同时,也按下了Alt键,就是:[高位] 00001100 [地位]; 也就是low = 12;
你意思是当cmd等于2时
按右边shift键高8位为0低8位为1 00000001
按lnsert键高8位为0低8位为128 10000000
是吗?
是的,你测试一下