перенасыщение — удерживая ключ

У меня есть некоторый базовый код для сбора событий нажатия клавиш вверх и вниз с помощью перенасыщения.

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

#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

Решение

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

glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF);

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]