2012-02-09 16 views
0

hé j'ai testé getch et getchar mais son wating pour l'entrée, je pense qu'il doit y avoir une fonction qui a lu le tampon du clavier. Une partie de mon codeNcurses Entrée clavier

while (1) { 
    if (key!='r') 
    { 
     if (key!='q') 
     { 
      mvprintw(LINES-2, 1, "Display will refresh in %2d seconds ", t); 
      refresh(); 
      sleep(1); 
      t--; 
      break; 
     } 
     else 
     { 
     exit (0); 
     } 
    } 
    else 
    { 
    return; 
    } 

}

+0

Avez-vous essayé 'read (1, buffer, buffer_size)'? – Eregrith

Répondre

4

Si vous ne voulez pas getch() attendre, vous devez le configurer pour être non-blocage, avec nodelay().

Après l'exécution:

if (nodelay (pWin, 1) == ERR) { 
    // some error occurred. 
} 

puis getch() renverra ERR si aucune entrée est disponible.

La page de manuel pour les options d'entrée est here et le comportement de getch y est mentionné et dans sa propre page de manuel, lien here.


L'option nodelay provoque getch être un appel non bloquant. Si aucune entrée n'est prête, getch renvoie ERR. Si elle est désactivée (bf est FALSE), getch attend jusqu'à ce qu'une touche soit pressée.


En aucun retard mode, si aucune entrée est en attente, la valeur ERR est retournée.

+0

hey je l'ai résolu avec nodelay (stdscr, TRUE); et clavier (stdscr, TRUE); noecho(); – Mar