Paste Tool 是一个 Go 实现的跨平台托盘粘贴工具。它通过模拟键盘逐字符输入文本,用于不可靠或不支持 Ctrl+V 的终端、远程桌面、VNC、在线代码编辑器和答题平台。
这个工具本来是给我的前女友方便做 PTA、头歌等平台做题搞的,最近想了想,把它整理和优化之后开源了。
- 跨平台核心:Windows、macOS、Linux X11。
- Linux GNOME:X11 使用 XTest;Wayland 使用 GNOME 的 XDG RemoteDesktop Portal 请求键盘授权。
- CLI:
paste、doctor、config、update、version。 - 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 libxtst6paste-tool doctor 会区分 X11、Wayland、缺少 Portal 和缺少键盘授权等状态。
启动托盘 GUI:
paste-toolCLI 粘贴剪贴板文本:
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-toolWindows 发布版使用无控制台 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 支持 auto、zh-CN、en。默认 auto 会跟随系统语言,无法识别时回退到英文。