使用OpenGL / GLUT我如何检测两个键是否同时按下'a'和'j'?
(此程序需要使用OSX GCC,Windows GCC,Windows VS2005进行编译,因此请不要依赖操作系统。)
答案 0 :(得分:19)
尝试以下方法:
glutIgnoreKeyRepeat
仅获取物理keydown / keyup事件glutKeyboardFunc
注册监听keydown事件的回调。glutKeyboardUpFunc
注册听取keyup事件的回调。bool keystates[256]
数组来存储键盘键的状态。keystates[key] = true
。keystates[key] = false
。(keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J'])
。朝这个方向看。虽然我没有测试它,但它应该工作。您可能还需要glutSpecialFunc
和glutSpecialUpFunc
来接收“特殊”密钥的消息。
另外,请注意,GLUT确实很老,并且有更好的选择。
答案 1 :(得分:0)
通过“更好的替代”,如果你的意思是更简单和无关联的输入函数,那么得到GetAsyncKeyState函数......