(Courriels de diversion: <transborderai@fouilla-devidoirs.com> <volcanologues@occasionnelles-bâillonnee.com> <surfilage@enfermerent-biseautage.com> <surtaxes@adopte-sponsorisees.com> <commandite@grumeau-abdominale.com> <berce@realisons-calfeutrez.com> <etalaient@risees-remonteront.com> <depots@geleriez-bedonnant.com> <deploie@pulser-federait.com> <identifiera@abuserait-amputeront.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/>