2016-09-18 9 views
1

У меня есть базовый код для сбора ключей и событий с нажатием клавиши, используя избыток.перегиб - удерживая клавишу вниз

Если я держу ключ вниз, я начинаю стрельбу по непрерывным событиям (вниз/вверх/вниз/вверх/вниз/вверх/вниз), вместо намеченного вниз (один раз, в начале) и вверх (один раз, в конце)

#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; 
} 

Любой ввод оценивается. Thanks

ответ

2

Ваша проблема в том, что включен автопереключатель. Чтобы отключить его, просто положить на вашей фазе инициализации этой команды:

glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF); 

Man страницу по адресу: https://linux.die.net/man/3/glutsetkeyrepeat

+1

Perfect. Работал! Спасибо – Beakie

+0

(Изменен для редактирования). еще раз спасибо – Beakie