12

OpenGL /GLUTを使用して、「a」と「j」の2つのキーが同時に押されているかどうかをどのように検出しますか?

(このプログラムは OSX GCC、Windows GCC、Windows VS2005 でコンパイルする必要があるため、OS 依存のハックは行わないでください。)

4

2 に答える 2

20

次のことを試してください。

  1. glutIgnoreKeyRepeat物理的なキーダウン/キーアップイベントのみを取得するために使用します
  2. glutKeyboardFuncキーダウンイベントをリッスンするコールバックを登録するために使用します。
  3. glutKeyboardUpFuncキーアップイベントをリッスンするコールバックを登録するために使用します。
  4. bool keystates[256]キーボードキーの状態を格納する配列を作成します。
  5. キーダウンコールバックを介してイベントを受信する場合は、を設定しkeystates[key] = trueます。
  6. キーアップコールバックを介してイベントを受信する場合は、を設定しkeystates[key] = falseます。
  7. 実行ループで、かどうかをテストします(keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J'])

その方向を見てください。私はそれをテストしていませんが、動作するはずです。また、「特別な」キーのメッセージを受信するglutSpecialFunc必要がある場合もあります。glutSpecialUpFunc

また、GLUTは本当に古いものであり、はるかに優れた代替手段があることに注意してください。

于 2009-05-15T02:05:49.510 に答える
0

よりシンプルで貪欲に依存しない入力関数を意味する場合は、「より良い代替手段」によって GetAsyncKeyState 関数で取得します...

MSDN - GetAsyncKeyState 関数

于 2013-12-04T19:41:08.213 に答える