mirror of
https://github.com/CharaChorder/DeviceManager.git
synced 2026-01-06 10:02:50 +00:00
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import type {ActionInfo, KeymapCategory} from "$lib/assets/keymaps/keymap"
|
|
|
|
export interface KeyInfo extends Partial<ActionInfo> {
|
|
code: number
|
|
category: KeymapCategory
|
|
}
|
|
|
|
export const KEYMAP_CATEGORIES = (await Promise.all(
|
|
Object.values(import.meta.glob("$lib/assets/keymaps/*.yml")).map(async load =>
|
|
load().then(it => (it as any).default),
|
|
),
|
|
)) as KeymapCategory[]
|
|
|
|
export const KEYMAP_CODES: Record<number, KeyInfo> = Object.fromEntries(
|
|
KEYMAP_CATEGORIES.flatMap(category =>
|
|
Object.entries(category.actions).map(([code, action]) => [
|
|
Number(code),
|
|
{...action, code: Number(code), category},
|
|
]),
|
|
),
|
|
)
|
|
|
|
export const KEYMAP_KEYCODES: Map<string, number> = new Map(
|
|
KEYMAP_CATEGORIES.flatMap(category =>
|
|
Object.entries(category.actions).map(([code, action]) => [action.keyCode!, Number(code)] as const),
|
|
).filter(([keyCode]) => keyCode !== undefined),
|
|
)
|
|
|
|
export const KEYMAP_IDS: Map<string, KeyInfo> = new Map(
|
|
KEYMAP_CATEGORIES.flatMap(category =>
|
|
Object.entries(category.actions).map(
|
|
([code, action]) => [action.id!, {...action, code: Number(code), category}] as const,
|
|
),
|
|
).filter(([id]) => id !== undefined),
|
|
)
|