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
31 lines
888 B
Python
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)
|