diff --git a/artifacts/docs/ux_power_user_shortcuts.md b/artifacts/docs/ux_power_user_shortcuts.md index 8dc68864d..3a32703d0 100644 --- a/artifacts/docs/ux_power_user_shortcuts.md +++ b/artifacts/docs/ux_power_user_shortcuts.md @@ -17,6 +17,13 @@ To improve the efficiency of batch operations, global keyboard listeners have be - **Move to Library**: `Ctrl + Shift + M`. - **Reset Metadata**: `Alt + R`. (Note: `Alt` is used specifically to avoid conflict with standard "Reload" `Ctrl + R`). +- **Navigation Shortcuts** (Requires an active library selection): + - **Home**: `Alt + H`. + - **Library**: `Alt + L`. + - **Series**: `Alt + S`. + - **Collections**: `Alt + C`. + - **Authors**: `Alt + A`. + ## 2. Navigation and Filter Persistence The interface manages filter states dynamically to prevent confusion when switching contexts. diff --git a/client/components/app/Appbar.vue b/client/components/app/Appbar.vue index 78072d698..4602fb89c 100644 --- a/client/components/app/Appbar.vue +++ b/client/components/app/Appbar.vue @@ -574,6 +574,24 @@ export default { } else if (this.isItemPage) { this.$eventBus.$emit('item_shortcut_reset') } + } else if (alt && this.currentLibrary?.id) { + const libId = this.currentLibrary.id + if (e.key.toLowerCase() === 'h') { + e.preventDefault() + this.$router.push(`/library/${libId}`) + } else if (e.key.toLowerCase() === 'l') { + e.preventDefault() + this.$router.push(`/library/${libId}/bookshelf`) + } else if (e.key.toLowerCase() === 's') { + e.preventDefault() + this.$router.push(`/library/${libId}/bookshelf/series`) + } else if (e.key.toLowerCase() === 'c') { + e.preventDefault() + this.$router.push(`/library/${libId}/bookshelf/collections`) + } else if (e.key.toLowerCase() === 'a') { + e.preventDefault() + this.$router.push(`/library/${libId}/bookshelf/authors`) + } } } },