From 92a59298ac32b4ee6e4f24e6c93307eaa152cd27 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 2 May 2026 23:18:16 +0300 Subject: refine playback navigation and player modes --- web/js/detach.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'web/js/detach.js') diff --git a/web/js/detach.js b/web/js/detach.js index d255b2e..0c2d2aa 100644 --- a/web/js/detach.js +++ b/web/js/detach.js @@ -43,6 +43,17 @@ document.addEventListener('keydown', (ev) => { const editing = tag === 'INPUT' || tag === 'TEXTAREA' || ev.target?.isContentEditable; if (editing || ev.ctrlKey || ev.metaKey || ev.altKey) return; + if (ev.shiftKey && ev.code === 'KeyN') { + ev.preventDefault(); + post({ type: 'detach-next', play: currentState().playing }); + return; + } + if (ev.shiftKey && ev.code === 'KeyP') { + ev.preventDefault(); + post({ type: 'detach-prev', play: currentState().playing }); + return; + } + if (ev.key === ' ' || ev.code === 'Space') { ev.preventDefault(); togglePlayback(); @@ -55,6 +66,15 @@ document.addEventListener('keydown', (ev) => { } else if (ev.key === 'ArrowRight' || ev.key === 'l') { ev.preventDefault(); seekRelative(ev.repeat ? 15 : 5); + } else if (ev.key === 'p') { + ev.preventDefault(); + togglePlayback(); + } else if (ev.key === 'N') { + ev.preventDefault(); + post({ type: 'detach-next', play: currentState().playing }); + } else if (ev.key === 'P') { + ev.preventDefault(); + post({ type: 'detach-prev', play: currentState().playing }); } }); -- cgit v1.2.3