feat(web): global keyboard shortcuts (Space/J/L/M/Arrows//)
test-web / test (push) Failing after 32s
test-web / test (push) Failing after 32s
Universal music-player conventions, attached at window level from +layout.svelte: Space, K play / pause ArrowLeft previous track ArrowRight next track J seek -10s L seek +10s ArrowUp volume +5% ArrowDown volume -5% M mute / unmute (restores prior volume) / focus the global search input Skipped when focus is in an input / textarea / select / contenteditable so typing in the search box and rename fields behaves normally. Modifier-only chords (Ctrl/Cmd/Alt + key) intentionally pass through to the browser. New store helper `toggleMute()` captures the last non-zero volume so M can toggle back without permanently losing the user's level. shortcuts.svelte.ts is the new module; +layout.svelte wires it alongside useMediaSession / useEventsDispatcher. Scribe 529, local task #60.
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
} from '$lib/player/store.svelte';
|
||||
import { useMediaSession } from '$lib/player/mediaSession.svelte';
|
||||
import { useEventsDispatcher } from '$lib/player/events.svelte';
|
||||
import { useGlobalShortcuts } from '$lib/player/shortcuts.svelte';
|
||||
import { applyMetaThemeColor } from '$lib/theme/applyMetaThemeColor.svelte';
|
||||
import { audioLoader } from '$lib/player/audioLoader';
|
||||
import { attachStallRetry } from '$lib/player/stallRetry';
|
||||
@@ -113,6 +114,7 @@
|
||||
|
||||
useMediaSession();
|
||||
useEventsDispatcher();
|
||||
useGlobalShortcuts();
|
||||
applyMetaThemeColor();
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user