Ответ 1
Попробуйте следующее:
- Используйте
glutIgnoreKeyRepeat
, чтобы получать только физические события keydown/keyup - Используйте
glutKeyboardFunc
, чтобы зарегистрировать обратный вызов, прослушивающий события блокировки. - Используйте
glutKeyboardUpFunc
для регистрации обратного вызова при прослушивании событий keyup. - Создайте массив
bool keystates[256]
, чтобы сохранить состояние клавиш клавиатуры. - При получении события через обратный вызов keydown установите
keystates[key] = true
. - При получении события через ваш обратный вызов с помощью клавиатуры установите
keystates[key] = false
. - В вашем цикле выполнения проверьте, если
(keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J'])
.
Посмотрите в этом направлении. Хотя я не тестировал его, он должен работать. Вам также могут понадобиться glutSpecialFunc
и glutSpecialUpFunc
для получения сообщений для специальных клавиш.
Кроме того, имейте в виду, что GLUT - это действительно старый материал и что есть намного более приятные альтернативы.