0

我编写了这个简单的程序来检测按键事件。但是对于所有的上、下、左、右和 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;

}

我应该怎么做才能消除这种歧义?

4

0 回答 0