#include <termios.h>
#include <unistd.h>
#include <stdio.h>
static struct termios stermios;
static struct termios termios;
static void keywait()
{
char c;
printf("Appuyez sur une touche pour continuer...");
fflush(stdout);
termios.c_lflag = ISIG;
termios.c_cc[VMIN] = 1;
termios.c_cc[VTIME] = 0;
tcsetattr(0, TCSANOW, &termios);
read(0, &c, 1);
printf("\n\n");
}
int main()
{
char buf[10];
int n;
tcgetattr(0, &stermios);
#if 1
printf("Cas : Mode canonique\n");
do {
printf("Attente de 5 secondes...");
fflush(stdout);
sleep(5);
printf("\nLecture : ");
fflush(stdout);
n = read(0, buf, 10);
printf("\nJ'ai lu %d : %.*s\n", n, n, buf);
}
while (n);
keywait();
#endif
#if 1
termios = stermios;
termios.c_lflag = ISIG | ECHO;
termios.c_cc[VMIN] = 5;
termios.c_cc[VTIME] = 50;
tcsetattr(0, TCSANOW, &termios);
printf("Cas : MIN = %d, TIME = %d\n", termios.c_cc[VMIN], termios.c_cc[VTIME]);
printf("Attente de 5 secondes...");
fflush(stdout);
sleep(5);
printf("\nLecture : ");
fflush(stdout);
n = read(0, buf, 10);
printf("\nJ'ai lu %d : %.*s\n", n, n, buf);
keywait();
#endif
#if 1
termios = stermios;
termios.c_lflag = ISIG | ECHO;
termios.c_cc[VMIN] = 5;
termios.c_cc[VTIME] = 0;
tcsetattr(0, TCSANOW, &termios);
printf("Cas : MIN = %d, TIME = %d\n", termios.c_cc[VMIN], termios.c_cc[VTIME]);
printf("Attente de 5 secondes...");
fflush(stdout);
sleep(5);
printf("\nLecture : ");
fflush(stdout);
n = read(0, buf, 10);
printf("\nJ'ai lu %d : %.*s\n", n, n, buf);
keywait();
#endif
#if 1
termios = stermios;
termios.c_lflag = ISIG | ECHO;
termios.c_cc[VMIN] = 0;
termios.c_cc[VTIME] = 50;
tcsetattr(0, TCSANOW, &termios);
printf("Cas : MIN = %d, TIME = %d\n", termios.c_cc[VMIN], termios.c_cc[VTIME]);
printf("Attente de 5 secondes...");
fflush(stdout);
sleep(5);
printf("\nLecture : ");
fflush(stdout);
n = read(0, buf, 10);
printf("\nJ'ai lu %d : %.*s\n", n, n, buf);
keywait();
#endif
#if 1
termios = stermios;
termios.c_lflag = ISIG | ECHO;
termios.c_cc[VMIN] = 0;
termios.c_cc[VTIME] = 0;
tcsetattr(0, TCSANOW, &termios);
printf("Cas : MIN = %d, TIME = %d\n", termios.c_cc[VMIN], termios.c_cc[VTIME]);
printf("Attente de 5 secondes...");
fflush(stdout);
sleep(5);
printf("\nLecture : ");
fflush(stdout);
n = read(0, buf, 10);
printf("\nJ'ai lu %d : %.*s\n", n, n, buf);
keywait();
#endif
tcsetattr(0, TCSANOW, &stermios);
return 0;
}