2016-09-18 60 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; 
} 

任何输入赞赏。 谢谢

回答

2

您的问题是自动重复键已打开。要关闭它,只是把,在你初始化阶段这个命令:https://linux.die.net/man/3/glutsetkeyrepeat

+1

完美:在

glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF); 

手册页。工作过一种享受!谢谢 – Beakie

+0

(更改为编辑版本)。再次感谢 – Beakie