KEY_ENTER vs '\ n'?
Question
Quand j'utilise PDCURSES et j'essaie d'avoir un certain temps la sortie de boucle lorsque la touche entrée est pressée avec while(key != KEY_ENTER)
, la boucle while jamais sorties. Cependant, quand j'essayer d'avoir la même sortie en boucle avec while((char)key != '\n')
, il sort avec succès chaque fois que je pressais entrer. Pourquoi fonctionne-t-'\n'
et non KEY_ENTER
?
BTW, key
est un int
et j'espère que ce sont les quelques lignes pertinentes du code:
int key;
while((char)key != '\n') {
key = getch();
...
}
La solution
getch()
est une fonction définie par la norme ANSI C pour la bibliothèque d'exécution C.
Sur la plupart des systèmes tels que Windows, Linux, etc., cette fonction est mis en œuvre pour revenir '\n'
lorsque l'utilisateur appuie sur Entrée. À titre de comparaison, sous Windows, la pression de touche lui-même (Enter) peut être représenté comme VK_ENTER
clé code.
PDCURSES se traduit par les codes clés à des valeurs ASCII pour vous.
Vous pouvez obtenir les valeurs clés que vous voulez si vous appelez d'abord les fonctions PDCURSES raw(); nonl();
. Aussi, vous devriez probablement utiliser wgetch()
pour le nouveau code.
Autres conseils
KEY_ENTER == 0x157, '\n' == 0xA
\ n 'est la norme ASCII nouvelle ligne, alors que KEY_ENTER représente un code de clavier. Voir le code de PDCURSES .
Pour plus d'informations, vous devez poster la partie pertinente de votre code.