Getch() sous linux

Fermé
Utilisateur anonyme - 16 déc. 2008 à 17:02
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 nov. 2009 à 22:18
SAlut, voila comme le titre l'indique, je cherche à utiliser la fonction getch() sous linux......

J'utilise Dev-c++ sous windows, et getch() fonctionne très bien, mais quand je porte mon programme sous linux, patatra tout s'effondre.......

En fait j'ai fait un menu, et je demande à l'utilisateur soit de taper "Entrée" pour continuer, soit de taper "q" pour quitter.
Et c'est donc pour cela entre autres que je ne veux pas utiliser scanf(), car je veux pouvoir taper sur une touche sans avoir a taper sur "Entrée" à la fin !

En C, il me suffit de faire:

int touche;
printf("Appuyez sur une touche : \n");
touche=fgetch();
switch(touche){
case 13 : printf("C'etait la touche Entree \n");
break;
case 97 : printf("C'etait la touche a \n");
break;
case 27 : printf("C'etait la touche Echap \n");
break;
case 113 : printf("C'etait la touche q \n");
break;
default : printf("C'etait autre chose \n");
break;
}

Et tout fonctionne !
Et c'est pour ça que je cherche l'équivalent sous linux.....

J'ai cherché pas mal de temps sur internet, et d'après différentes sources il faudrait inclure des librairies comme curses.h ou ncurses.h, mais finalement on me dit que c'est un genre de librairie qu'il faut jamais utiliser......ensuit on me parle de termios.h et de conio.h, mais en fait on me dit aussi que ces librairies ne sont pas sur tout les systèmes linux et blablabla et blablabla ^^

J'ai même essayé avec getc, fgets et ce genre de chose, mais a chaque fois a la compilation j'ai une erreur....


Pitié aidez-moi ;-) je suis vraiment dans une impasse.......jamais j'aurais pensé que ça me fairait ça en passant sous linux......j'espère qu'il y a une alternative sinon je vais sauter par la fenêtre ^^
A voir également:

6 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 déc. 2008 à 21:06
Salut,
En fait cela ne vient pas du C, mais du terminal. Sous linux il est en mode cooked et il faut le passer en mode raw.
Tu dois utiliser les fonctions cfmakeraw, tcsetattr.
Mais, bon, en général on le laisse en mode cooked sous linux sauf cas spécifique. Les linuxiens aiment bien valider ce qu'ils tapent ;)
2