Add a Paste button to Vultr console
当前为
// ==UserScript==
// @name Vultr console paste
// @name:zh Vultr 控制台 粘贴功能
// @version 0.2
// @description Add a Paste button to Vultr console
// @description:zh 给Vultr的控制台添加一个粘贴按钮
// @author Sam0230
// @match *://my.vultr.com/*/novnc/*
// @grant none
// @run-at document-start
// @namespace https://gf.qytechs.cn/users/305841
// ==/UserScript==
(function() {
'use strict';
let ASCIIString = function ASCIIChar(str) {
return (str == str.match(/[\t-~]*/)[0]);
}
let clearNonASCIIChar = function clearNonASCIIChar(str) {
let result = str.match(/[\t-~]/g);
if (!result) {
result = [];
}
return result.join("");
}
let sendString = window.sendString = function sendString(str) {
let KeyCode = str.charCodeAt(), needShift = ('~!@#$%^&*()_+{}|:"<>?'.indexOf(str[0]) != -1);
if (KeyCode == "\n".charCodeAt()) {
KeyCode = XK_Return;
}
if (KeyCode == "\t".charCodeAt()) {
KeyCode = XK_Tab;
}
if (needShift) {
rfb.sendKey(XK_Shift_L, true);
}
rfb.sendKey(KeyCode);
if (needShift) {
rfb.sendKey(XK_Shift_L, false);
}
if (str.length != 1) {
setTimeout(sendString.bind(this, str.slice(1)), 15);
}
}
let pasteButton = document.createElement("input"), textarea = document.createElement("textarea"), CapsLockButton = document.createElement("input");
pasteButton.type = "button";
pasteButton.value = "Paste";
pasteButton.id = "pasteButton";
pasteButton.style.display = "inline";
pasteButton.disabled = true;
textarea.placeholder="Paste";
textarea.id = "pasteTextarea";
textarea.style.display = "inline";
textarea.style.position = "relative";
textarea.style.top = "4px";
textarea.style.height = "13px";
textarea.cols = "6";
textarea.style.border = "none";
textarea.style.resize = "none";
textarea.onfocus = function () {
rfb._keyboard.ungrab();
rfb._mouse.ungrab();
}
textarea.onblur = function () {
setInterval(function () {
rfb._keyboard.grab();
rfb._mouse.grab();
}, 50);
}
textarea.oninput = function () {
textarea.value = clearNonASCIIChar(textarea.value);
}
CapsLockButton.type = "button";
CapsLockButton.value = "CapsLock";
CapsLockButton.id = "CapsLockButton";
CapsLockButton.style.display = "inline";
CapsLockButton.disabled = true;
let addButton = function addButton() {
if (!document.getElementById("noVNC_buttons")) {
setTimeout(addButton, 25);
return;
}
document.getElementById("noVNC_buttons").appendChild(textarea);
document.getElementById("noVNC_buttons").appendChild(pasteButton);
document.getElementById("noVNC_buttons").appendChild(CapsLockButton);
let enableButton = function enableButton() {
if (!document.getElementById("noVNC_canvas") || document.getElementById("noVNC_canvas").height == 20) {
setTimeout(enableButton, 25);
return;
}
pasteButton.disabled = false;
pasteButton.onclick = function () {
textarea.value = clearNonASCIIChar(textarea.value);
let text = textarea.value;
textarea.value = "";
sendString(text);
}
CapsLockButton.disabled = false;
CapsLockButton.onclick = function () {
rfb.sendKey(XK_Caps_Lock, 1);
}
}
setTimeout(enableButton, 0);
}
setTimeout(addButton, 0);
})();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址