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

43 lines
1.4 KiB
Python

"""Mouse interface — click, move, drag, scroll, backed by a Transport."""
from __future__ import annotations
from cua_sandbox.transport.base import Transport
class Mouse:
"""Mouse control."""
def __init__(self, transport: Transport):
self._t = transport
async def click(self, x: int, y: int, button: str = "left") -> None:
await self._t.send("left_click", x=x, y=y, button=button)
async def right_click(self, x: int, y: int) -> None:
await self._t.send("right_click", x=x, y=y)
async def double_click(self, x: int, y: int) -> None:
await self._t.send("double_click", x=x, y=y)
async def move(self, x: int, y: int) -> None:
await self._t.send("move_cursor", x=x, y=y)
async def scroll(self, x: int, y: int, scroll_x: int = 0, scroll_y: int = 3) -> None:
await self._t.send("scroll", x=x, y=y, scroll_x=scroll_x, scroll_y=scroll_y)
async def mouse_down(self, x: int, y: int, button: str = "left") -> None:
await self._t.send("mouse_down", x=x, y=y, button=button)
async def mouse_up(self, x: int, y: int, button: str = "left") -> None:
await self._t.send("mouse_up", x=x, y=y, button=button)
async def drag(
self, start_x: int, start_y: int, end_x: int, end_y: int, button: str = "left"
) -> None:
await self._t.send(
"drag",
path=[[start_x, start_y], [end_x, end_y]],
button=button,
)