diff options
author | Maxim Devaev <[email protected]> | 2024-12-11 21:09:49 +0200 |
---|---|---|
committer | Maxim Devaev <[email protected]> | 2024-12-11 21:09:49 +0200 |
commit | e014cbcedff6d7e96a1d5d6417ed5b9362d927c5 (patch) | |
tree | ff050e6b282eb65feebb4ee5cc9d92c9f36f2796 /kvmd | |
parent | adbd4f242b4478dd1a67de1afb3ba799de57f2d5 (diff) |
pikvm/pikvm#858, pikvm/pikvm#1249: Added slow typing mode for /api/hid/print
Diffstat (limited to 'kvmd')
-rw-r--r-- | kvmd/apps/kvmd/api/hid.py | 5 | ||||
-rw-r--r-- | kvmd/apps/kvmd/snapshoter.py | 2 | ||||
-rw-r--r-- | kvmd/plugins/hid/__init__.py | 10 |
3 files changed, 13 insertions, 4 deletions
diff --git a/kvmd/apps/kvmd/api/hid.py b/kvmd/apps/kvmd/api/hid.py index 51b9dc00..5ba22abb 100644 --- a/kvmd/apps/kvmd/api/hid.py +++ b/kvmd/apps/kvmd/api/hid.py @@ -123,7 +123,8 @@ class HidApi: if limit > 0: text = text[:limit] symmap = self.__ensure_symmap(req.query.get("keymap", self.__default_keymap_name)) - self.__hid.send_key_events(text_to_web_keys(text, symmap), no_ignore_keys=True) + slow = valid_bool(req.query.get("slow", False)) + await self.__hid.send_key_events(text_to_web_keys(text, symmap), no_ignore_keys=True, slow=slow) return make_json_response() def __ensure_symmap(self, keymap_name: str) -> dict[int, dict[int, str]]: @@ -250,7 +251,7 @@ class HidApi: state = valid_bool(req.query["state"]) self.__hid.send_key_event(key, state) else: - self.__hid.send_key_events([(key, True), (key, False)]) + await self.__hid.send_key_events([(key, True), (key, False)], slow=True) return make_json_response() @exposed_http("POST", "/hid/events/send_mouse_button") diff --git a/kvmd/apps/kvmd/snapshoter.py b/kvmd/apps/kvmd/snapshoter.py index 76885c90..e9391306 100644 --- a/kvmd/apps/kvmd/snapshoter.py +++ b/kvmd/apps/kvmd/snapshoter.py @@ -123,7 +123,7 @@ class Snapshoter: # pylint: disable=too-many-instance-attributes if self.__wakeup_key: logger.info("Waking up using key %r ...", self.__wakeup_key) - self.__hid.send_key_events( + await self.__hid.send_key_events( keys=[(self.__wakeup_key, True), (self.__wakeup_key, False)], no_ignore_keys=True, ) diff --git a/kvmd/plugins/hid/__init__.py b/kvmd/plugins/hid/__init__.py index 73ff5d04..447b4d07 100644 --- a/kvmd/plugins/hid/__init__.py +++ b/kvmd/plugins/hid/__init__.py @@ -137,9 +137,17 @@ class BaseHid(BasePlugin): # pylint: disable=too-many-instance-attributes # ===== - def send_key_events(self, keys: Iterable[tuple[str, bool]], no_ignore_keys: bool=False) -> None: + async def send_key_events( + self, + keys: Iterable[tuple[str, bool]], + no_ignore_keys: bool=False, + slow: bool=False, + ) -> None: + for (key, state) in keys: if no_ignore_keys or key not in self.__ignore_keys: + if slow: + await asyncio.sleep(0.02) self.send_key_event(key, state) def send_key_event(self, key: str, state: bool) -> None: |