{C Linux} lecture continue
Fermé
juliendangers
Messages postés
226
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
28 octobre 2011
-
31 mars 2010 à 19:00
juliendangers Messages postés 226 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 28 octobre 2011 - 1 avril 2010 à 09:52
juliendangers Messages postés 226 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 28 octobre 2011 - 1 avril 2010 à 09:52
A voir également:
- {C Linux} lecture continue
- Podcast addict lecture continue - Accueil - Guide audio
- Confirmation de lecture whatsapp - Guide
- Lecture epub - Guide
- Accusé de lecture gmail - Guide
- Diskinternals linux reader - Télécharger - Stockage
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
1 avril 2010 à 07:52
1 avril 2010 à 07:52
Bonjour,
Par défaut sur GNU/Linux, le terminal est en mode cooked. Il attend donc le retour chariot pour validation de la ligne. Pour ne pas avoir besoin de ce derner, vous allez devoir mettre le terminal en mode raw.
Il te faudra utiliser successivement les fonctions :
tcgetattr
cfmakeraw
tcsetattr
Je te renvoie aux man pour l'utilisation des fonctions. Néanmoins, je peux te donner un exemple si tu le souhaites.
Une fois que le terminal sera en mode raw, tu devras gérer les flèches qui sont des touches étendues, c'est-à-dire qu'elles se lisent sur deux caractères.
Il te faut donc détecter le premier caractère renvoyé (getchar() par exemple), regarder si c'est bien un code pour touches étendues et le cas échéant lire un deuxième caractère.
Je n'ai pas en mémoire la valeur des codes.
Mais tu peux te faire un programme qui teste ça facilement.
Du genre : while(getchar()!='\n'); en mode cooked (donc sans implémentation de la première fonction).
Et enfin, n'oublie pas de repasser ton terminal en mode cooked avant la fin de ton programme.
Si tu souhaites plus de détails, n'hésite pas.
Cordialement,
Par défaut sur GNU/Linux, le terminal est en mode cooked. Il attend donc le retour chariot pour validation de la ligne. Pour ne pas avoir besoin de ce derner, vous allez devoir mettre le terminal en mode raw.
Il te faudra utiliser successivement les fonctions :
tcgetattr
cfmakeraw
tcsetattr
Je te renvoie aux man pour l'utilisation des fonctions. Néanmoins, je peux te donner un exemple si tu le souhaites.
Une fois que le terminal sera en mode raw, tu devras gérer les flèches qui sont des touches étendues, c'est-à-dire qu'elles se lisent sur deux caractères.
Il te faut donc détecter le premier caractère renvoyé (getchar() par exemple), regarder si c'est bien un code pour touches étendues et le cas échéant lire un deuxième caractère.
Je n'ai pas en mémoire la valeur des codes.
Mais tu peux te faire un programme qui teste ça facilement.
Du genre : while(getchar()!='\n'); en mode cooked (donc sans implémentation de la première fonction).
Et enfin, n'oublie pas de repasser ton terminal en mode cooked avant la fin de ton programme.
Si tu souhaites plus de détails, n'hésite pas.
Cordialement,
juliendangers
Messages postés
226
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
28 octobre 2011
43
31 mars 2010 à 21:16
31 mars 2010 à 21:16
normalement non, seulement les bibliothèques standards normalement plus celle du prof...
mais bon je suis preneur de toute solution, premièrement pour ma culture, et deuxièmement car je ne suis pas sur :D
mais bon je suis preneur de toute solution, premièrement pour ma culture, et deuxièmement car je ne suis pas sur :D
1 avril 2010 à 09:52
je m'y attelle merci =)