C语言bioskey()函数问题
答案:2 悬赏:0
解决时间 2021-03-06 23:52
- 提问者网友:姑娘长的好罪过
- 2021-03-06 20:14
C语言bioskey()函数问题
最佳答案
- 二级知识专家网友:第四晚心情
- 2021-03-06 20:49
那我怎么能取出低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
是吗?
追答:是的,你测试一下
追问:好像不行!你试试看...
追答://我这里没有安装TC,你测试一下下面的那个程序
//示例程序:
#include
#include
#include
#include
#include
#include
#define RIGHT 0x01
#define LEFT 0x02
#define CTRL 0x04
#define ALT 0x08
int main(void)
{
int key, modifiers;
while (bioskey(1) == 0)
;
key = bioskey(0);
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("]");
}
if (isalnum(key))
printf("'%c'
", key);
else
printf("%#02x
", key);
getch();
return 0;
}
//注:bioskey是TC编译环境下的函数,VC中无法使用。
追问:还是不行!不过谢谢你了!剩下的自己来...
答: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
是吗?
追答:是的,你测试一下
追问:好像不行!你试试看...
追答://我这里没有安装TC,你测试一下下面的那个程序
//示例程序:
#include
#include
#include
#include
#include
#include
#define RIGHT 0x01
#define LEFT 0x02
#define CTRL 0x04
#define ALT 0x08
int main(void)
{
int key, modifiers;
while (bioskey(1) == 0)
;
key = bioskey(0);
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("]");
}
if (isalnum(key))
printf("'%c'
", key);
else
printf("%#02x
", key);
getch();
return 0;
}
//注:bioskey是TC编译环境下的函数,VC中无法使用。
追问:还是不行!不过谢谢你了!剩下的自己来...
全部回答
- 1楼网友:酒者煙囻
- 2021-03-06 21:27
unsigned char low8bit = return_value & 0xff;
追问:那cmd等于2是是不是一样通过&取出低8位的值!如果值是1就是shift值为128是lnsert
追问:那cmd等于2是是不是一样通过&取出低8位的值!如果值是1就是shift值为128是lnsert
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯