Teclado y atajos
Define on_key(self, combo) en tu app para recibir todas las teclas pulsadas, como un
keymap global. combo es un texto como ctrl-shift-p (el mismo formato que usan los keymaps de Zed):
| Tecla | combo |
|---|---|
| Ctrl+Shift+P | "ctrl-shift-p" |
| Cmd+S (macOS) / Win+S | "cmd-s" |
| Alt+Z | "alt-z" |
| Esc | "escape" |
| Flechas | "up", "down", "left", "right" |
| Otras | "enter", "tab", "space", "backspace", "delete", "home", "end", "pageup", "pagedown", "f1"… |
Los modificadores van siempre en este orden: ctrl-, alt-, shift-, cmd-. Las letras llegan
en minúscula.
KEYMAP = { "ctrl-shift-p": "abrir_paleta", "ctrl-p": "abrir_archivos", "ctrl-b": "toggle_left", "ctrl-s": "guardar",}
class App(pz.App): def on_key(self, combo): # admite Cmd en macOS y Ctrl en el resto con la misma tabla accion = KEYMAP.get(combo.replace("cmd-", "ctrl-")) if accion: return getattr(self, accion)()on_key puede devolver lo mismo que un callback: None, un Command o un mensaje para update.
Teclas mantenidas y teclas soltadas
Sección titulada «Teclas mantenidas y teclas soltadas»on_key se llama una vez por pulsación. Para teclas que
actúan mientras se mantienen, define on_key_up(self, key), que recibe cada tecla al soltarla
por su nombre ("left", "space", "a", sin modificadores), o pregunta en cualquier momento
qué teclas están pulsadas:
pz.pressed()devuelve las teclas pulsadas ahora mismo como unfrozensetde nombres.pz.is_pressed("left", "a")esTruemientras se mantenga cualquiera de ellas.
class Juego(pz.App): def on_key_up(self, key): if key == "space": self.cargando = False
def tick(self, dt): if pz.is_pressed("left", "a"): self.x -= 200 * dtLas pulsaciones y las teclas soltadas solo se convierten en mensajes cuando la app o alguna de
sus ventanas define on_key u on_key_up, así que una app sin ellos no se redibuja con cada
tecla. pz.pressed() funciona en ambos casos. La sección de juegos
los muestra en un bucle de fotogramas, junto con ayudas de pyzed.game como axis y vector.
Mostrar atajos
Sección titulada «Mostrar atajos»ui.kbd("ctrl-shift-p")dibuja las teclas. En macOS usa símbolos (⌃⇧P) y en el resto palabras.ui.button(..., keys="ctrl-s"),ui.icon_button(..., tooltip="Guardar", keys="ctrl-s"),ui.MenuItem(..., keys=...),ui.PaletteItem(..., keys=...)yui.tooltip(..., keys=...)muestran el atajo junto a la acción, dibujado como teclas. Pasakeys=en vez de escribir las teclas en el texto:f"Guardar ({keys})"queda desfasado cuando el usuario cambia el atajo.ui.keys_text("ctrl-shift-p")da"Ctrl+Shift+P"para una etiqueta o línea de estado en texto plano.- Fija el estilo con
pyzed.ui.base.KEY_STYLE = "symbols"o"words".