1
0
Fork 0
mirror of https://gitlab.com/futo-org/fcast.git synced 2025-07-24 10:56:59 +00:00

Added more keyboard shortcuts and improve livestream seeking

This commit is contained in:
Michael Hollister 2024-11-12 23:41:46 -06:00
parent eba201cce1
commit 4beb3ded54

View file

@ -564,14 +564,20 @@ function volumeChangeHandler(volume: number) {
player.setVolume(volume); player.setVolume(volume);
} }
playerCtrlLiveBadge.onclick = () => { playerCtrlLiveBadge.onclick = () => { setLivePosition(); };
function setLivePosition() {
if (!isLivePosition) { if (!isLivePosition) {
isLivePosition = true; isLivePosition = true;
player.setCurrentTime(player.getDuration() - livePositionDelta); player.setCurrentTime(player.getDuration() - livePositionDelta);
playerCtrlLiveBadge.setAttribute("style", `background-color: red`); playerCtrlLiveBadge.setAttribute("style", `background-color: red`);
if (player.isPaused()) {
playerCtrlStateUpdate(PlayerControlEvent.Play);
}
} }
}; }
playerCtrlCaptions.onclick = () => { player.enableCaptions(!player.isCaptionsEnabled()); playerCtrlStateUpdate(PlayerControlEvent.SetCaptions); }; playerCtrlCaptions.onclick = () => { player.enableCaptions(!player.isCaptionsEnabled()); playerCtrlStateUpdate(PlayerControlEvent.SetCaptions); };
playerCtrlSpeed.onclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleSpeedMenu); }; playerCtrlSpeed.onclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleSpeedMenu); };
@ -583,10 +589,10 @@ playbackRates.forEach(r => {
}); });
videoElement.onclick = () => { videoElement.onclick = () => {
if (player.isPaused()) { if (player.isPaused()) {
playerCtrlStateUpdate(PlayerControlEvent.Play); playerCtrlStateUpdate(PlayerControlEvent.Play);
} else { } else {
playerCtrlStateUpdate(PlayerControlEvent.Pause); playerCtrlStateUpdate(PlayerControlEvent.Pause);
} }
}; };
videoElement.ondblclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleFullscreen); }; videoElement.ondblclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleFullscreen); };
@ -632,6 +638,7 @@ document.addEventListener('keydown', (event) => {
// console.log("KeyDown", event); // console.log("KeyDown", event);
switch (event.code) { switch (event.code) {
case 'KeyF':
case 'F11': case 'F11':
playerCtrlStateUpdate(PlayerControlEvent.ToggleFullscreen); playerCtrlStateUpdate(PlayerControlEvent.ToggleFullscreen);
event.preventDefault(); event.preventDefault();
@ -645,17 +652,27 @@ document.addEventListener('keydown', (event) => {
player.setCurrentTime(Math.max(player.getCurrentTime() - skipInterval, 0)); player.setCurrentTime(Math.max(player.getCurrentTime() - skipInterval, 0));
event.preventDefault(); event.preventDefault();
break; break;
case 'ArrowRight': { case 'ArrowRight':
// Skip forward // Skip forward
const duration = player.getDuration(); if (!isLivePosition) {
if (duration) { player.setCurrentTime(Math.min(player.getCurrentTime() + skipInterval, player.getDuration()));
player.setCurrentTime(Math.min(player.getCurrentTime() + skipInterval, duration));
} else {
player.setCurrentTime(player.getCurrentTime());
} }
event.preventDefault(); event.preventDefault();
break; break;
} case "Home":
player.setCurrentTime(0);
event.preventDefault();
break;
case "End":
if (isLive) {
setLivePosition();
}
else {
player.setCurrentTime(player.getDuration());
}
event.preventDefault();
break;
case 'KeyK':
case 'Space': case 'Space':
case 'Enter': case 'Enter':
// Pause/Continue // Pause/Continue