MCPcopy
hub / github.com/Textualize/textual / _press_keys

Method _press_keys

src/textual/app.py:2043–2069  ·  view source on GitHub ↗

A task to send key events.

(self, keys: Iterable[str])

Source from the content-addressed store, hash-verified

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.

Callers 1

pressMethod · 0.80

Calls 9

_character_to_keyFunction · 0.90
wait_for_idleFunction · 0.90
sleepMethod · 0.80
wait_until_completeMethod · 0.80
set_senderMethod · 0.80
send_messageMethod · 0.80
splitMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected