2009-05-15 232 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