namespace Game {

    @localized('en', 'KeyboardKey')
    @localized('es', 'ESKeyboardKey')
    @localized('jp', 'JPKeyboardKey')
    enum KeyboardKey {

        // These keycodes are consistent with the JavaScript key codes.
        // This isn't strictly necessary, but there's no reason not to.

        BACKSPACE = 8,
        TAB = 9,
        ENTER = 13,
        SHIFT = 16,
        CTRL = 17,
        ALT = 18,
        PAUSE = 19,
        CAPS_LOCK = 20,
        ESCAPE = 27,
        SPACE = 32,
        PAGE_UP = 33,
        PAGE_DOWN = 34,
        END = 35,
        HOME = 36,
        LEFT = 37,
        UP = 38,
        RIGHT = 39,
        DOWN = 40,
        PRINT_SCREEN = 44,
        INSERT = 45,
        DELETE = 46,

        NUM_0 = 48 + 0,
        NUM_1 = 48 + 1,
        NUM_2 = 48 + 2,
        NUM_3 = 48 + 3,
        NUM_4 = 48 + 4,
        NUM_5 = 48 + 5,
        NUM_6 = 48 + 6,
        NUM_7 = 48 + 7,
        NUM_8 = 48 + 8,
        NUM_9 = 48 + 9,

        A = 64 + 1,
        B = 64 + 2,
        C = 64 + 3,
        D = 64 + 4,
        E = 64 + 5,
        F = 64 + 6,
        G = 64 + 7,
        H = 64 + 8,
        I = 64 + 9,
        J = 64 + 10,
        K = 64 + 11,
        L = 64 + 12,
        M = 64 + 13,
        N = 64 + 14,
        O = 64 + 15,
        P = 64 + 16,
        Q = 64 + 17,
        R = 64 + 18,
        S = 64 + 19,
        T = 64 + 20,
        U = 64 + 21,
        V = 64 + 22,
        W = 64 + 23,
        X = 64 + 24,
        Y = 64 + 25,
        Z = 64 + 26,

        // In the JS keycodes, left Window key is 91 and right Window key is 92.
        // But Crayon doesn't care which one you press.
        OS_COMMAND = 91,
        CONTEXT_MENU = 93,

        F1 = 111 + 1,
        F2 = 111 + 2,
        F3 = 111 + 3,
        F4 = 111 + 4,
        F5 = 111 + 5,
        F6 = 111 + 6,
        F7 = 111 + 7,
        F8 = 111 + 8,
        F9 = 111 + 9,
        F10 = 111 + 10,
        F11 = 111 + 11,
        F12 = 111 + 12,

        NUM_LOCK = 144,
        SCROLL_LOCK = 145,

        SEMICOLON = 186,
        EQUALS = 187,
        COMMA = 188,
        HYPHEN = 189,
        PERIOD = 190,
        SLASH = 191,
        BACKTICK = 192,
        OPEN_BRACKET = 219,
        BACKSLASH = 220,
        CLOSE_BRACKET = 221,
        APOSTROPHE = 222,
    }
}
