2016-09-18 3 views
1

Je dispose d'un code de base pour collecter les événements key up et key down en utilisant glut. Si je maintiens une touche enfoncée, je suis en train de déclencher des événements continus (bas/haut/bas/haut/bas/haut/........), au lieu du bas prévu (une fois, au début) et plus (une fois, à la fin)glut - maintenir une touche enfoncée

#include <GL/glut.h> 
#include <iostream> 

void keyDown (unsigned char key, int x, int y) 
{ 
    std::cout << "keydown " << key << "\n"; 
} 

void keyUp (unsigned char key, int x, int y) 
{ 
    std::cout << "keyup " << key << "\n"; 
} 

void render(void) 
{ 
    std::cout << "render\n"; 
} 

int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_SINGLE); 
    glutInitWindowSize(300, 300); 
    glutInitWindowPosition(100, 100); 
    glutCreateWindow("Hello world :D"); 
    glutDisplayFunc(render); 
    glutKeyboardFunc(keyDown); 
    glutKeyboardUpFunc(keyUp); 
    glutMainLoop(); 

    return 0; 
} 

Toute saisie appréciée. Merci

Répondre

2

Votre problème est que la touche de répétition automatique est activée. Pour le désactiver, il suffit de mettre, à votre phase d'initialisation cette commande: Page

glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF); 

Homme à: https://linux.die.net/man/3/glutsetkeyrepeat

+1

Parfait. A travaillé un régal! Merci – Beakie

+0

(Modifié à la version d'édition). Merci encore – Beakie