2009-05-15 235 views

回答

15

尝试以下操作:

  1. 使用glutIgnoreKeyRepeat只得到身体的keydown/KEYUP事件
  2. 使用glutKeyboardFunc注册监听keydown事件的回调。
  3. 使用glutKeyboardUpFunc来注册一个监听keyup事件的回调。
  4. 创建一个bool keystates[256]数组来存储键盘按键的状态。
  5. 当通过您的keydown回调接收事件时,请设置keystates[key] = true
  6. 当您通过密码回拨接收事件时,请设置keystates[key] = false
  7. 在您的运行循环中,测试是否(keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J'])

看看那个方向。虽然我没有测试过,但它应该可以工作。您可能还需要glutSpecialFuncglutSpecialUpFunc才能接收“特殊”密钥的消息。

另外,请注意,GLUT是非常古老的东西,有很多更好的选择。

+4

你可以告诉更多关于这些更好的选择吗? – colorfulgrayscale 2011-03-11 01:07:38

0

通过“更好的选择”,如果你的意思是简单的,然后过剩,独立的输入功能与GetAsyncKeyState功能得到了...

MSDN - GetAsyncKeyState function

+0

这是仅限Windows。而Windows真的很老,有很多更好的选择。 – ybungalobill 2016-01-27 23:11:55