/**
 * Соответствие macOS virtual key codes (Carbon `kVK_*` из HIToolbox/Events.h)
 * физическим клавишам на SVG-клавиатуре US QWERTY (`public/svg/visual/keyboard.svg`).
 *
 * Коды — позиционные (ANSI US), не символы Unicode; для другой раскладки символ
 * может отличаться, но подсветка физической клавиши останется корректной.
 *
 * См. также: rsms/kod `virtual_key_codes.h`, Apple Carbon Events.h
 */

const MAC_VK_TO_SVG_ID: Record<number, string> = {
  // kVK_ANSI_* — буквы и цифры (порядок enum ≠ порядок на клавиатуре)
  0x00: 'K_kb4c',
  0x01: 'K_kb4d',
  0x02: 'K_kb4e',
  0x03: 'K_kb4f',
  0x04: 'K_kb4h',
  0x05: 'K_kb4g',
  0x06: 'K_kb5c',
  0x07: 'K_kb5d',
  0x08: 'K_kb5e',
  0x09: 'K_kb5f',
  0x0b: 'K_kb5g',
  0x0c: 'K_kb3b',
  0x0d: 'K_kb3c',
  0x0e: 'K_kb3d',
  0x0f: 'K_kb3e',
  0x10: 'K_kb3g',
  0x11: 'K_kb3f',
  0x12: 'K_kb2k',
  0x13: 'K_kb2b',
  0x14: 'K_kb2c',
  0x15: 'K_kb2d',
  0x16: 'K_kb2f',
  0x17: 'K_kb2e',
  0x18: 'K_kb2m',
  0x19: 'K_kb2i',
  0x1a: 'K_kb2g',
  0x1b: 'K_kb2l',
  0x1c: 'K_kb2h',
  0x1d: 'K_kb2j',
  0x1e: 'K_kb3m',
  0x1f: 'K_kb3j',
  0x20: 'K_kb3h',
  0x21: 'K_kb3l',
  0x22: 'K_kb3i',
  0x23: 'K_kb3k',
  0x25: 'K_kb4k',
  0x26: 'K_kb4i',
  0x27: 'K_kb4m',
  0x28: 'K_kb4j',
  0x29: 'K_kb4l',
  0x2a: 'K_kb3n',
  0x2b: 'K_kb5j',
  0x2c: 'K_kb5l',
  0x2d: 'K_kb5h',
  0x2e: 'K_kb5i',
  0x2f: 'K_kb5k',
  0x32: 'K_kb2a',

  // Клавиши вне раскладки
  0x24: 'K_kb4n',
  0x30: 'K_kb3a',
  0x31: 'K_kb6d',
  0x33: 'K_kb2n',
  0x36: 'K_kb6l',
  0x37: 'K_kb6b',
  0x38: 'K_kb5a',
  0x39: 'K_kb4a',
  0x3a: 'K_kb6c',
  0x3b: 'K_kb6a',
  0x3c: 'K_kb5m',
  0x3d: 'K_kb6k',
  0x3e: 'K_kb6n',

  /** kVK_LeftArrow … kVK_UpArrow — блок стрелок в интерактивном UI */
  0x7b: 'K_kb7l',
  0x7c: 'K_kb7r',
  0x7d: 'K_kb7d',
  0x7e: 'K_kb7u',
};

/**
 * @param vk — код как в NSEvent.keyCode / Carbon kVK_* (не Windows VK).
 */
export function macVkToKeyboardSvgKeyId(vk: number): string | null {
  return MAC_VK_TO_SVG_ID[vk] ?? null;
}
