作者sjgau (sjgau)
看板Programming
标题Re: [问题] 我想抓取键盘上上下左右键的十进制值
时间Wed Jun 11 14:30:39 2008
答案出来了
程式如下
0xe0 + 0x48: 向上按键
0xe0 + 0x50: . . .
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
int main()
{
int ch1;
for (;;) {
// remove type- ahead
while (kbhit()) {
getch();
}
printf("\n\n Press [Esc] for stop! ...");
do {
// wait for keyPressed
} while (!kbhit());
ch1= getch();
printf("\n");
printf("ch1= 0x%02x\n", ch1);
if (ch1 == 0x1b) {
exit(1);
}
// remove extra keyStroke
while (kbhit()) {
ch1= getch();
printf("*** ch1= 0x%02x\n", ch1);
}
}
return(0);
}// end of main()
※ 引述《sjgau (sjgau)》之铭言:
: 键盘上的某些 key, 会送出两个 code
: 0 + 0xXX
: 譬如说 : F1 - F12
: 所以,当你侦测到
: ch == 0x00 的时候,
: 你要赶快抓 下一个 code
: 就是你要的的 0 + 0xXX
: ※ 引述《icetofux (豆腐)》之铭言:
: : 我想抓取键盘上上下左右键的十进制值,为此写了下面这段:
: : char ch;
: : for(;;)
: : {
: : cout<<"KEYIN A CHAR:";
: : ch=getch();
: : cout<<endl;
: : cout<<"char:"<<ch<<",ASCII:"<<int(ch)<<endl;
: : }
: : 从网路上的ASCII table来看,从A~Z、a~z甚至是@#%等符号都可以正确显示出
: : 对应的ASCII码十进制值,但上下左右却不行,请问是为什麽呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.231.35.110
1F:推 LPH66:0xe0正是-32 140.112.30.84 06/11 18:06
2F:→ sjgau:为什麽不 (unsigned char) --> 224 118.231.34.78 06/12 04:49