#include <iostream> #include <termios.h> //TCSANOW, ICANON, .. #include <unistd.h> //STDIN_FILENO .. #include <stdio.h> //getchar using namespace std; char getch(void) { struct termios oldattr, newattr; char ch; tcgetattr( STDIN_FILENO, &oldattr ); newattr = oldattr; newattr.c_lflag &= ~( ICANON | ECHO ); tcsetattr( STDIN_FILENO, TCSANOW, &newattr ); ch = getchar(); tcsetattr( STDIN_FILENO, TCSANOW, &oldattr ); return ch; } char getche(void) //with ECHO { struct termios oldattr, newattr; int ch; tcgetattr( STDIN_FILENO, &oldattr ); newattr = oldattr; newattr.c_lflag &= ~( ICANON ); tcsetattr( STDIN_FILENO, TCSANOW, &newattr ); ch = getchar(); tcsetattr( STDIN_FILENO, TCSANOW, &oldattr ); return ch; } int main(int argc,char *argv[]) { char ch1=getch(); char ch2=getche(); cout << "\nFirst : " << ch1 << "\nSecond: " << ch2 << endl; return 0; } //g++ getchx.cpp -o getchx
References
[1] https://www.daniweb.com/programming/software-development/threads/410155/gcc-equivalent-for-getch