OpenGL /GLUT を使用して、2 つのキーが同時に押されたことをどのように検出しますか?
質問
OpenGL /GLUT を使用して、2 つのキー、たとえば「a」と「j」が同時に押された場合、どのように検出すればよいでしょうか?
(このプログラムは OSX GCC、Windows GCC、Windows VS2005 でコンパイルする必要があるため、OS に依存するハックは行わないでください。)
解決
次のことを試してください。
- 使用
glutIgnoreKeyRepeat
物理的なキーダウン/キーアップ イベントのみを取得する - 使用
glutKeyboardFunc
キーダウン イベントをリッスンするコールバックを登録します。 - 使用
glutKeyboardUpFunc
キーアップ イベントをリッスンするコールバックを登録します。 - を作成します
bool keystates[256]
キーボードのキーの状態を保存する配列。 - キーダウン コールバックを通じてイベントを受信するときに、次のように設定します。
keystates[key] = true
. - キーアップ コールバックを通じてイベントを受信するときに、次のように設定します。
keystates[key] = false
. - 実行ループで、次のことをテストします。
(keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J'])
.
その方向を見てください。テストはしていませんが、動作するはずです。また必要になるかもしれません glutSpecialFunc
そして glutSpecialUpFunc
「特別な」キーのメッセージを受信します。
また、GLUT は非常に古いものであり、より優れた代替手段があることにも注意してください。
他のヒント
「よりよい選択肢」によって、あなたは簡単で、GLUT-独立した入力機能を意味するならば、GetAsyncKeyState機能を持って...
所属していません StackOverflow