中文 | English
针对 Proxmox VE noVNC 控制台的文本粘贴输入工具,支持将大段文本快速输入到虚拟机中。
常见问题: 如果遇到控制台大小写不同步的问题,请参考 PVE 控制台大小写不同步的解决方法
将文本逐字符输入到虚拟机,分为两条路径:
- 主路径:直接调用页面中 noVNC 客户端自身的按键发送接口,传入每个字符的 keysym 与物理按键
code - 回退路径:当无法获取该接口时,改为向控制台 Canvas 元素分发合成的
keydown和keyup事件
两条路径都会在大写字母及需要 Shift 的符号前后按住 Shift,并在输入前后重置修饰键状态,避免状态残留。
- 字符间隔可调(默认 50 毫秒,无上限),并记忆上次的设置
- 支持换行符 (
\n)、制表符 (\t) 及常见符号 - 实时检测不支持的非 ASCII 字符(中文、Emoji 等)
- 模态对话框提供文本输入框和实时字符统计(无字符数上限)
- 对话框底部提供字符间隔调节控件(加减按钮与数值输入),可实时调节并记忆设置
- 支持 ESC 键关闭对话框
- 输入过程中显示进度浮层(已输入/总字符数),半透明蒙版屏蔽页面操作,可随时点击取消;尝试关闭或刷新页面会弹出浏览器确认提示
- 输入完成或取消后自动解除蒙版,并以提示条展示结果
- 虚拟机关机或仅查看模式时自动隐藏粘贴按钮
- 根据 PVE 界面语言自动显示中文或英文界面(无手动切换入口),详见下方说明
工具界面语言跟随 PVE 当前登录界面的语言设置自动切换,无需手动配置:
- 优先读取浏览器
PVELangCookie(PVE 用于记录用户所选界面语言的 Cookie) - 若该 Cookie 不存在,或值既非中文也非英文,则回退到浏览器语言(
navigator.language)判断 - 最终仅归类为中文或英文两种界面(其他语言按英文处理)
- 安装浏览器扩展 Tampermonkey 或 Violentmonkey
- 安装脚本 pve-paste.user.js
- 访问 PVE noVNC 控制台页面
- 点击控制栏中的粘贴按钮(剪贴板图标)
默认匹配规则:
https://*:8006/*(标准 PVE 端口)/^.*novnc.*/(包含 novnc 的路径)
如需匹配特定域名(如 https://pve.example.com/),需要修改脚本头部的 @match 规则:
// ==UserScript==
// @match https://pve.example.com/*
// @include /^.*novnc.*/
// ==/UserScript==也可以同时保留多个匹配规则:
// ==UserScript==
// @match https://*:8006/*
// @match https://pve.example.com/*
// @include /^.*novnc.*/
// ==/UserScript==修改方法:在油猴扩展中找到已安装的脚本,点击编辑,修改头部的 @match 行后保存即可。
- 自动匹配 PVE 域名和 noVNC 路径
- 自动检测 Nginx 注入版本,避免重复加载
适用于通过反向代理统一部署的场景。
在 Nginx 配置中使用 sub_filter 注入脚本:
location / {
proxy_pass https://pve-backend;
# 禁用压缩,确保能修改内容
proxy_set_header Accept-Encoding "";
# 在 </head> 前注入脚本
sub_filter '</head>' '<script src="https://raw.githubusercontent.com/cjpjxjx/pve-paste-input/refs/heads/main/pve-paste-inject.js"></script></head>';
sub_filter_once on;
}- 自动检测 noVNC 页面
- 无需手动安装扩展
- 对所有访问用户生效
- 支持:大小写字母、数字、常见符号、换行符、制表符
- 不支持:中文、Emoji、扩展 Unicode 字符
字符范围:ASCII 可打印字符(32-126)+ 换行(10)+ 回车(13)+ 制表符(9)
- 两种加载方式不能同时使用,油猴版本会自动检测并避免冲突
- 不支持的字符会触发警告提示,可选择继续发送或取消
- 输入过程中蒙版会屏蔽页面操作,如需中止可点击进度浮层上的取消按钮
- 输入过程中请勿关闭或刷新页面,否则可能导致输入中断(浏览器会弹出确认提示)
- 浏览器:Chrome、Firefox、Edge(需支持 ES6)
- PVE 版本:在 5.x、7.x、8.x、9.x 版本测试通过
| 文件 | 说明 |
|---|---|
| pve-paste.user.js | 油猴脚本版本 |
| pve-paste-inject.js | Nginx 注入版本 |
基于 amunchet 的 noVNCCopyPasteProxmox.user.js 开发。
