Skip to content

Latest commit

 

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Paste Tool

Paste Tool 是一个 Go 实现的跨平台托盘粘贴工具。它通过模拟键盘逐字符输入文本,用于不可靠或不支持 Ctrl+V 的终端、远程桌面、VNC、在线代码编辑器和答题平台。

提要

这个工具本来是给我的前女友方便做 PTA、头歌等平台做题搞的,最近想了想,把它整理和优化之后开源了。

功能

  • 跨平台核心:Windows、macOS、Linux X11。
  • Linux GNOME:X11 使用 XTest;Wayland 使用 GNOME 的 XDG RemoteDesktop Portal 请求键盘授权。
  • CLI:pastedoctorconfigupdateversion
  • GUI:Fyne 托盘常驻和设置窗口。
  • 默认热键:Ctrl+Alt+V
  • 默认粘贴参数:启动延迟 3000ms、字符间隔 8ms、批量 50、批间暂停 20ms
  • 更新检查:读取 GitHub latest release,支持下载便携版或安装包资产。

平台要求

  • Windows:使用 SendInput。如果目标窗口权限级别高于 Paste Tool,Windows UIPI 可能阻止输入。
  • macOS:使用 CoreGraphics 事件注入,需要 Accessibility/Input Monitoring 权限。
  • Linux X11:需要 DISPLAY 和 XTest。Ubuntu GNOME 登录界面选择“Ubuntu on Xorg”即可使用全局热键和 XTest 输入。
  • Linux Wayland:粘贴时由桌面显示 RemoteDesktop 键盘授权提示;授权后才开始倒计时输入。Wayland 不允许应用直接注册 X11 全局热键,建议在 GNOME 设置中建立自定义快捷键,执行 paste_tool paste --source clipboard
  • Ubuntu GNOME 依赖:
sudo apt-get install xdg-desktop-portal xdg-desktop-portal-gnome libxtst6

paste-tool doctor 会区分 X11、Wayland、缺少 Portal 和缺少键盘授权等状态。

使用

启动托盘 GUI:

paste-tool

CLI 粘贴剪贴板文本:

paste-tool paste --source clipboard

从参数 dry-run 验证文本规范化:

paste-tool paste --source arg --text "hello" --dry-run

诊断当前平台:

paste-tool doctor

修改配置:

paste-tool config set hotkey Ctrl+Alt+V
paste-tool config set ui.language zh-CN
paste-tool config set paste.start_delay_ms 3000
paste-tool config get

检查和下载更新:

paste-tool update check
paste-tool update download portable
paste-tool update download installer

从源码构建

需要 Go。Linux 构建 GUI 和 X11 输入层时还需要桌面开发库,例如 Debian/Ubuntu:

sudo apt-get install gcc libgl1-mesa-dev xorg-dev libxkbcommon-dev libxtst-dev

构建:

go build -o dist/paste_tool ./cmd/paste-tool

Windows 发布版使用无控制台 GUI 入口,避免双击时弹出终端:

go build -ldflags "-H windowsgui" -o dist/paste_tool.exe ./cmd/paste-tool-gui

测试:

go test ./...
go vet ./...

配置文件

配置文件位于系统用户配置目录:

paste-tool config path

默认内容等价于:

{
  "hotkey": {
    "modifiers": ["Ctrl", "Alt"],
    "key": "V"
  },
  "paste": {
    "start_delay_ms": 3000,
    "inter_key_delay_ms": 8,
    "batch_size": 50,
    "batch_pause_ms": 20
  },
  "update": {
    "repository": "Mai-xiyu/Paste-Tool"
  },
  "ui": {
    "language": "auto"
  }
}

ui.language 支持 autozh-CNen。默认 auto 会跟随系统语言,无法识别时回退到英文。

About

Paste-Tool,粘贴模拟输入工具,可以绕过禁用粘贴的所有平台

Topics

Resources

Stars

15 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages