Qu’est-ce que l’équivalent de getch () & getche () sous Linux?

Je ne suis pas en mesure de trouver un fichier d’en-tête équivalent pour conio.h sous Linux.

Existe-t-il une option pour la fonction getch() & getche() sous Linux?

Je veux faire passer un menu de base de cas de commutateur où l’utilisateur donnera son option simplement en appuyant sur une touche et le processus. Je ne veux pas laisser l’utilisateur appuyer sur ENTER après avoir appuyé sur son choix.

 #include  #include  static struct termios old, new; /* Initialize new terminal i/o settings */ void initTermios(int echo) { tcgetattr(0, &old); /* grab old terminal i/o settings */ new = old; /* make new settings same as old settings */ new.c_lflag &= ~ICANON; /* disable buffered i/o */ if (echo) { new.c_lflag |= ECHO; /* set echo mode */ } else { new.c_lflag &= ~ECHO; /* set no echo mode */ } tcsetattr(0, TCSANOW, &new); /* use these new terminal i/o settings now */ } /* Restore old terminal i/o settings */ void resetTermios(void) { tcsetattr(0, TCSANOW, &old); } /* Read 1 character - echo defines echo mode */ char getch_(int echo) { char ch; initTermios(echo); ch = getchar(); resetTermios(); return ch; } /* Read 1 character without echo */ char getch(void) { return getch_(0); } /* Read 1 character with echo */ char getche(void) { return getch_(1); } /* Let's test it out */ int main(void) { char c; printf("(getche example) please type a letter: "); c = getche(); printf("\nYou typed: %c\n", c); printf("(getch example) please type a letter..."); c = getch(); printf("\nYou typed: %c\n", c); return 0; } 

Copiez simplement ces fonctions et utilisez-les. J’ai trouvé cet extrait sur google bien avant et je l’ai enregistré, enfin je l’ai ouvert après une longue période de temps! Merci

 char getch(){ /*#include  //_getch*/ /*#include  //_getch*/ char buf=0; struct termios old={0}; fflush(stdout); if(tcgetattr(0, &old)<0) perror("tcsetattr()"); old.c_lflag&=~ICANON; old.c_lflag&=~ECHO; old.c_cc[VMIN]=1; old.c_cc[VTIME]=0; if(tcsetattr(0, TCSANOW, &old)<0) perror("tcsetattr ICANON"); if(read(0,&buf,1)<0) perror("read()"); old.c_lflag|=ICANON; old.c_lflag|=ECHO; if(tcsetattr(0, TCSADRAIN, &old)<0) perror ("tcsetattr ~ICANON"); printf("%c\n",buf); return buf; } 

copier cette fonction et l'utiliser, n'oublie pas l'inclusion

remove the last printf if you dont want the char to be displayed

Je suggère que vous utilisiez curses.h ou ncurses.h ceux implémentent des routines de gestion de clavier, y compris getch (). Vous avez plusieurs options pour modifier le comportement de getch (attendre ou non la touche).

Il y a une fonction getch () dans la bibliothèque ncurses. Vous pouvez l’obtenir en installant le paquet ncurses-dev.

Vous pouvez utiliser la bibliothèque curses.h sous Linux comme indiqué dans l’autre réponse.

Vous pouvez l’installer dans Ubuntu en:

sudo apt-get update

sudo apt-get install ncurses-dev

J’ai pris la partie installation ici .

Comme dit ci-dessus, getch() est dans la bibliothèque ncurses . ncurses doit être initialisé , voir ie getchar () renvoie la même valeur (27) pour les touches fléchées haut et bas

Le remplacement de getch() est getchar() déclaré dans stdio.h . getchar() est disponible sur Windows et Linux.