Advertisement
Guest User

Untitled

a guest
Jan 16th, 2020
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. // ==UserScript==
  2. // @name ESXi Clipboard Extension by Ansyncic
  3. // @version 0.1
  4. // @author You
  5. // @match https://주소/*
  6. // @grant none
  7. // ==/UserScript==
  8.  
  9. (function () {
  10. 'use strict';
  11. function getEvent(character) {
  12. var options = {
  13. eventType: 'keypress'
  14. };
  15. switch (character) {
  16. case 'a':
  17. case 'b':
  18. case 'c':
  19. case 'd':
  20. case 'e':
  21. case 'f':
  22. case 'g':
  23. case 'h':
  24. case 'i':
  25. case 'j':
  26. case 'k':
  27. case 'l':
  28. case 'm':
  29. case 'n':
  30. case 'o':
  31. case 'p':
  32. case 'q':
  33. case 'r':
  34. case 's':
  35. case 't':
  36. case 'u':
  37. case 'v':
  38. case 'w':
  39. case 'x':
  40. case 'y':
  41. case 'z':
  42.  
  43. case '`':
  44. case '0':
  45. case '1':
  46. case '2':
  47. case '3':
  48. case '4':
  49. case '5':
  50. case '6':
  51. case '7':
  52. case '8':
  53. case '9':
  54. case '-':
  55. case '=':
  56. case '\\':
  57.  
  58. case '[':
  59. case ']':
  60. case ';':
  61. case '\'':
  62. case ',':
  63. case '.':
  64. case '/':
  65. options.keyCode = character.charCodeAt(0);
  66. options.charCode = character.charCodeAt(0);
  67. break;
  68.  
  69. case 'A':
  70. case 'B':
  71. case 'C':
  72. case 'D':
  73. case 'E':
  74. case 'F':
  75. case 'G':
  76. case 'H':
  77. case 'I':
  78. case 'J':
  79. case 'K':
  80. case 'L':
  81. case 'M':
  82. case 'N':
  83. case 'O':
  84. case 'P':
  85. case 'Q':
  86. case 'R':
  87. case 'S':
  88. case 'T':
  89. case 'U':
  90. case 'V':
  91. case 'W':
  92. case 'X':
  93. case 'Y':
  94. case 'Z':
  95.  
  96. case '~':
  97. case '!':
  98. case '@':
  99. case '#':
  100. case '$':
  101. case '%':
  102. case '^':
  103. case '&':
  104. case '*':
  105. case '(':
  106. case ')':
  107. case '_':
  108. case '+':
  109. case '|':
  110.  
  111. case '{':
  112. case '}':
  113. case ':':
  114. case '"':
  115. case '<':
  116. case '>':
  117. case '?':
  118. options.keyCode = character.charCodeAt(0);
  119. options.charCode = character.charCodeAt(0);
  120. options.shiftKey = true;
  121. break;
  122.  
  123. case '\t':
  124. options.eventType = 'keydown';
  125. options.keyCode = 9;
  126. break;
  127. case '\n':
  128. options.eventType = 'keydown';
  129. options.keyCode = 13;
  130.  
  131. break;
  132. case ' ':
  133. options.eventType = 'keydown';
  134. options.keyCode = 32;
  135. break;
  136. }
  137. return new KeyboardEvent(options.eventType, options);
  138. }
  139. function sleep(duration) {
  140. return new Promise(function (resolve, reject) {
  141. setTimeout(() => {
  142. resolve(0)
  143. }, duration);
  144. })
  145. }
  146. var global = {};
  147. document.addEventListener('keydown', e => (e.key == 'V' && e.ctrlKey && e.shiftKey) ? (navigator.clipboard.readText()
  148. .then(async text => {
  149. console.log("TXT: " + text);
  150. 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);
  151. var targetConsole = $("div[id^='vm-console'].wmks")[maxIndex];
  152. global.targetConsole = targetConsole;
  153. if (targetConsole) {
  154. var keyEvents = text.split('').map(getEvent);
  155. for (var i = 0; i < keyEvents.length; i++) {
  156. var e = keyEvents[i];
  157. global.currentEvent = e;
  158. targetConsole.dispatchEvent(e);
  159. await sleep(10);
  160. $(targetConsole).find('div.resize.ui-resizable-handle.ui-resizable-se > span').text('');
  161. }
  162.  
  163. }
  164. })) : void 0)
  165.  
  166. var waitHook = setInterval(_ => {
  167. if (!WMKS.LOGGER) {
  168. return;
  169. }
  170. WMKS.LOGGER._log ? void 0 : WMKS.LOGGER._log = WMKS.LOGGER.log.bind(WMKS.LOGGER);
  171. WMKS.LOGGER.log = function (text) {
  172. if (text == "assert: nuking an existing keyDownKeyTimer") {
  173. console.log('nuking retry');
  174. global.targetConsole.dispatchEvent(new KeyboardEvent(global.currentEvent.type, global.currentEvent));
  175. }
  176. WMKS.LOGGER._log(text);
  177. }
  178. clearInterval(waitHook);
  179. }, 100);
  180. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement