Key Press

simulate Key Press

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/451574/1095111/Key%20Press.js

  1. !(function (moduleName, definition) {
  2. // Whether to expose Keyvent as an AMD module or to the global object.
  3. if (typeof define === 'function' && typeof define.amd === 'object') define(definition);
  4. else this[moduleName] = definition();
  5.  
  6. })('keyvent', function definition () {
  7.  
  8. function contextOn (element) {
  9. var exports = {};
  10. exports.on = contextOn;
  11.  
  12. exports.down = function (keys) {
  13. dispatch(element, 'keydown', keys);
  14. };
  15.  
  16. exports.up = function (keys) {
  17. dispatch(element, 'keyup', keys);
  18. };
  19.  
  20. return exports;
  21. }
  22.  
  23. function dispatch (element, type, keys) {
  24. var event = document.createEvent('HTMLEvents');
  25. event.initEvent(type, true, true);
  26. keys = normalizeKeys(keys);
  27. for (var i = 0; i < keys.length; i++) {
  28. var keyCode = toKeyCode(keys[i]);
  29. event.which = event.keyCode = keyCode;
  30. if (MODIFIERS[keyCode]) event[MODIFIERS[keyCode] + 'Key'] = true;
  31. element.dispatchEvent(event);
  32. }
  33. }
  34.  
  35. function normalizeKeys (keys) {
  36. if (!keys) return [0];
  37. if (isString(keys)) return keys.split(' ');
  38. return [keys];
  39. }
  40.  
  41. function isString (object) { return typeof object === 'string'; }
  42.  
  43. // Borrowed from https://github.com/madrobby/keymaster
  44. var ALIASES = {
  45. '⇧': 16, 'shift': 16,
  46. '⌃': 17, 'ctrl': 17, 'control': 17,
  47. '⌥': 18, 'alt': 18, 'option': 18,
  48. '⌘': 91, 'command': 91,
  49. 'backspace': 8, 'tab': 9,
  50. 'clear': 12, 'enter': 13,
  51. 'return': 13, 'esc': 27,
  52. 'escape': 27, 'space': 32,
  53. 'left': 37, 'up': 38,
  54. 'right': 39, 'down': 40,
  55. 'del': 46, 'delete': 46,
  56. 'home': 36, 'end': 35,
  57. 'pageup': 33, 'pagedown': 34,
  58. ',': 188, '.': 190,
  59. '/': 191, '`': 192,
  60. '-': 189, '=': 187,
  61. ';': 186, '\'': 222,
  62. '[': 219, ']': 221,
  63. '\\': 220
  64. };
  65. for (key = 1; key < 20; key++) ALIASES['f' + key] = ALIASES['F' + key] = 111 + key;
  66.  
  67. var MODIFIERS = {
  68. '16': 'shift',
  69. '17': 'ctrl',
  70. '18': 'alt',
  71. '91': 'meta'
  72. };
  73.  
  74. function toKeyCode(key) {
  75. if (isString(key)) return ALIASES[key] || key.toUpperCase().charCodeAt(0);
  76. return key;
  77. }
  78.  
  79. return contextOn(document);
  80. });

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址