Files
wehub-resource-sync 91e75e620b
CI: cua-driver distro-compat matrix / debian:12 (glibc 2.36) (push) Has been cancelled
CI: SPDX Headers / Check SPDX headers (warn-only) (push) Has been cancelled
CD: Docs MCP Server / build (linux/amd64) (push) Has been cancelled
CD: Docs MCP Server / build (linux/arm64) (push) Has been cancelled
CD: Docs MCP Server / merge (push) Has been cancelled
CI: cua-driver distro-compat matrix / Resolve release version (push) Has been cancelled
CI: cua-driver distro-compat matrix / fedora:41 (glibc 2.40) (push) Has been cancelled
CI: cua-driver distro-compat matrix / rockylinux:9 (glibc 2.34) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:22.04 (glibc 2.35) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:24.04 (glibc 2.39) (push) Has been cancelled
CI: cua-driver distro-compat matrix / Distro compat summary (push) Has been cancelled
CI: Rust Linux unit / Rust Linux unit and compile (push) Has been cancelled
CI: Rust Windows unit / Rust Windows unit and compile (push) Has been cancelled
CI: Nix Linux Rust source / Nix / compositor build (push) Has been cancelled
CI: Nix Linux Rust source / Nix / driver package (push) Has been cancelled
CI: Nix Linux Rust source / Nix / Rust unit tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:19 +08:00

31 lines
888 B
Python

"""Keyboard interface — type text and press keys, backed by a Transport."""
from __future__ import annotations
from typing import List, Union
from cua_sandbox.transport.base import Transport
class Keyboard:
"""Keyboard control."""
def __init__(self, transport: Transport):
self._t = transport
async def type(self, text: str) -> None:
"""Type a string of text."""
await self._t.send("type_text", text=text)
async def keypress(self, keys: Union[List[str], str]) -> None:
"""Press a key combination (e.g. ["ctrl", "c"] or "enter")."""
if isinstance(keys, str):
keys = [keys]
await self._t.send("hotkey", keys=keys)
async def key_down(self, key: str) -> None:
await self._t.send("key_down", key=key)
async def key_up(self, key: str) -> None:
await self._t.send("key_up", key=key)