import { qmkBasicKeycodes } from "./qmkBasicKeycodes"; /** Small US keyboard display map for common QMK basic keys. T-23. */ export const keycodeLabels: Record = { KC_A: "A", KC_B: "B", KC_C: "C", KC_D: "D", KC_E: "E", KC_F: "F", KC_G: "G", KC_H: "H", KC_I: "I", KC_J: "J", KC_K: "K", KC_L: "L", KC_M: "M", KC_N: "N", KC_O: "O", KC_P: "P", KC_Q: "Q", KC_R: "R", KC_S: "S", KC_T: "T", KC_U: "U", KC_V: "V", KC_W: "W", KC_X: "X", KC_Y: "Y", KC_Z: "Z", KC_1: "1", KC_2: "2", KC_3: "3", KC_4: "4", KC_5: "5", KC_6: "6", KC_7: "7", KC_8: "8", KC_9: "9", KC_0: "0", KC_SPC: "Space", KC_ENTER: "Enter", KC_ESC: "Escape", KC_TAB: "Tab", KC_MINUS: "-", KC_EQUAL: "=", KC_LBRC: "[", KC_RBRC: "]", KC_BSLS: "\\", KC_SCLN: ";", KC_QUOT: "'", KC_GRV: "`", KC_COMM: ",", KC_DOT: ".", KC_SLSH: "/", }; const qmkCodeByName = new Map( qmkBasicKeycodes.flatMap((entry) => [entry.key, ...entry.aliases].map((name) => [name, entry.key] as const), ), ); /** Looks up the existing US display label, resolving a QMK alias to its formal name. */ export function getKeycodeLabel(code: string): string | undefined { const formalName = qmkCodeByName.get(code); if (!formalName) return keycodeLabels[code]; return ( keycodeLabels[code] ?? keycodeLabels[formalName] ?? qmkBasicKeycodes .find((entry) => entry.key === formalName) ?.aliases.map((alias) => keycodeLabels[alias]) .find((label): label is string => label !== undefined) ); }