c++ - 过剩 - 按住一个键

标签 c++ keydown keyup freeglut

我有一些基本代码可以使用 glut 收集按键事件。

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

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

任何意见表示赞赏。 谢谢

最佳答案

你的问题是自动重复键打开了。要关闭它,只需在初始化阶段输入以下命令:

glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF);

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

关于c++ - 过剩 - 按住一个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39561997/

相关文章:

c++ - QVariant 到 QObject*

c++ - cmake 在 Windows 上与 cpprestsdk 链接

c# - 从键中获取字符

javascript - 如何更改 jquery 中 keyup 上的文本框值?

android - 不支持的操作异常 : Tried to obtain display from a Context not associated with one

javascript - 如何将 div 包裹在用户给定字符串中的每个字母周围

c++ - Boost Spirit Lexeme与No_skip

c++ - Matlab三角函数

javascript - 取消 HTML 页面中的 keydown 吗?

html - 为什么 contentEditable 元素拒绝回车键?