Come faccio a sapere se un pulsante viene tenuto premuto in OpenGL / Glut? (Linux)
Domanda
Questo è un problema simile: Link
Che è stato risolto chiamando GetAsyncKeyState (). Mentre tutto bene e dandy, ho bisogno di un'alternativa Linux. Devo sapere se un pulsante viene tenuto premuto , non solo quando viene premuto (a causa del ritardo del buffer della tastiera).
Esiste qualcosa di simile nelle librerie OpenGL / Glut o dovrò cercare altrove?
Soluzione
Non ho mai usato Glut, ma so che molte persone diranno che SDL è migliore. Ho usato SDL e mi piace molto. Fa tutto ciò che fa Glut e molto altro. In SDL, puoi utilizzare SDL_PollEvent ()
per ottenere lo stato della chiave senza il ritardo del buffer della tastiera.
Modifica: non so quasi nulla di Glut, ma sembra che tu possa usare glutKeyboardFunc
per rilevare le chiavi normali e glutSpecialFunc
per chiavi che non generano caratteri ASCII (come shift). Non sono sicuro che esista un modo migliore, poiché non sembra molto carino.
Altri suggerimenti
È possibile rilevare quando si verifica un evento di pressione dei tasti, registrare quello stato e quindi ascoltare un evento di rilascio chiave.
Come detto, dovrai creare la tua macchina a stati, il che è facile. Ma devi anche usare questo metodo di callback, credo.
http://pyopengl.sourceforge.net/documentation/manual/glutKeyboardUpFunc. 3GLUT.xml