From f5f05bdf99a221324f8dfd6947b4c88c3adf6388 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Thu, 20 Mar 2025 14:37:12 +0900 Subject: [PATCH] Add hotkeys --- src/lang/en.ts | 29 +++ src/lib/Setting/Pages/HotkeySettings.svelte | 73 ++++++++ src/lib/Setting/Settings.svelte | 12 ++ src/ts/defaulthotkeys.ts | 141 ++++++++++++++ src/ts/hotkey.ts | 196 ++++++++++++-------- src/ts/storage/database.svelte.ts | 3 + 6 files changed, 377 insertions(+), 77 deletions(-) create mode 100644 src/lib/Setting/Pages/HotkeySettings.svelte create mode 100644 src/ts/defaulthotkeys.ts diff --git a/src/lang/en.ts b/src/lang/en.ts index 530eab03..ee0e3436 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -1079,4 +1079,33 @@ export const languageEnglish = { axModelsDef: "Ax Models Definition", doNotChangeSeperateModels: "Do Not Change Seperate Models", tools: "Tools", + action: "Action", + hotkey: "Hotkey", + hotkeyDesc: { + reroll: "Reroll", + unreroll: "Undo Reroll", + translate: "Translate", + remove: "Remove", + edit: "Edit", + copy: "Copy", + send: "Send", + settings: "Settings", + home: "Home", + presets: "Quick Presets Select", + persona: "Quick Persona Select", + modelSelect: "Quick Model Select", + toggleCSS: "Toggle CSS", + prevChar: "Previous Character", + nextChar: "Next Character", + quickMenu: "Quick Menu", + quickSettings: "Quick Settings", + toggleVoice: "Toggle Voice", + toggleLog: "Toggle Log", + previewRequest: "Preview Request", + import: "Import", + export: "Export", + webcam: "Toggle Webcam", + focusInput: "Focus Input", + }, + screenTooSmall: "Screen is too small to show the interface.", } diff --git a/src/lib/Setting/Pages/HotkeySettings.svelte b/src/lib/Setting/Pages/HotkeySettings.svelte new file mode 100644 index 00000000..e5f195b9 --- /dev/null +++ b/src/lib/Setting/Pages/HotkeySettings.svelte @@ -0,0 +1,73 @@ + + +{#if window.innerWidth < 768} + + {language.screenTooSmall} + + +{:else} + + + + + + + + + {#each DBState.db.hotkeys as hotkey} + + + + + + + + {/each} + +
{language.hotkey}
{language.hotkeyDesc[hotkey.action]} + + + + + + + + { + e.preventDefault(); + hotkey.key = e.key; + }} + > +
+{/if} \ No newline at end of file diff --git a/src/lib/Setting/Settings.svelte b/src/lib/Setting/Settings.svelte index fdb8b457..50852295 100644 --- a/src/lib/Setting/Settings.svelte +++ b/src/lib/Setting/Settings.svelte @@ -21,6 +21,7 @@ import ThanksPage from "./Pages/ThanksPage.svelte"; import ModuleSettings from "./Pages/Module/ModuleSettings.svelte"; import { isLite } from "src/ts/lite"; + import HotkeySettings from "./Pages/HotkeySettings.svelte"; let openLoreList = $state(false) if(window.innerWidth >= 900 && $SettingsMenuIndex === -1 && !$MobileGUI){ @@ -122,6 +123,15 @@ {language.account} & {language.files} + {#if !$isLite}