30 lines
1.3 KiB
Python
30 lines
1.3 KiB
Python
"""События клавиш — контракт между бэкендом ввода и ассистентом.
|
|
|
|
Бэкенд (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 |