From 8e4ebf6e56b0c40e3ba04e4e9d1eb4967cd05ec5 Mon Sep 17 00:00:00 2001 From: Lenny Angst Date: Mon, 14 Jul 2025 20:02:21 +0200 Subject: [PATCH] Add frame scrubbing keyboard shortcuts Added ',' and '.' keyboard shortcuts to the player for scrubbing frame by frame trough a video, just like on YouTube. Closes #666 --- materialious/package-lock.json | 4 ++-- materialious/src/lib/components/Player.svelte | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/materialious/package-lock.json b/materialious/package-lock.json index d27176be..feb32ca4 100644 --- a/materialious/package-lock.json +++ b/materialious/package-lock.json @@ -1,12 +1,12 @@ { "name": "materialious", - "version": "1.9.19", + "version": "1.9.20", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "materialious", - "version": "1.9.19", + "version": "1.9.20", "hasInstallScript": true, "dependencies": { "@capacitor-community/electron": "^5.0.1", diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index 9eac34e6..3144cab9 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -590,6 +590,22 @@ playerElement.playbackRate = playerElement.playbackRate + 0.25; return false; }); + + Mousetrap.bind(',', () => { + if (!playerElement) return + + const currentTrack = player.getVariantTracks().find(track => track.active) + const frameTime = 1/(currentTrack?.frameRate || 30) + playerElement.currentTime -= frameTime + }) + + Mousetrap.bind('.', () => { + if (!playerElement) return + + const currentTrack = player.getVariantTracks().find(track => track.active) + const frameTime = 1/(currentTrack?.frameRate || 30) + playerElement.currentTime += frameTime + }) playerElement.addEventListener('pause', async () => { savePlayerPos();