上下左右 方向键的ASCII码值是多少? 5
thank you very much!!!!!!!!! 展开
键盘上下左右 方向键的键码(keyCode)是38、40、37和39,或者称虚拟ASCII值是38、40、37和39。
下图是虚拟ASCII值:
keyCode(键码),指定与引发事件的键关联的Unicode的键码。此属性旨在与所述的onkeydown,的onkeyup和onkeypress事件的事件中使用。
句法:
object.keyCode[=keyCode]
设置:
这个读写属性可以设置为Unicode代码。如果没有击键造成的事件是零。
VB6.0可用以下代码测试:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Debug.Print KeyCode
End Sub
switch(getch()){
case 224: //方向键区的ASCII码
switch(getch()){
case 72:
//上
break;
case 80:
//下
break;
case 75:
//左
break;
case 77:
//右
break;
}
}
for(;;)
if(kbhit()) ;如果有键按下
{
str=getch();
printf("%C",str);
printf("%d"str);
}
就可以得到输入的什么东西了
case 224: //方向键区的ASCII码
switch(getch()){
case 72:
//上
break;
case 80:
//下
break;
case 75:
//左
break;
case 77:
//右
break;
}
}
linux下通过设置终端不回显(不用按回车即可输入), my_getch()主要是对getchar需要按回车才显示进行的修改 来自github
if (my_getch() == 27)
{
if (my_getch() == 91)
{
switch(my_getch())
{
case 65 : return UP;
case 66 : return DOWN;
case 67 : return RIGHT;
case 68 : return LEFT;
default : break;
}
}
}
char my_getch()
{
int c = 0;
int res = 0;
struct termios org_opts, new_opts;
res = tcgetattr(STDIN_FILENO, &org_opts);
assert(res == 0);
memcpy(&new_opts, &org_opts, sizeof(new_opts));
new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL |
ECHOPRT | ECHOKE | ICRNL);
tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);//设置终端属性
c=getchar();
res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);//恢复终端属性
assert(res == 0);
return c;
}