Hands-free reading! Press Alt+X to start scrolling, then Alt+Up/Down to adjust speed. Escape/Space/Enter to stop scrolling.
当前为
// ==UserScript==
// @name Universal Auto Scroll
// @version 1.0
// @namespace MedX-AA
// @author MedX
// @license MIT
// @description Hands-free reading! Press Alt+X to start scrolling, then Alt+Up/Down to adjust speed. Escape/Space/Enter to stop scrolling.
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABGUlEQVRoge2ZP0oDQRSG3yqFgoWCoVChUIXCoVAoFArFj7AoVAoVChUKBQKBYKFuwwF4gPQEHxBUUVRCEIIgL6EpUuvJ2kZnprM6O+c77xztycmNh+Gm10ea/LG5M9wlbSt0/ZPxXGtzLTZ/O4EvieIfUBeGm5v3U21dDUEbmBr8LUIuCp3t4GJwL/DngJQFhEfx1y3xks8G73K2lHKpxpq/mXwn4IEBL+oV1YfwHYpW9yFzFVqcmB9yNtRjLKKC8dp/ybA1lVXl1/MAVlRzNi33lQ8SkCeKShpJ2ryOYfQPSdLpIUKHhdfYXga7iWqODoIoNQF+b+EYOSuGpD9HI0U3EBcFRtdA/kXUwMiurYlwR/U8VjMvexqqkJ0APgXAhFvYGjAcwp7UXox+B6U82NwGbEBWAHwApBC8BV8s2Aa+d06fH7+nKpmKPAFcmgCebGfLK6lYXoAHUvntrXoPnFjP3h19TIADymtVYcDKAEeyt7Cz/kR5nXRAO2gZHRsAi8shdAa6DaQotNcZY1HUMbkuBajhffULNYFbJfhntZ+3NBM9D8KZNLjHQDpPywJK51frfWgLlmce/M/GUbzzd58B9wAIcX0tsBtAAAAAElFTkSuQmCC
// @grant none
// @include *
// ==/UserScript==
var isScrolling = false; // Track if auto-scroll is active
var scrollSpeed = 0;
var initialSpeed = 30;
var lastTime;
// Key Codes
var DOM_VK_X = 88;
var DOM_VK_UP = 38;
var DOM_VK_DOWN = 40;
var DOM_VK_ESCAPE = 27;
var DOM_VK_SPACE = 32;
var DOM_VK_ENTER = 13;
window.addEventListener('keydown', handleKeyPress, true);
function handleKeyPress(e) {
// Block Alt + X if Ctrl or Shift is held
if (e.altKey && !e.ctrlKey && !e.shiftKey && e.keyCode === DOM_VK_X) {
startAutoScroll();
e.preventDefault();
}
// Only allow Alt + Up/Down after Alt + X was pressed
if (isScrolling) {
if (e.altKey && !e.ctrlKey && !e.shiftKey && e.keyCode === DOM_VK_UP) {
scrollSpeed -= 10;
e.preventDefault();
}
if (e.altKey && !e.ctrlKey && !e.shiftKey && e.keyCode === DOM_VK_DOWN) {
scrollSpeed += 10;
e.preventDefault();
}
}
// Stop scrolling with Escape, Space, or Enter
if (e.keyCode === DOM_VK_ESCAPE || e.keyCode === DOM_VK_SPACE || e.keyCode === DOM_VK_ENTER) {
stopAutoScroll();
e.preventDefault();
}
}
function startAutoScroll() {
if (!isScrolling) {
isScrolling = true;
scrollSpeed = initialSpeed;
lastTime = performance.now();
requestAnimationFrame(autoScroll);
}
}
function stopAutoScroll() {
isScrolling = false;
scrollSpeed = 0;
}
function autoScroll(timestamp) {
if (!isScrolling) return;
var elapsed = timestamp - lastTime;
var jumpPixels = (scrollSpeed * elapsed) / 1000;
window.scrollBy(0, jumpPixels);
lastTime = timestamp;
requestAnimationFrame(autoScroll);
}