Herk77 Le 05/03/2005 à 14:20Edité par Herk77 le 05/03/2005 à 14:29 Salut,
J'ai un problème avec les interruptions, je les ai détournées vers DUMMY_HANDLER mais plus moyen de tester les touches. Le but étant de désactiver la barre d'état (diamond alpha 2nd ...etc...).
Mon code ressemble à ça :
Save_Int_1=GetIntVec(AUTO_INT_1);
Save_Int_5=GetIntVec(AUTO_INT_5);
SetIntVec(AUTO_INT_1, DUMMY_HANDLER);
SetIntVec(AUTO_INT_5, DUMMY_HANDLER);
...
if(!OSdequeue(&Key, KbQ))
{
switch(Key)
{
...
}
}
...
SetIntVec(AUTO_INT_1, Save_Int_1);
SetIntVec(AUTO_INT_5, Save_Int_5);
Est-ce que quelqu'un peut éclairer ma lanterne, siouplait ?
si tu détournes ces interruptions (en particulier la 1), tu ne peux plus lire le clavier via des fonctions haut-niveau, mais seulement par des appels bas-niveau, de la famille de _rowread (_keytest, par exemple).
en effet, les fonctions "haut-niveau" (genre ngetchx, kbhit et compagnie) sont basées sur l'auto_int_1... et ne fonctionnent donc pas si celui-ci est détourné
Merci squale92,
je croyais que OSdequeue était bas niveau, je vais aller voir ces autres fonctions.
Bon, j'ai un problème avec _keytest. Comment gérer la répétition de touche qui est beaucoup trop rapide? Sans boucle pour vider la queue : ça bloque le programme tant qu'on appuie sur la touche. Si quelqu'un a une idée, merci d'avance.
utilise une interruption pour la vider à intervalles réguliers ?

<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
J'ai essayé de vider la queue dans une interruption, mais si on laisse la touche enfoncée ça bloque l'exécution du programme jusqu'à ce qu'on relache.