Mit OpenGL / GLUT wie würde ich erkennen, wenn zwei Tasten gleichzeitig gedrückt gehalten werden?
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)
Lösung
Versuchen Sie Folgendes:
- Verwenden Sie
glutIgnoreKeyRepeat
nur bekommen körperliche keydown / keyup Ereignisse - Verwenden Sie
glutKeyboardFunc
einen Rückruf registrieren hören Ereignisse KeyDown. - Verwenden Sie
glutKeyboardUpFunc
einen Rückruf registrieren hören Ereignisse keyUp. - Erstellen Sie eine
bool keystates[256]
Array den Zustand der Tasten auf der Tastatur zu speichern. - Wenn Sie eine Veranstaltung durch Ihre keydown Rückruf gesetzt
keystates[key] = true
erhalten. - Wenn Sie eine Veranstaltung durch Ihre keyup Rückruf gesetzt
keystates[key] = false
erhalten. - 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 ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow