Caracteres raros en la entrada de Pyglet

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