A task to send key events.
(self, keys: Iterable[str])
| 2041 | return "+".join(key_tokens) |
| 2042 | |
| 2043 | async def _press_keys(self, keys: Iterable[str]) -> None: |
| 2044 | """A task to send key events.""" |
| 2045 | import unicodedata |
| 2046 | |
| 2047 | app = self |
| 2048 | driver = app._driver |
| 2049 | assert driver is not None |
| 2050 | for key in keys: |
| 2051 | if key.startswith("wait:"): |
| 2052 | _, wait_ms = key.split(":") |
| 2053 | await asyncio.sleep(float(wait_ms) / 1000) |
| 2054 | await app._animator.wait_until_complete() |
| 2055 | else: |
| 2056 | if len(key) == 1 and not key.isalnum(): |
| 2057 | key = _character_to_key(key) |
| 2058 | original_key = REPLACED_KEYS.get(key, key) |
| 2059 | char: str | None |
| 2060 | try: |
| 2061 | char = unicodedata.lookup(_get_unicode_name_from_key(original_key)) |
| 2062 | except KeyError: |
| 2063 | char = key if len(key) == 1 else None |
| 2064 | key_event = events.Key(key, char) |
| 2065 | key_event.set_sender(app) |
| 2066 | driver.send_message(key_event) |
| 2067 | await wait_for_idle(0) |
| 2068 | await app._animator.wait_until_complete() |
| 2069 | await wait_for_idle(0) |
| 2070 | |
| 2071 | def _flush(self, stderr: bool = False) -> None: |
| 2072 | """Called when stdout or stderr is flushed. |
no test coverage detected