/**
 * Key Code values
 * @deprecated - KeyCodes are deprecated, use individual string key exports
 */
export enum KeyCodes {
    alt = 18,
    arrowDown = 40,
    arrowLeft = 37,
    arrowRight = 39,
    arrowUp = 38,
    back = 8,
    backSlash = 220,
    break = 19,
    capsLock = 20,
    closeBracket = 221,
    colon = 186,
    colon2 = 59, // Opera and Firefox
    comma = 188,
    ctrl = 17,
    delete = 46,
    end = 35,
    enter = 13,
    equals = 187,
    equals2 = 61, // Opera
    equals3 = 107, // Firefox
    escape = 27,
    forwardSlash = 191,
    function1 = 112,
    function10 = 121,
    function11 = 122,
    function12 = 123,
    function2 = 113,
    function3 = 114,
    function4 = 115,
    function5 = 116,
    function6 = 117,
    function7 = 118,
    function8 = 119,
    function9 = 120,
    home = 36,
    insert = 45,
    menu = 93,
    minus = 189,
    minus2 = 109, // Opera and Firefox
    numLock = 144,
    numPad0 = 96,
    numPad1 = 97,
    numPad2 = 98,
    numPad3 = 99,
    numPad4 = 100,
    numPad5 = 101,
    numPad6 = 102,
    numPad7 = 103,
    numPad8 = 104,
    numPad9 = 105,
    numPadDivide = 111,
    numPadDot = 110,
    numPadMinus = 109,
    numPadMultiply = 106,
    numPadPlus = 107,
    openBracket = 219,
    pageDown = 34,
    pageUp = 33,
    period = 190,
    print = 44,
    quote = 222,
    scrollLock = 145,
    shift = 16,
    space = 32,
    tab = 9,
    tilde = 192,
    windowsLeft = 91,
    windowsOpera = 219, // Opera
    windowsRight = 92,
}

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeAlt: number = 18;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeArrowDown: number = 40;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeArrowLeft: number = 37;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeArrowRight: number = 39;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeArrowUp: number = 38;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeBack: number = 8;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeBackSlash: number = 220;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeBreak: number = 19;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeCapsLock: number = 20;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeCloseBracket: number = 221;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeColon: number = 186;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeColon2: number = 59; // Opera and Firefox

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeComma: number = 188;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeCtrl: number = 17;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeDelete: number = 46;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeEnd: number = 35;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeEnter: number = 13;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeEquals: number = 187;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeEquals2: number = 61; // Opera

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeEquals3: number = 107; // Firefox

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeEscape: number = 27;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeForwardSlash: number = 191;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction1: number = 112;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction10: number = 121;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction11: number = 122;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction12: number = 123;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction2: number = 113;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction3: number = 114;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction4: number = 115;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction5: number = 116;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction6: number = 117;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction7: number = 118;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction8: number = 119;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeFunction9: number = 120;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeHome: number = 36;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeInsert: number = 45;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeMenu: number = 93;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeMinus: number = 189;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeMinus2: number = 109; // Opera and Firefox

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumLock: number = 144;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad0: number = 96;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad1: number = 97;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad2: number = 98;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad3: number = 99;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad4: number = 100;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad5: number = 101;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad6: number = 102;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad7: number = 103;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad8: number = 104;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPad9: number = 105;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPadDivide: number = 111;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPadDot: number = 110;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPadMinus: number = 109;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPadMultiply: number = 106;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeNumPadPlus: number = 107;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeOpenBracket: number = 219;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodePageDown: number = 34;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodePageUp: number = 33;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodePeriod: number = 190;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodePrint: number = 44;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeQuote: number = 222;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeScrollLock: number = 145;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeShift: number = 16;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeSpace: number = 32;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeTab: number = 9;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeTilde: number = 192;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeWindowsLeft: number = 91;

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeWindowsOpera: number = 219; // Opera

/**
 * @deprecated - KeyCodes are deprecated, use string key exports
 */
export const keyCodeWindowsRight: number = 92;

/**
 * String values for use with KeyboardEvent.key
 */
export const keyArrowDown: "ArrowDown" = "ArrowDown" as const;
export const keyArrowLeft: "ArrowLeft" = "ArrowLeft" as const;
export const keyArrowRight: "ArrowRight" = "ArrowRight" as const;
export const keyArrowUp: "ArrowUp" = "ArrowUp" as const;
export const keyEnter: "Enter" = "Enter" as const;
export const keyEscape: "Escape" = "Escape" as const;
export const keyHome: "Home" = "Home" as const;
export const keyEnd: "End" = "End" as const;
export const keyFunction2: "F2" = "F2" as const;
export const keyPageDown: "PageDown" = "PageDown" as const;
export const keyPageUp: "PageUp" = "PageUp" as const;
export const keySpace: " " = " " as const;
export const keyTab: "Tab" = "Tab" as const;
export const keyBackspace: "Backspace" = "Backspace" as const;
export const keyDelete: "Delete" = "Delete" as const;

export const ArrowKeys = {
    ArrowDown: keyArrowDown,
    ArrowLeft: keyArrowLeft,
    ArrowRight: keyArrowRight,
    ArrowUp: keyArrowUp,
} as const;

export type ArrowKeys = typeof ArrowKeys[keyof typeof ArrowKeys];
