diff --git a/src/actions/shortcuts.ts b/src/actions/shortcuts.ts index 20ab9f7b4..528091f04 100644 --- a/src/actions/shortcuts.ts +++ b/src/actions/shortcuts.ts @@ -2,11 +2,12 @@ import { isDarwin } from "../constants"; import { t } from "../i18n"; import { SubtypeOf } from "../utility-types"; import { getShortcutKey } from "../utils"; -import { ActionName } from "./types"; +import { ActionName, CustomActionName } from "./types"; export type ShortcutName = | SubtypeOf< ActionName, + | CustomActionName | "toggleTheme" | "loadScene" | "clearCanvas" @@ -40,6 +41,15 @@ export type ShortcutName = | "saveScene" | "imageExport"; +export const registerCustomShortcuts = ( + shortcuts: Record, +) => { + for (const key in shortcuts) { + const shortcut = key as CustomActionName; + shortcutMap[shortcut] = shortcuts[shortcut]; + } +}; + const shortcutMap: Record = { toggleTheme: [getShortcutKey("Shift+Alt+D")], saveScene: [getShortcutKey("CtrlOrCmd+S")], diff --git a/src/actions/types.ts b/src/actions/types.ts index c74e19552..1d6cf1660 100644 --- a/src/actions/types.ts +++ b/src/actions/types.ts @@ -35,7 +35,11 @@ type ActionFn = ( export type UpdaterFn = (res: ActionResult) => void; export type ActionFilterFn = (action: Action) => void; +export const makeCustomActionName = (name: string) => + `custom.${name}` as CustomActionName; +export type CustomActionName = `custom.${string}`; export type ActionName = + | CustomActionName | "copy" | "cut" | "paste"