Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name ESXi Clipboard Extension by Ansyncic
- // @version 0.1
- // @author You
- // @match https://주소/*
- // @grant none
- // ==/UserScript==
- (function () {
- 'use strict';
- function getEvent(character) {
- var options = {
- eventType: 'keypress'
- };
- switch (character) {
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- case 'g':
- case 'h':
- case 'i':
- case 'j':
- case 'k':
- case 'l':
- case 'm':
- case 'n':
- case 'o':
- case 'p':
- case 'q':
- case 'r':
- case 's':
- case 't':
- case 'u':
- case 'v':
- case 'w':
- case 'x':
- case 'y':
- case 'z':
- case '`':
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- case '-':
- case '=':
- case '\\':
- case '[':
- case ']':
- case ';':
- case '\'':
- case ',':
- case '.':
- case '/':
- options.keyCode = character.charCodeAt(0);
- options.charCode = character.charCodeAt(0);
- break;
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- case 'E':
- case 'F':
- case 'G':
- case 'H':
- case 'I':
- case 'J':
- case 'K':
- case 'L':
- case 'M':
- case 'N':
- case 'O':
- case 'P':
- case 'Q':
- case 'R':
- case 'S':
- case 'T':
- case 'U':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'Z':
- case '~':
- case '!':
- case '@':
- case '#':
- case '$':
- case '%':
- case '^':
- case '&':
- case '*':
- case '(':
- case ')':
- case '_':
- case '+':
- case '|':
- case '{':
- case '}':
- case ':':
- case '"':
- case '<':
- case '>':
- case '?':
- options.keyCode = character.charCodeAt(0);
- options.charCode = character.charCodeAt(0);
- options.shiftKey = true;
- break;
- case '\t':
- options.eventType = 'keydown';
- options.keyCode = 9;
- break;
- case '\n':
- options.eventType = 'keydown';
- options.keyCode = 13;
- break;
- case ' ':
- options.eventType = 'keydown';
- options.keyCode = 32;
- break;
- }
- return new KeyboardEvent(options.eventType, options);
- }
- function sleep(duration) {
- return new Promise(function (resolve, reject) {
- setTimeout(() => {
- resolve(0)
- }, duration);
- })
- }
- var global = {};
- document.addEventListener('keydown', e => (e.key == 'V' && e.ctrlKey && e.shiftKey) ? (navigator.clipboard.readText()
- .then(async text => {
- console.log("TXT: " + text);
- var maxIndex = $("div[id^='vm-console'].wmks .console-cloak").toArray().map(e => parseInt(e.style.zIndex)).reduce((iMax, x, i, arr) => x > arr[iMax] ? i : iMax, 0);
- var targetConsole = $("div[id^='vm-console'].wmks")[maxIndex];
- global.targetConsole = targetConsole;
- if (targetConsole) {
- var keyEvents = text.split('').map(getEvent);
- for (var i = 0; i < keyEvents.length; i++) {
- var e = keyEvents[i];
- global.currentEvent = e;
- targetConsole.dispatchEvent(e);
- await sleep(10);
- $(targetConsole).find('div.resize.ui-resizable-handle.ui-resizable-se > span').text('');
- }
- }
- })) : void 0)
- var waitHook = setInterval(_ => {
- if (!WMKS.LOGGER) {
- return;
- }
- WMKS.LOGGER._log ? void 0 : WMKS.LOGGER._log = WMKS.LOGGER.log.bind(WMKS.LOGGER);
- WMKS.LOGGER.log = function (text) {
- if (text == "assert: nuking an existing keyDownKeyTimer") {
- console.log('nuking retry');
- global.targetConsole.dispatchEvent(new KeyboardEvent(global.currentEvent.type, global.currentEvent));
- }
- WMKS.LOGGER._log(text);
- }
- clearInterval(waitHook);
- }, 100);
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement