On me l'avait encore jamais faite celle-là ... pour un même programme, nspire_emu comprend le multi-flèches uniquement si il émule une Nspire non-CX. Si il émule une CX, la dernière touche appuyée écrase la précédente (exemple : si j'appuyais sur haut et que sans relacher haut j'appuie sur droite, ça appuie que sur droite).
Au début je me disais que c'était juste nspire_emu qui merdait, mais pierrotdu18 me confirme que sur HW ça fait pareil (sur ma Nspire CAS, ça marche correctement).
Donc je me suis dit que c'était le touchpad. Voilà le code que j'utilise actuellement :
- Code: Select all
typedef int KeyEvent; // question de préférence
inline KeyEvent getk(void)
{
return (((isKeyPressed(KEY_NSPIRE_UP) << 1) + isKeyPressed(KEY_NSPIRE_RIGHT) << 1) + isKeyPressed(KEY_NSPIRE_LEFT) << 1) + isKeyPressed(KEY_NSPIRE_DOWN);
}
J'vous ai gentiment fait un petit layer de debug si vous voulez :
- Code: Select all
typedef int KeyEvent;
KeyEvent getk(void)
{
int i;
KeyEvent k;
while(!isKeyPressed(KEY_NSPIRE_ENTER))
{
k = (((isKeyPressed(KEY_NSPIRE_UP) << 1) + isKeyPressed(KEY_NSPIRE_RIGHT) << 1) + isKeyPressed(KEY_NSPIRE_LEFT) << 1) + isKeyPressed(KEY_NSPIRE_DOWN);
for(i = 3; i >= 0; i--)
printf("%d", (k >> i) & 1);
printf("\n");
SDL_Delay(1000);
}
return k;
}
Regardez la console pendant que vous appuyez sur des touches et faites [enter] pour quitter.
Des idées ?