import type {ActionInfo, KeymapCategory} from "$lib/assets/keymaps/keymap" export interface KeyInfo extends Partial { 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 = 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 = 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 = 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), )