Simple input en Pyglet:
import pyglet
window = pyglet.window.Window()
@window.event
def on_key_press(symbol, modifiers):
print("key/mods:", symbol, modifiers)
pyglet.app.run()
Yo tengo teclado en inglés, la forma de meter una ñ
es “ALT-GR + n”.
Cuando pongo eso, pyglet me dice que el symbol es 244813135872 y los modifiers 272.
Los modifiers es medio bizarro:
>>> key.MOD_SCROLLLOCK | key.MOD_NUMLOCK
272
Pero supongamos que es como el teclado señaliza el Alt-Gr…
Ahora, ¿de dónde saco que 244813135872 más esos modificadores es una ñ
? Qué parte del sistema operativo o dónde en el stack está almacenada esa relación?
Gracias!
Probé esto y con altgr-intl
parece andar bien!
@window.event
def on_text(text):
print("text:", text);
Más info acá: Working with the keyboard — pyglet v1.5.17
“pyglet decouples the keys that the user presses from the Unicode text that is input. There are several benefits to this: - The complex task of mapping modifiers and key symbols to Unicode characters is taken care of automatically and correctly. - […]”
btw, está lindo pyglet. no lo había usado! (sí pygame y pySDL2, que creo que en el fondo son todos el mismo backend)
Ah, maravilloso.
Tiene sentido, eso me da “texto”, bien alto nivel, piola, mientras que el on_key_press/release me da bajo control para cosas especiales, combinaciones para algún juego, situaciones especiales, etc.
Ahora tengo que ver si arcade
me expone esto (que es el framework para hacer juegos que está usando mi pibe).
¡Muchas gracias!
FTR, Arcade expone el mismo on_text
como método en la API de arcade.Window
. ¡Rocanrol!
1 me gusta