diff --git a/web/src/lib/services/keyboard.service.ts b/web/src/lib/services/keyboard.service.ts
new file mode 100644
index 0000000000..f5c9e59b75
--- /dev/null
+++ b/web/src/lib/services/keyboard.service.ts
@@ -0,0 +1,14 @@
+import ShortcutsModal from '$lib/modals/ShortcutsModal.svelte';
+import { modalManager, type ActionItem } from '@immich/ui';
+import { mdiKeyboard } from '@mdi/js';
+import type { MessageFormatter } from 'svelte-i18n';
+
+export const getKeyboardActions = ($t: MessageFormatter) => {
+ const KeyboardShortcuts: ActionItem = {
+ title: $t('show_keyboard_shortcuts'),
+ icon: mdiKeyboard,
+ onAction: () => modalManager.show(ShortcutsModal, {}),
+ };
+
+ return { KeyboardShortcuts };
+};
diff --git a/web/src/routes/(user)/user-settings/+page.svelte b/web/src/routes/(user)/user-settings/+page.svelte
index 43c214fd07..bf4f5b00f1 100644
--- a/web/src/routes/(user)/user-settings/+page.svelte
+++ b/web/src/routes/(user)/user-settings/+page.svelte
@@ -1,30 +1,21 @@
-
- {#snippet buttons()}
- modalManager.show(ShortcutsModal, {})}
- />
- {/snippet}
+