Como posso saber se um botão está sendo pressionado em OpenGL / Glut? (Linux)
Pergunta
Este é um problema semelhante:
Qual foi resolvido chamando GetAsyncKeyState (). Enquanto tudo muito bem e dândi, eu preciso de uma alternativa Linux. Eu preciso saber se um botão está a ser realizada para baixo, não apenas sendo pressionado (por causa do atraso do buffer de teclado).
faz nada como este existem nas bibliotecas OpenGL / Glut, ou vou ter que procurar outro lugar?
Solução
Eu nunca usei Glut, mas eu sei que muitas pessoas vão dizer SDL é melhor. Eu tenho usado SDL e eu gosto muito. Ele faz tudo Glut faz e muito mais. Em SDL, você pode usar SDL_PollEvent()
para obter estado-chave sem o atraso do buffer de teclado.
Edit: Eu sei quase nada sobre Glut, mas parece que você pode usar glutKeyboardFunc
para detectar as chaves normais, e glutSpecialFunc
para chaves que não geram caracteres ASCII (como shift). Eu não tenho certeza se há uma maneira melhor, como isso não parece muito bom.
Outras dicas
Você pode detectar quando um evento keypress ocorre, ficha esse estado, e depois ouvir para um evento de lançamento chave.
Como disse, você terá que fazer a sua própria máquina de estado, que é fácil. Mas você também precisa usar este método de retorno de chamada que eu penso.
http://pyopengl.sourceforge.net/documentation/manual/glutKeyboardUpFunc. 3GLUT.xml