mirror of https://github.com/ekimekim/wubloader
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.6 KiB
JavaScript
113 lines
2.6 KiB
JavaScript
3 years ago
|
function moveSpeed(player, amount) {
|
||
|
let currentIndex = PLAYBACK_RATES.indexOf(player.playbackRate());
|
||
|
if (currentIndex === -1) {
|
||
|
addError("The playback rate has somehow gone very wrong.");
|
||
|
return;
|
||
|
}
|
||
|
currentIndex += amount;
|
||
|
if (currentIndex < 0 || currentIndex >= PLAYBACK_RATES.length) {
|
||
|
return; // We've reached/exceeded the edge
|
||
|
}
|
||
|
player.playbackRate(PLAYBACK_RATES[currentIndex]);
|
||
|
}
|
||
|
|
||
|
function increaseSpeed(player) {
|
||
|
moveSpeed(player, 1);
|
||
|
}
|
||
|
|
||
|
function decreaseSpeed(player) {
|
||
|
moveSpeed(player, -1);
|
||
|
}
|
||
|
|
||
|
document.addEventListener("keypress", (event) => {
|
||
|
if (event.target.nodeName === "INPUT" || event.target.nodeName === "TEXTAREA") {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const player = getVideoJS();
|
||
|
switch (event.key) {
|
||
|
case "0":
|
||
|
player.currentTime(0);
|
||
|
break;
|
||
|
case "1":
|
||
|
player.currentTime(player.duration() * 0.1);
|
||
|
break;
|
||
|
case "2":
|
||
|
player.currentTime(player.duration() * 0.2);
|
||
|
break;
|
||
|
case "3":
|
||
|
player.currentTime(player.duration() * 0.3);
|
||
|
break;
|
||
|
case "4":
|
||
|
player.currentTime(player.duration() * 0.4);
|
||
|
break;
|
||
|
case "5":
|
||
|
player.currentTime(player.duration() * 0.5);
|
||
|
break;
|
||
|
case "6":
|
||
|
player.currentTime(player.duration() * 0.6);
|
||
|
break;
|
||
|
case "7":
|
||
|
player.currentTime(player.duration() * 0.7);
|
||
|
break;
|
||
|
case "8":
|
||
|
player.currentTime(player.duration() * 0.8);
|
||
|
break;
|
||
|
case "9":
|
||
|
player.currentTime(player.duration() * 0.9);
|
||
|
break;
|
||
|
case "j":
|
||
|
player.currentTime(player.currentTime() - 10);
|
||
|
break;
|
||
|
case "k":
|
||
|
case " ":
|
||
|
if (player.paused()) {
|
||
|
player.play();
|
||
|
} else {
|
||
|
player.pause();
|
||
|
}
|
||
|
break;
|
||
|
case "l":
|
||
|
player.currentTime(player.currentTime() + 10);
|
||
|
break;
|
||
|
case "ArrowLeft":
|
||
|
player.currentTime(player.currentTime() - 5);
|
||
|
break;
|
||
|
case "ArrowRight":
|
||
|
player.currentTime(player.currentTime() + 5);
|
||
|
break;
|
||
|
case ",":
|
||
|
player.currentTime(player.currentTime() - (1 / VIDEO_FRAMES_PER_SECOND));
|
||
|
break;
|
||
|
case ".":
|
||
|
player.currentTime(player.currentTime() + (1 / VIDEO_FRAMES_PER_SECOND));
|
||
|
break;
|
||
|
case "=":
|
||
|
increaseSpeed(player);
|
||
|
break;
|
||
|
case "-":
|
||
|
decreaseSpeed(player);
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// For whatever reason, arrow keys don't work for keypress. We can use keydown for them.
|
||
|
document.addEventListener("keydown", (event) => {
|
||
|
if (event.target.nodeName === "INPUT" || event.target.nodeName === "TEXTAREA") {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const player = getVideoJS();
|
||
|
switch (event.key) {
|
||
|
case "ArrowLeft":
|
||
|
player.currentTime(player.currentTime() - 5);
|
||
|
break;
|
||
|
case "ArrowRight":
|
||
|
player.currentTime(player.currentTime() + 5);
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
});
|