我编写了这个简单的程序来检测按键事件。但是对于所有的上、下、左、右和 esc 键,它返回 27!所以无法区分,按下了哪个键。
#include<iostream>
#include<stdio.h>
#include<termios.h>
using namespace std;
static struct termios oldSettings,newSettings;
void initTermios(bool echo)
{
tcgetattr(0,&oldSettings);
newSettings=oldSettings;
newSettings.c_lflag &=~ICANON;
newSettings.c_lflag &= echo ? ECHO : ~ECHO;
tcsetattr(0,TCSANOW,&newSettings);
}
void resetTermios(void)
{
tcsetattr(0,TCSANOW,&oldSettings);
}
char getch(bool echo)
{
initTermios(echo);
char c=getchar();
resetTermios();
return c;
}
int main()
{
int i=getch(false);
cout<<i<<endl;
return 0;
}
我应该怎么做才能消除这种歧义?