Wednesday, April 25, 2018

C++ equivalent to getch() and getche() from conio.h



#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

No comments:

Ubuntu Forware port 80

  #!/bin/bash iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8069 iptables -t nat -A PREROUTING -i eth0 -p tc...