| # main.py | |
| import keyboard | |
| from candidate_window import CandidateWindow | |
| from engine import Engine | |
| cw = CandidateWindow() | |
| engine = Engine() | |
| def on_key(e): | |
| if e.event_type != "down": | |
| return | |
| # ESC 隐藏 | |
| if e.name == "esc": | |
| cw.hide() | |
| engine.reset() | |
| return | |
| # 普通字符 | |
| if len(e.name) == 1: | |
| candidates = engine.input(e.name) | |
| text = "\n".join([ | |
| f"{i+1}. {c}" for i, c in enumerate(candidates) | |
| ]) | |
| cw.set_text(text) | |
| cw.show() | |
| # 空格选择(模拟) | |
| if e.name == "space": | |
| engine.reset() | |
| cw.hide() | |
| keyboard.hook(on_key) | |
| cw.start() |