Zpět na projekty
TUIX v0.6Beta

Naposledy aktualizováno: 2026-08-14

Zpracování vstupu

TUIX zachytává události klávesnice a myši v nativním listener vlákně a vystavuje je jako snapshoty. Frame loop směruje snapshoty na fokusovaný, zachycený, modální nebo hitmapou vybraný widget.

Spuštění a zastavení

from tuix.core import input, core

# Start native background input listener thread
input.tuix_input_start()

# Run the main loop
while running:
    core.tuix_core_loop_run()

# Stop listener thread on exit
input.tuix_input_stop()

Snapshoty

FunkceChování
input.tuix_input_get_snapshot()Vrátí a spotřebuje další snapshot z fronty.
input.tuix_input_peek_snapshot()Vrátí poslední snapshot bez spotřebování čekajících událostí.
input.tuix_input_inject_key(key, ctrl=0, alt=0, shift=0, event_type=1, payload_utf8=b'')Vloží syntetickou klávesovou událost přímo do nativní fronty vstupu.

Tvar snapshotu

  • InputSnapshot vystavuje term_x, term_y, keyboard, mouse, consumed_keyboard a consumed_mouse.
  • Klávesnicové události vystavují pole jako btn, code, scancode, modifiers, pressed, repeat, has_event a payload_utf8 (128bajtový UTF-8 textový buffer pro grafémové clustery a IME text).
  • Události myši vystavují event, btn, buttons_held, col, row a has_event.

Pořadí routování

Routování ve v0.6 bere v úvahu modální stav, zachycení myši, vlastnictví viewportu, hitmap picking, focus a obecnou obsluhu myši. To je důležité pro drag-heavy widgety a scrollovatelné kontejnery, kde se viditelný cíl obsahu může lišit od původní pozice bufferu.

Zachycení myši

from tuix.core import core

# Start mouse capture for drag operations
core.tuix_mouse_capture_start(uid)
active_uid = core.tuix_mouse_capture_get_uid()

# Release mouse capture when drag finishes
core.tuix_mouse_capture_stop(uid)