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.
134 lines
3.0 KiB
JavaScript
134 lines
3.0 KiB
JavaScript
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;
|
|
case "[":
|
|
if (typeof setCurrentRangeStartToVideoTime === "function") {
|
|
setCurrentRangeStartToVideoTime();
|
|
}
|
|
break;
|
|
case "]":
|
|
if (typeof setCurrentRangeEndToVideoTime === "function") {
|
|
setCurrentRangeEndToVideoTime();
|
|
}
|
|
break;
|
|
case "o":
|
|
if (typeof moveToPreviousRange === "function") {
|
|
moveToPreviousRange();
|
|
}
|
|
break;
|
|
case "p":
|
|
if (typeof moveToNextRange === "function") {
|
|
moveToNextRange();
|
|
}
|
|
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;
|
|
}
|
|
});
|