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.
wubloader/thrimbletrimmer/scripts/keyboard-shortcuts.js

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;
}
});