pokerogue模拟按键持续按下

模拟按键持续按下并支持快捷键退出

// ==UserScript==
// @name         pokerogue模拟按键持续按下
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  模拟按键持续按下并支持快捷键退出
// @author       You
// @match        https://pokerogue.net/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // 确保脚本在页面加载完成后执行
    window.onload = function() {
        let keyToPress = 'z';  // 默认按下的键为Z
        let isPressingKey = false;
        let intervalId;

        function createKeyboardEvent(type, key) {
            return new KeyboardEvent(type, {
                key: key,
                code: `Key${key.toUpperCase()}`,
                keyCode: key.toUpperCase().charCodeAt(0),
                which: key.toUpperCase().charCodeAt(0),
                bubbles: true
            });
        }

        function startPressingKey() {
            if (!isPressingKey) {
                isPressingKey = true;
                intervalId = setInterval(() => {
                    document.dispatchEvent(createKeyboardEvent('keydown', keyToPress));
                    document.dispatchEvent(createKeyboardEvent('keyup', keyToPress));
                }, 50);  // 调整间隔时间以适应实际需求
            }
        }

        function stopPressingKey() {
            if (isPressingKey) {
                isPressingKey = false;
                clearInterval(intervalId);
                document.dispatchEvent(createKeyboardEvent('keyup', keyToPress));
            }
        }

        // 监听键盘事件以实现快捷键退出
        document.addEventListener('keydown', function(event) {
            if (isPressingKey && event.key === 'Escape') {  // 仅在按键模拟进行时处理 Esc 键
                stopPressingKey();
            }
        });

        // 创建开始和结束按钮
        let startButton = document.createElement('button');
        startButton.textContent = '开始按下 ' + keyToPress;
        startButton.style.position = 'fixed';
        startButton.style.top = '10px';
        startButton.style.left = '10px';
        startButton.style.zIndex = 1000;
        startButton.addEventListener('click', startPressingKey);

        let stopButton = document.createElement('button');
        stopButton.textContent = '停止按下 ' + keyToPress;
        stopButton.style.position = 'fixed';
        stopButton.style.top = '40px';
        stopButton.style.left = '10px';
        stopButton.style.zIndex = 1000;
        stopButton.addEventListener('click', stopPressingKey);

        // 插入按钮到页面
        document.body.appendChild(startButton);
        document.body.appendChild(stopButton);
    };
})();