Essa função eu peguei do código do cdplayer de console workbone. O que ela faz é configurar o terminal onde o programa está sendo executado para fazer com que teclas pressionadas sejam lidas pela função getc sem a necessidade de se pressionar ENTER. Para ativar essa funcionalidade basta usar rl_ttyset(0), e para desativar rl_ttyset(1).
void
rl_ttyset (int reset)
{
static struct termios old; // Armazena as configuracoes antigas
struct termios new; // Recebe as novas configuracoes
if (reset == 0)
{
(void) tcgetattr (0, &old);
new = old; // Copia as configuracoes antigas
new.c_lflag &= ~(ECHO | ICANON);
new.c_iflag &= ~(ISTRIP | INPCK);
void) tcsetattr (0, TCSANOW, &new); // Habilita as novas configuracoes
}
else
(void) tcsetattr (0, TCSANOW, &old); // Restaura as configuracoes antigas
}
[2] Comentário enviado por hunz em 04/12/2004 - 20:29h
Olha o erro que da aqui:
bash-2.05b$ gcc main.c -o teste
main.c: In function `rl_ttyset':
main.c:31: error: storage size of `old' isn't known
main.c:32: error: storage size of `new' isn't known
main.c:38: error: `ECHO' undeclared (first use in this function)
main.c:38: error: (Each undeclared identifier is reported only once
main.c:38: error: for each function it appears in.)
main.c:38: error: `ICANON' undeclared (first use in this function)
main.c:39: error: `ISTRIP' undeclared (first use in this function)
main.c:39: error: `INPCK' undeclared (first use in this function)
main.c:40: error: `TCSANOW' undeclared (first use in this function)
main.c:31: error: storage size of `old' isn't known
main.c: In function `main':
main.c:270: warning: passing arg 1 of `_IO_getc' makes pointer from integer without a cast
Não funcionou isso ai não :(
Se souber como arrumar: manda um e-mail pra mim tn_negri@hotmail.com