Detecter quand on tape au clavier
Bonjour,
j'aurais aimé savoir si il y avait une fonction en C qui permettait de detecter si l'utilisateur est en train de taper au clavier. Et si oui, y aurait-il une autre fonction ou paramètre pour "empecher" (ne rien afficher dans la console) l'utilisateur de taper sur son clavier ???
:?: :?: :?:
D'avance merci à tous.
Re: Detecter quand on tape au clavier
Citation:
Envoyé par mrpowerboy
Bonjour,
j'aurais aimé savoir si il y avait une fonction en C qui permettait de detecter si l'utilisateur est en train de taper au clavier. Et si oui, y aurait-il une autre fonction ou paramètre pour "empecher" (ne rien afficher dans la console) l'utilisateur de taper sur son clavier ???
D'avance merci à tous.
Pas besoin de sortir l'artillerie lourde (ncurses) pour ca.
ioctl() devrait suffir.[FAUX] Ca fait partie de la libc. Donc standard :[/FAUX]
Par contre je n'ai que la procedure a la mode de chez Unix :
Pour desactiver l'affichage des caracteres :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
#include <sys/ioctl.h>
#include <sys/termios.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
struct termios line_police;
char buffer;
if (ioctl(0, TIOCGETA, &line_police) < 0)
{
perror("Allo Houston ? We've got a problem with ioctl()");
exit(1);
}
line_police.c_lflag &= ~(ECHO | ICANON);
if ((ioctl(0, TIOCSETA, &line_police)) < 0)
{
perror("Allo Houston ? We've got a problem with ioctl()");
exit(2);
}
while (1)
;
return (0);
} |
Explication :
Code:
1 2
|
ioctl(0, TIOCGETA, &line_police) |
Recupere les attributs de ta console.
Code:
1 2
|
line_police.c_lflag &= ~(ECHO | ICANON); |
Desactive l'affichage de ce qui est tape, et desactive la bufferisation (ce qui permet de lire instantanement ce qui est tape).
Code:
1 2
|
ioctl(0, TIOCSETA, &line_police) |
Active la nouvelle police de ta console.
Re: Detecter quand on tape au clavier
Citation:
Envoyé par Jack_serious
ioctl() devrait suffir. Ca fait partie de la libc. Donc standard :
On ne doit pas avoir la même bibliothèque standard : C Standard Library
donc la manière la plus portable de faire est de passer par [n]curses.
Ou lire la :faq: <== icone cliquable :mrgreen: