Type first AI character automatically

This commit is contained in:
Edern Deneuville
2026-09-11 13:23:02 +02:00
parent 672ad148fe
commit 6490e4715d
+18 -9
View File
@@ -21,19 +21,17 @@ class KeyStepper:
return
if self._hook is not None:
return
self.type_next_character()
if self._index >= len(self.text):
return
# suppress=True blocks the physical key while the callback types the next AI character.
self._hook = keyboard.hook(self._on_event, suppress=True)
def stop(self) -> None:
hook = self._hook
self._hook = None
if hook is not None:
keyboard.unhook(hook)
def _on_event(self, event: keyboard.KeyboardEvent) -> None:
if self._injecting or event.event_type != keyboard.KEY_DOWN:
return
@property
def remaining_characters(self) -> int:
return max(len(self.text) - self._index, 0)
def type_next_character(self) -> None:
with self._lock:
if self._index >= len(self.text):
self.stop()
@@ -50,6 +48,17 @@ class KeyStepper:
if self._index >= len(self.text):
self.stop()
def stop(self) -> None:
hook = self._hook
self._hook = None
if hook is not None:
keyboard.unhook(hook)
def _on_event(self, event: keyboard.KeyboardEvent) -> None:
if self._injecting or event.event_type != keyboard.KEY_DOWN:
return
self.type_next_character()
def _type_char(self, char: str) -> None:
if char == "\n":
keyboard.send("enter")