Greasy Fork is available in English.

noVNC Paste-typer for Proxmox

Pastes text into a noVNC window (for use with Proxmox specifically) inspired by the script by Chester Enright

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         noVNC Paste-typer for Proxmox
// @namespace    https://raw.githubusercontent.com/junkhacker/noVNC-Paste-typer-for-Proxmox/main/noVNC-paste-typer.js
// @version      0.3
// @description  Pastes text into a noVNC window (for use with Proxmox specifically) inspired by the script by Chester Enright
// @author       Junkhacker
// @include      /^https?://.*:8006/.*novnc.*
// @require http://code.jquery.com/jquery-3.3.1.min.js
// @license MIT
// @grant        none
// ==/UserScript==

const delay = 50
;(function () {
    'use strict'
    window.sendString = function(text) {
        const el = document.getElementById("canvas-id")
        let promise = Promise.resolve();
        text.split("").forEach(function(x){
            promise = promise.then(function (){
                let needs_shift = x.match(/[A-Z!@#$%^&*()_+{}:\"<>?~|]/)
                let evt
                if (needs_shift) {
                    evt = new KeyboardEvent("keydown", {keyCode: 16})
                    el.dispatchEvent(evt)
                    evt = new KeyboardEvent("keydown", {key: x, shiftKey: true})
                    el.dispatchEvent(evt)
                    evt = new KeyboardEvent("keyup", {keyCode: 16})
                    el.dispatchEvent(evt)
                }else{
                    evt = new KeyboardEvent("keydown", {key: x})
                    el.dispatchEvent(evt)
                }
                return new Promise(function (resolve) {
                    setTimeout(resolve, delay);
                });
            })
        })

    }
    $(document).ready(function() {
        setTimeout(()=>{
            console.log("Starting up noVNC Paste-typer for Proxmox")
            $("canvas").attr("id", "canvas-id")
            window.addEventListener("paste", (event) => {
                let text = prompt("Enter text to auto type.");
                if (text != null) window.sendString(text);
            })
        }, 1000);
    })
})()