A Python library for computer use
Project description
scapkit_computer_use
跨平台桌面自动化 Python 库,提供屏幕截图、鼠标控制、键盘输入和剪贴板操作。
当前支持 macOS,Windows 支持开发中。
安装
需要 Python >= 3.11,使用 uv 管理项目:
uv sync
uv run setup.py build_ext --inplace
权限
macOS 下需要授予以下系统权限:
- 辅助功能 (Accessibility):鼠标、键盘控制
- 屏幕录制 (Screen Recording):屏幕截图
from scapkit_computer_use import check_permission, open_permission_settings
if not check_permission("Accessibility"):
await open_permission_settings("Accessibility")
功能
显示器信息
所有坐标和尺寸均使用 point(逻辑分辨率),而非物理像素。物理像素 = point × scale_factor。API 中的所有位置参数(鼠标移动、点击等)同样使用 point 坐标。
from scapkit_computer_use import list_displays
displays = list_displays()
# [{"id": 2, "x": 0.0, "y": 0.0, "width": 1920.0, "height": 1080.0, "scale_factor": 2.0, "is_main": True}]
# width/height 为 point 单位,实际物理像素为 1920×2 = 3840, 1080×2 = 2160
鼠标控制
from scapkit_computer_use import (
get_mouse_position, move_mouse, mouse_click, mouse_scroll, mouse_drag
)
# 获取当前位置
pos = get_mouse_position() # {"x": 100, "y": 200}
# 平滑移动
await move_mouse({"x": 500, "y": 300})
# 瞬间移动
await move_mouse({"x": 500, "y": 300}, smooth=False)
# 点击
await mouse_click("left")
await mouse_click("right")
# 滚动(方向为内容移动方向)
await mouse_scroll("down", 3)
await mouse_scroll("up", 3)
# 拖拽到目标位置
await mouse_drag({"x": 800, "y": 600})
键盘输入
使用跨平台的按键名称,无需关心底层键码:
from scapkit_computer_use import keyboard_click, key_combo
# 按下并释放一个键
await keyboard_click("a")
await keyboard_click("return")
# 组合键
await key_combo("c", ["command"]) # Cmd+C 复制
await key_combo("v", ["command"]) # Cmd+V 粘贴
await key_combo("z", ["command", "shift"]) # Cmd+Shift+Z 重做
支持的按键名称包括:a-z、0-9、return、tab、space、delete、escape、f1-f20、up/down/left/right 等。完整列表见 screen_capture_kit/keys.py。
剪贴板
from scapkit_computer_use import set_clipboard, get_clipboard, clipboard_paste
await set_clipboard("你好世界")
text = await get_clipboard() # "你好世界"
# 直接粘贴到当前输入框(模拟 Cmd+V)
await clipboard_paste()
屏幕截图
基于 macOS ScreenCaptureKit,支持全分辨率 Retina 截图:
from scapkit_computer_use import (
list_displays, start_capture, stop_capture,
current_frame_jpg, current_frame_bgra
)
displays = list_displays()
main = next(d for d in displays if d["is_main"])
# 启动截图流
handle = await start_capture(main["id"])
# 获取 JPEG 格式(可设置质量 0-100)
jpg_bytes = await current_frame_jpg(handle, quality=80)
# 获取原始 BGRA 像素数据
frame = await current_frame_bgra(handle)
# {"data": bytes, "width": 3840, "height": 2160, "bytes_per_row": 15360}
# 停止截图
await stop_capture(handle)
开发
# 构建 C 扩展
uv run setup.py build_ext --inplace
# 运行测试
uv run pytest tests/test_mouse.py -v -s
许可证
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scapkit_computer_use-0.0.1.tar.gz.
File metadata
- Download URL: scapkit_computer_use-0.0.1.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9be47f4fb3894f5bd9e8796aa0cace4aae095faa0d4706dc593b5b53af38d399
|
|
| MD5 |
a82f3ee50549dd0671fb8746a75d2695
|
|
| BLAKE2b-256 |
91a0a13144fed0b3b9367cedd34c534b6efede3d5f8173946bbe02636f887e7e
|
File details
Details for the file scapkit_computer_use-0.0.1-cp314-cp314-macosx_26_0_arm64.whl.
File metadata
- Download URL: scapkit_computer_use-0.0.1-cp314-cp314-macosx_26_0_arm64.whl
- Upload date:
- Size: 22.9 kB
- Tags: CPython 3.14, macOS 26.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f02b766525644ce0b7454670ea86f4a55b4a9c55a804d34baf885722368da84
|
|
| MD5 |
8480e81133e5821eb446059f4ca7df1d
|
|
| BLAKE2b-256 |
15fa0a50050cd584b87e26384545bae604a35740aa5644d6d712f118545f2362
|