过剩 - 持有一把钥匙

时间:2016-09-18 19:50:41

标签: c++ keydown keyup freeglut

我有一些基本代码可以使用过剩收集密钥和关键事件。

如果我按下一个键,我会连续发出事件(向下/向上/向下/向上/向下/向上/ ........),而不是预期向下(一次,在开始时)起来(一次,最后)

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

任何意见都表示赞赏。 感谢

1 个答案:

答案 0 :(得分:2)

您的问题是自动重复键已开启。要关闭它,只需在初始化阶段输入此命令:

glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF);

手册位于:https://linux.die.net/man/3/glutsetkeyrepeat