import { KeyboardLayout, KeyCombo } from "../keyboardLayouts";
import { en_US } from "./en_US";

const name = "Русская";
const isoCode = "ru-RU";

export const chars = {
  ...en_US.chars,
  А: { key: "KeyF", shift: true },
  Б: { key: "Comma", shift: true },
  В: { key: "KeyD", shift: true },
  Г: { key: "KeyU", shift: true },
  Д: { key: "KeyL", shift: true },
  Е: { key: "KeyT", shift: true },
  Ё: { key: "Backquote", shift: true },
  Ж: { key: "Semicolon", shift: true },
  З: { key: "KeyP", shift: true },
  И: { key: "KeyB", shift: true },
  Й: { key: "KeyQ", shift: true },
  К: { key: "KeyR", shift: true },
  Л: { key: "KeyK", shift: true },
  М: { key: "KeyV", shift: true },
  Н: { key: "KeyY", shift: true },
  О: { key: "KeyJ", shift: true },
  П: { key: "KeyG", shift: true },
  Р: { key: "KeyH", shift: true },
  С: { key: "KeyC", shift: true },
  Т: { key: "KeyN", shift: true },
  У: { key: "KeyE", shift: true },
  Ф: { key: "KeyA", shift: true },
  Х: { key: "BracketLeft", shift: true },
  Ц: { key: "KeyW", shift: true },
  Ч: { key: "KeyX", shift: true },
  Ш: { key: "KeyI", shift: true },
  Щ: { key: "KeyO", shift: true },
  Ъ: { key: "BracketRight", shift: true },
  Ы: { key: "KeyS", shift: true },
  Ь: { key: "KeyM", shift: true },
  Э: { key: "Quote", shift: true },
  Ю: { key: "Period", shift: true },
  Я: { key: "KeyZ", shift: true },
  а: { key: "KeyF" },
  б: { key: "Comma" },
  в: { key: "KeyD" },
  г: { key: "KeyU" },
  д: { key: "KeyL" },
  е: { key: "KeyT" },
  ё: { key: "Backquote" },
  ж: { key: "Semicolon" },
  з: { key: "KeyP" },
  и: { key: "KeyB" },
  й: { key: "KeyQ" },
  к: { key: "KeyR" },
  л: { key: "KeyK" },
  м: { key: "KeyV" },
  н: { key: "KeyY" },
  о: { key: "KeyJ" },
  п: { key: "KeyG" },
  р: { key: "KeyH" },
  с: { key: "KeyC" },
  т: { key: "KeyN" },
  у: { key: "KeyE" },
  ф: { key: "KeyA" },
  х: { key: "BracketLeft" },
  ц: { key: "KeyW" },
  ч: { key: "KeyX" },
  ш: { key: "KeyI" },
  щ: { key: "KeyO" },
  ъ: { key: "BracketRight" },
  ы: { key: "KeyS" },
  ь: { key: "KeyM" },
  э: { key: "Quote" },
  ю: { key: "Period" },
  я: { key: "KeyZ" },
  '"': { key: "Digit2", shift: true },
  "№": { key: "Digit3", shift: true },
  ";": { key: "Digit4", shift: true },
  ":": { key: "Digit6", shift: true },
  "?": { key: "Digit7", shift: true },
  ".": { key: "Slash" },
  ",": { key: "Slash", shift: true },
} as Record<string, KeyCombo>;

export const keyDisplayMap = {
  ...en_US.keyDisplayMap,
  KeyF: "а",
  Comma: "б",
  KeyD: "в",
  KeyU: "г",
  KeyL: "д",
  KeyT: "е",
  Backquote: "ё",
  Semicolon: "ж",
  KeyP: "з",
  KeyB: "и",
  KeyQ: "й",
  KeyR: "к",
  KeyK: "л",
  KeyV: "м",
  KeyY: "н",
  KeyJ: "о",
  KeyG: "п",
  KeyH: "р",
  KeyC: "с",
  KeyN: "т",
  KeyE: "у",
  KeyA: "ф",
  BracketLeft: "х",
  KeyW: "ц",
  KeyX: "ч",
  KeyI: "ш",
  KeyO: "щ",
  BracketRight: "ъ",
  KeyS: "ы",
  KeyM: "ь",
  Quote: "э",
  Period: "ю",
  KeyZ: "я",
  Slash: ".",
  "(KeyF)": "А",
  "(Comma)": "Б",
  "(KeyD)": "В",
  "(KeyU)": "Г",
  "(KeyL)": "Д",
  "(KeyT)": "Е",
  "(Backquote)": "Ё",
  "(Semicolon)": "Ж",
  "(KeyP)": "З",
  "(KeyB)": "И",
  "(KeyQ)": "Й",
  "(KeyR)": "К",
  "(KeyK)": "Л",
  "(KeyV)": "М",
  "(KeyY)": "Н",
  "(KeyJ)": "О",
  "(KeyG)": "П",
  "(KeyH)": "Р",
  "(KeyC)": "С",
  "(KeyN)": "Т",
  "(KeyE)": "У",
  "(KeyA)": "Ф",
  "(BracketLeft)": "Х",
  "(KeyW)": "Ц",
  "(KeyX)": "Ч",
  "(KeyI)": "Ш",
  "(KeyO)": "Щ",
  "(BracketRight)": "Ъ",
  "(KeyS)": "Ы",
  "(KeyM)": "Ь",
  "(Quote)": "Э",
  "(Period)": "Ю",
  "(KeyZ)": "Я",
  "(Digit2)": '"',
  "(Digit3)": "№",
  "(Digit4)": ";",
  "(Digit6)": ":",
  "(Digit7)": "?",
  "(Slash)": ",",
};

export const modifierDisplayMap = en_US.modifierDisplayMap;
export const virtualKeyboard = en_US.virtualKeyboard;

export const ru_RU: KeyboardLayout = {
  isoCode,
  name,
  chars,
  keyDisplayMap,
  modifierDisplayMap,
  virtualKeyboard,
};
