j'utilise GKeyFlush pour le Vider le tampon des touches apres _keytest.
Je fait une boucle sur _keytest jusqu'a l'appuie sur ENTER.
Lorsque j'affiche une boite de dialogue juste apres, celle-ci s'affiche puis disparait comme si j'avais encore appuyer ENTER.
Ce qui me fait passer directement a la prochaine boite de dialogue affiche.
Allors je voudrais savoir comment vous faite ca correctement ?
J'ai accelerer le clavier comme ceci au de but de mon programme
[PRE]
ki = Mode.keyi = OSInitKeyInitDelay( 40 );
kr = Mode.keyr = OSInitBetweenKeyDelay( 20 );
[/PRE]
mais bon il n'est pas dit que ENTER est une touche repetitive a ce que je sache.
Zeph Le 05/03/2006 à 17:01 Tu confonds deux trucs : _keytest est un alias de _rowread, c'est bas niveau donc il n'y a aucun tampon ni rien, ça renvoie juste vrai si la touche est enfoncée et faux si elle ne l'est pas. C'est à toi de gérer si tu veux que ça ne compte qu'un seul appui, et/ou une éventuelle répetition.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
J'expose tout ce que fait mon code comme cela ce sera un peu plus clair :
- Redirection AI 1,5
- Utilisation de _keytest jusqu'a appuie sur ENTER ou ESC
- Restauration des AI 1,5 ( je viens juste de faire la verification )
- Vidage du Tampon clavier avec GKeyFlush ( vous avez apparement l'air de dire que ca ne sert a rien ici )
- 2 appels DlgMessage ( le 1er Appel s'affiche puis disparait aussitot pour laisser place au second )
En conclusion, je n'ai aboslument rien melange.
C'etait juste deplace de ma part de parler des accelerations du clavier pour les touches repetitives quand on appuie sur ENTER dans une boite de Dialogue.
De plus si les AI n'etaient pas restaurees correctement, pourquoi la 2 eme boite fonctionnerait et pas la 1ere ?
Dailleurs, il me semble que la TI doit crasher quand on appelle les boites de dialogue apres redirection des AI.
Une solution pas très propre (mais qui marche ^^) consisterait à effectuer un ngetchx() au niveau de la restauration des interruptions.
C'est a peu pres ce que je fait actuellement. Mais bon je ne comprends pas
pourquoi GKeyFlush() qui est sense faire la meme chose que ngetchx()
ne vide pas le Keyboard Queue correctement.
A tout hasard, je vais faire le GKeyFlush() apres avoir restaurer les AI ;
on ne sait jamais. J'essayerai ngetchx() par la suite.
Ton code ne doit pas gérer le bon cas, cad, que tu attend que la touche soit enfoncé, et rien ne prouve (au contraire) que l'utilisateur a encore la touche appuyé au moment ou tu restore les INT, donc l'OS prend la touche en compte.
Il faut que tu attende que la touche ai été enfoné, puis relaché avant de passer au reste du code, sinon tu t'expose a ce genre de soucis

Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Merci Godzil.
Ca me pose pas mal de soucis ce truc.
Mais bon je n'ai pas le choix, vu le fonctionnement de ma librairie.
Les touches que je teste sont dans une Liste Ti-Basic. Le moteur de ma librairie effectue une boucle
en parcourant chaque elements "Row1Col1Row2Col2..." de la liste , puis fait une autre boucle pour chaque
RowCol de la chaine en appelant _keytest pour lire l'Etat de la touche.
Je ne peux donc plus retester les touches pour savoir si elle sont relachees.