Mit OpenGL / GLUT wie würde ich erkennen, wenn zwei Tasten gleichzeitig gedrückt gehalten werden?

StackOverflow https://stackoverflow.com/questions/866679

  •  22-08-2019
  •  | 
  •  

Frage

Mit OpenGL / GLUT wie würde ich, wenn zwei Tasten erkennen, sagt ‚a‘ und ‚j‘ sind zugleich gedrückt gehalten wird?

(Dieses Programm muss mit OSX GCC Windows GCC Windows VS2005 so keine OS abhängig Hacks bitte. Kompilieren)

War es hilfreich?

Lösung

Versuchen Sie Folgendes:

  1. Verwenden Sie glutIgnoreKeyRepeat nur bekommen körperliche keydown / keyup Ereignisse
  2. Verwenden Sie glutKeyboardFunc einen Rückruf registrieren hören Ereignisse KeyDown.
  3. Verwenden Sie glutKeyboardUpFunc einen Rückruf registrieren hören Ereignisse keyUp.
  4. Erstellen Sie eine bool keystates[256] Array den Zustand der Tasten auf der Tastatur zu speichern.
  5. Wenn Sie eine Veranstaltung durch Ihre keydown Rückruf gesetzt keystates[key] = true erhalten.
  6. Wenn Sie eine Veranstaltung durch Ihre keyup Rückruf gesetzt keystates[key] = false erhalten.
  7. In Ihrer Laufschleife, Test, wenn (keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J']).

Schauen Sie in diese Richtung. Obwohl ich es nicht getestet haben, sollte es funktionieren. Sie könnten auch glutSpecialFunc und glutSpecialUpFunc müssen Nachrichten für ‚besondere‘ Schlüssel zu erhalten.

Beachten Sie außerdem, dass GLUT wirklich altes Zeug ist und dass es viel schöner Alternativen.

Andere Tipps

von „schönere Alternative“, wenn Sie bedeuten einfacher und glut-unabhängige Eingabefunktion bekam dann mit GetAsyncKeyState Funktion ...

MSDN - GetAsyncKeyState Funktion

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top