我想修改抖音快捷键,功能如下:
- 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;
}
});
}
})();