From 5749269a2f20368c92f41fb0b1341fa00f874ca9 Mon Sep 17 00:00:00 2001 From: nieve Date: Sun, 9 Jun 2024 22:14:45 -0400 Subject: [PATCH] skip chapters hotkey --- src/components/VideoPlayer.vue | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/components/VideoPlayer.vue b/src/components/VideoPlayer.vue index 9aaff805..0862ce54 100644 --- a/src/components/VideoPlayer.vue +++ b/src/components/VideoPlayer.vue @@ -121,10 +121,11 @@ export default { activated() { this.destroying = false; this.sponsors?.segments?.forEach(segment => (segment.skipped = false)); + const chapters = this.video.chapters; this.hotkeysPromise.then(() => { var self = this; this.$hotkeys( - "f,m,j,k,l,c,space,up,down,left,right,0,1,2,3,4,5,6,7,8,9,shift+n,shift+s,shift+,,shift+.,alt+p,return,.,,", + "f,m,j,k,l,c,space,up,down,left,right,ctrl+left,ctrl+right,home,end,0,1,2,3,4,5,6,7,8,9,shift+n,shift+s,shift+,,shift+.,alt+p,return,.,,", function (e, handler) { const videoEl = self.$refs.videoEl; switch (handler.key) { @@ -170,6 +171,37 @@ export default { videoEl.currentTime = videoEl.currentTime + 5; e.preventDefault(); break; + case "ctrl+left": { + let jump = -1; + for (const chapter of chapters) { + if (chapter.start < videoEl.currentTime) { + jump = chapter.start; + } + } + videoEl.currentTime = jump; + e.preventDefault(); + break; + } + case "ctrl+right": { + let jump = videoEl.duration; + for (const chapter of chapters) { + if (chapter.start > videoEl.currentTime) { + jump = chapter.start; + break; + } + } + videoEl.currentTime = jump; + e.preventDefault(); + break; + } + case "home": + videoEl.currentTime = 0; + e.preventDefault(); + break; + case "end": + videoEl.currentTime = videoEl.duration; + e.preventDefault(); + break; case "0": videoEl.currentTime = 0; e.preventDefault();