上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: Pony548 - 

各位怎么修改抖音快捷键

[复制链接]

该用户从未签到

1

主题

0

回帖

4

积分

助理工程师

积分
4
发表于 2025-3-18 14:59:34 | 显示全部楼层 | 阅读模式
悬赏2油猫币未解决

我想修改抖音快捷键,功能如下:

  • e→上个视频
  • s→视频进度后退
  • d→下一个视频
  • f→上一个视频
  • w→打开作者主页
  • t→网页全屏

我参考别人写的代码如下

esd 都实现了,不过有时候不加载,按f还是抖音默认的功能,无法修改,请大神帮忙看一看

// ==UserScript==
// @name         抖音-快捷键
// @namespace    http://tampermonkey.net/
// @icon         https://p-pc-weboff.byteimg.com/tos-cn-i-9r5gewecjs/favicon.png
// @version      8.8.8
// @description  修改抖音默认快捷键,适用于 esdf 选手
// @author       Leiyi548
// @match       https://www.douyin.com/*
// @run-at       document-idle
// ==/UserScript==

/*
E:上一个视频
D:下一个视频
S:后退
F:前进
T:网页全屏
Alt+V:评论区下滑
Ctrl+Alt+V:评论区上滑
*/

(function() {
    'use strict';
    console.log('[抖音快捷键] 启动!');

    // 抖音快捷键 定义一个对象来映射 keyCode 到要模拟的按键名称
    const keyCodeMap = {
        // D 键
        68: 'Down',
        // E 键
        69: 'Up',
        // S 键
        83: 'Left',
        // F 键
        70: 'Right',
        // T 键
        84: 'y',
    };

    document.onkeydown = function (ev) {
        const event = ev || window.event;
        const keyToSimulate = keyCodeMap[event.keyCode];
        if (keyToSimulate) {
            simulateKeyPress(keyToSimulate);
        }
    };

    // 模拟按键
    function simulateKeyPress(key) {
        console.log(key)
        // 按键映射配置
        const keyMap = {
            y: { key: 'y', code: 'KeyY', keyCode: 89 },
            x: { key: 'x', code: 'KeyX', keyCode: 88 },
            left: { key: 'ArrowLeft', code: 'ArrowLeft', keyCode: 37 },
            up: { key: 'ArrowUp', code: 'ArrowUp', keyCode: 38 },
            right: { key: 'ArrowRight', code: 'ArrowRight', keyCode: 39 },
            down: { key: 'ArrowDown', code: 'ArrowDown', keyCode: 40 },
        };

        // 统一转换为小写并获取配置
        const config = keyMap[key.toLowerCase()];
        if (!config) {
            console.error(`Unsupported key: ${key}. 按键未映射`);
            return;
        }

        const event = new KeyboardEvent('keydown', {
            key: config.key,
            code: config.code,
            keyCode: config.keyCode, // 兼容旧版
            which: config.keyCode,    // 兼容旧版
            bubbles: true,            // 允许事件冒泡
            cancelable: true,         // 允许阻止默认行为
            composed: true,           // 穿透Shadow DOM
            shiftKey: config.shiftKey || false // 设置Shift键状态
        });
        document.dispatchEvent(event);
    }

    // 获取评论区元素
    if (commentArea) {
        // 监听键盘按下事件
        document.addEventListener('keydown', function (event) {
            // 定义滚动步长
            const scrollStep = 50;

            // 按下向上箭头键,向上滚动
            if (event.keyCode === '75') {
                const commentArea = document.querySelector('.comment-mainContent');
                event.preventDefault(); // 阻止默认行为
                commentArea.scrollTop -= scrollStep;
            }

            // 按下向下箭头键,向下滚动
            if (event.keyCode === '74') {
                const commentArea = document.querySelector('.comment-mainContent');
                event.preventDefault(); // 阻止默认行为
                commentArea.scrollTop += scrollStep;
            }
        });
    }
})();

发表回复

本版积分规则

快速回复 返回顶部 返回列表