Skip to content

Instantly share code, notes, and snippets.

@byjg
Last active November 19, 2024 21:20
Show Gist options
  • Save byjg/a6378edb420a1c654c5f27bb494ca1c8 to your computer and use it in GitHub Desktop.
Save byjg/a6378edb420a1c654c5f27bb494ca1c8 to your computer and use it in GitHub Desktop.
How to Paste code to NoVNC.
// This will open up a prompt for text to send to a console session on digital ocean
// Useful for long passwords
(function () {
window.sendString = function (str) {
f(str.split(""));
function f(t) {
var character = t.shift();
var i=[];
var code = character.charCodeAt();
var needs_shift = character.match(/[A-Z!@#$%^&*()_+{}:\"<>?~|]/);
if (needs_shift) {
rfb.sendKey(XK_Shift_L,1);
}
rfb.sendKey(code,1);
rfb.sendKey(code,0);
if (needs_shift) {
rfb.sendKey(XK_Shift_L,0);
}
if (t.length > 0) {
setTimeout(function() {f(t);}, 10);
}
}
}
})();
# Minified Version:
(function(){window.sendString=function(a){function b(c){var d=c.shift(),g=d.charCodeAt(),h=d.match(/[A-Z!@#$%^&*()_+{}:\"<>?~|]/);h&&rfb.sendKey(XK_Shift_L,1),rfb.sendKey(g,1),rfb.sendKey(g,0),h&&rfb.sendKey(XK_Shift_L,0),0<c.length&&setTimeout(function(){b(c)},10)}b(a.split(""))}})();
@MichalSznajder
Copy link

(function () {
    const XK_Shift_L = 65505; // https://docs.rs/x11-dl/1.0.1/x11_dl/keysym/constant.XK_Shift_L.html      
    window.sendString = function (str, pressOnly) {
        f(str.split(""));
        function f(t) {
            var character = t.shift();
            var i=[];
            var code = character.charCodeAt();
            var needs_shift = character.match(/[A-Z!@#$%^&*()_+{}:\"<>?~|]/);
            if (needs_shift) {
                rfb.sendKey(XK_Shift_L,null,1);
            }
            rfb.sendKey(code,1);
            !pressOnly && rfb.sendKey(code,null,0);
            if (needs_shift) {
                rfb.sendKey(XK_Shift_L,null,0);
            }
            
            if (t.length > 0) {
                setTimeout(function() {f(t);}, 10);
            }
        }
    }
})(); 

My version of rfb needs 3 params to sendKey

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment