Skip to content

Commit 3bb9b04

Browse files
committed
media q
1 parent 581ab53 commit 3bb9b04

1 file changed

Lines changed: 69 additions & 23 deletions

File tree

speed_rewind.js

Lines changed: 69 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -453,28 +453,24 @@ if (window.top === window.self) {
453453
}
454454
}
455455
let shiftPressed = false;
456+
let lastShiftPressTime = 0;
457+
const DOUBLE_PRESS_THRESHOLD = 500;
456458
function handleShift(event) {
457-
shiftPressed = event.detail.action === "pressed";
458-
459-
if (lockedSpeed && shiftPressed && video.playbackRate !== initialSpeed) {
460-
console.log(
461-
"keyboardShift if: video.playbackRate !== initialSpeed: ",
462-
video.playbackRate !== initialSpeed,
463-
video.playbackRate,
464-
initialSpeed
465-
);
466-
lockedSpeed = false;
467-
468-
currentSpeed = initialSpeed;
469-
video.playbackRate = initialSpeed;
470-
showSpeedDisplay();
471-
} else {
472-
console.log(
473-
"keyboardShift else: video.playbackRate !== initialSpeed: ",
474-
video.playbackRate !== initialSpeed,
475-
video.playbackRate,
476-
initialSpeed
477-
);
459+
const isPressed = event.detail.action === "pressed";
460+
shiftPressed = isPressed;
461+
462+
if (isPressed) {
463+
const now = Date.now();
464+
const isDoublePress = now - lastShiftPressTime < DOUBLE_PRESS_THRESHOLD;
465+
lastShiftPressTime = now;
466+
467+
if (lockedSpeed && isDoublePress && video.playbackRate !== initialSpeed) {
468+
console.log("Double Shift detected - resetting speed");
469+
lockedSpeed = false;
470+
currentSpeed = initialSpeed;
471+
video.playbackRate = initialSpeed;
472+
showSpeedDisplay();
473+
}
478474
}
479475
}
480476

@@ -562,9 +558,59 @@ if (window.top === window.self) {
562558
}
563559
});
564560
document.addEventListener("mediaPlay", (event) => {
565-
// https://github.com/stopsopa/os-browser-bridge/blob/main/SPECIAL.md#detect-media-keys
566-
document.querySelector('tp-yt-paper-dialog [id="close-button"]')?.click();
561+
log("mediaPlay:", event.detail.action, "document.hidden", document.hidden);
562+
563+
if (document.hidden) {
564+
return;
565+
}
566+
567+
if (event.detail.action === "pressed") {
568+
document.querySelector('tp-yt-paper-dialog [id="close-button"]')?.click();
569+
return;
570+
// let's not do that here, allow native media keyboard buttons to control it
571+
// this way when I take off my headphones we give a chance for native event to stop music
572+
if (video.paused) {
573+
video.play();
574+
} else {
575+
video.pause();
576+
}
577+
}
567578
});
579+
580+
(function () {
581+
let isCommandPressed = false;
582+
document.addEventListener("keyboardCommand", (e) => {
583+
isCommandPressed = e.detail.action === "pressed";
584+
});
585+
document.addEventListener(
586+
"mediaNext",
587+
(e) => {
588+
if (document.hidden) {
589+
return;
590+
}
591+
if (isCommandPressed && e.detail.action === "pressed") {
592+
log("→ Playlist Next (Local override)");
593+
document.querySelector(".ytp-next-button")?.click();
594+
e.stopImmediatePropagation();
595+
}
596+
},
597+
true
598+
);
599+
document.addEventListener(
600+
"mediaPrevious",
601+
(e) => {
602+
if (document.hidden) {
603+
return;
604+
}
605+
if (isCommandPressed && e.detail.action === "pressed") {
606+
log("→ Playlist Previous (Local override)");
607+
document.querySelector(".ytp-prev-button")?.click();
608+
e.stopImmediatePropagation();
609+
}
610+
},
611+
true
612+
);
613+
})();
568614
} catch (e) {
569615
log("general try catch error:", e);
570616
}

0 commit comments

Comments
 (0)