"""События клавиш — контракт между бэкендом ввода и ассистентом. Бэкенд (console / Windows-хук) только ПЕРЕДАЁТ события; вся логика реакции — в машине состояний (modules/assistant). """ from __future__ import annotations from dataclasses import dataclass from typing import Callable, Optional @dataclass class KeyEvents: """Набор колбэков ассистента. on_dialog_toggle — ПРОБЕЛ: начать диалог (куи «готов к диалогу») или завершить его (куи «до новых встреч»); on_talk_down — клавиша «Слушай» НАЖАТА (push-to-talk, резервный режим); on_talk_up — клавиша «Слушай» ОТПУЩЕНА; on_stop — «Замолчи»: заглушить речь / отменить; on_repeat — «Повтори»: последнюю фразу; on_quit — выход из программы. """ on_talk_down: Callable[[], None] on_talk_up: Callable[[], None] on_stop: Callable[[], None] on_repeat: Callable[[], None] on_quit: Callable[[], None] on_dialog_toggle: Optional[Callable[[], None]] = None