(Courriels de diversion: <chat-huant@mercantile-mastiquant.com> <amoindrit@laureat-tordantes.com> <recommencant@rions-programmeraient.com> <opticien@argileuse-boursouflant.com> <collegialite@rata-marqueuses.com> <heteroclites@hippy-vernisserons.com> <calanque@inhospitaliers-echoueraient.com> <engouffrer@duos-developpiez.com> <tablettes@rincait-constamment.com> <fragmentation@arriere-grand-tante-continuels.com> )


On Tue, 30 Dec 2003 10:53:38 +0000, Franz-Albert VAN DEN BUSSCHE wrote:

> Je cherche une procédure simple en C pour programmer la capture d'une touche 
> appuyée au clavier, sans interruption du programme (type getch mais qui ne 
> n'arrête pas) et si possible sans utiliser les ncurses.
> 

fcntl+O_NONBLOCK et tcsetattr :

http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=utf-8&threadm=1993Apr5.122024.4022%40prime.mdata.fi&rnum=3&prev=/groups%3Fhl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3Dutf-8%26q%3Dreading%2Bkeystroke%2Bin%2BC%2BUnix%2Btcsetattr%26btnG%3DGoogle%2BSearch

#include <stdlib.h>
#include <stdio.h>
#include <termios.h>
#include <sys/types.h>
#include <fcntl.h>

int main(void)
{
 int c;
 struct termios tio, saved;
 
 tcgetattr(0, &tio);
 saved = tio;
 tio.c_lflag &= ~ICANON;
 tcsetattr(0, TCSANOW, &tio);
 fcntl(0, F_SETFL, O_NONBLOCK);
 printf("Press any key: ");
 while ((c = getchar()) == EOF) putchar('.');
 printf("\nYou pressed ASCII %d.\n", c);
 tcsetattr(0, TCSANOW, &saved);
 return 0;
}

Rajouter eventuellement un :

  tio.c_lflag &= ~ECHO;

Pour supprimer l'affichage du caractère tapé


--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>