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/keyboardShortcuts.js

99 lines
2.4 KiB
JavaScript

function changeSpeed(direction) {
const speeds = [0.5, 1, 1.25, 1.5, 2];
const currentIndex = speeds.indexOf(player.playbackRate());
if (currentIndex < 0) {
// not present
return;
}
const newIndex = currentIndex + direction;
if (newIndex < 0 || newIndex >= speeds.length) {
// out of range
return;
}
player.playbackRate(speeds[newIndex]);
}
document.addEventListener("keypress", event => {
//if(event.target.nodeName == "BODY") {
if (event.target.nodeName !== "INPUT" && event.target.nodeName !== "TEXTAREA") {
switch (event.key) {
case "j":
player.currentTime(player.currentTime() - 10);
break;
case "k":
case " ": // also pause on space
player.paused() ? player.play() : player.pause();
break;
case "l":
player.currentTime(player.currentTime() + 10);
break;
case ",":
player.currentTime(player.currentTime() - 0.1);
break;
case ".":
player.currentTime(player.currentTime() + 0.1);
break;
case "i":
player
.trimmingControls()
.updateTrimTimes(player.currentTime(), player.trimmingControls().options.endTrim);
break;
case "o":
player
.trimmingControls()
.updateTrimTimes(player.trimmingControls().options.startTrim, player.currentTime());
break;
case "=":
changeSpeed(1);
break;
case "-":
changeSpeed(-1);
break;
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;
}
}
});
//Arrow keys only detected on keydown, keypress only works in "some" browsers
document.addEventListener("keydown", event => {
if (event.target.nodeName !== "INPUT" && event.target.nodeName !== "TEXTAREA") {
switch (event.keyCode) {
case 37:
player.currentTime(player.currentTime() - 5);
break;
case 39:
player.currentTime(player.currentTime() + 5);
break;
}
}
});