#pragma once

#include <WinUser.h>
#include <events.h>

static int WIN32_KEYCODES[] = {
    /* clang-format off */
    VK_LBUTTON,                                 0x0000,
    VK_RBUTTON,                                 0x0000,
    VK_CANCEL,                                  0x0000,
    VK_MBUTTON,                                 0x0000,
    VK_XBUTTON1,                                0x0000,
    VK_XBUTTON2,                                0x0000,
    VK_BACK,                                    0x0000,
    VK_TAB,                                     (int)(KeyCodes::Tab),
    VK_CLEAR,                                   0x0000,
    VK_RETURN,                                  (int)(KeyCodes::Return),
    VK_SHIFT,                                   0x0000,
    VK_CONTROL,                                 0x0000,
    VK_MENU,                                    0x0000,
    VK_PAUSE,                                   0x0000,
    VK_CAPITAL,                                 0x0000,
    VK_KANA,                                    0x0000,
    VK_HANGEUL,                                 0x0000,
    VK_HANGUL,                                  0x0000,
    VK_IME_ON,                                  0x0000,
    VK_JUNJA,                                   0x0000,
    VK_FINAL,                                   0x0000,
    VK_HANJA,                                   0x0000,
    VK_KANJI,                                   0x0000,
    VK_IME_OFF,                                 0x0000,
    VK_ESCAPE,                                  (int)(KeyCodes::Escape),
    VK_CONVERT,                                 0x0000,
    VK_NONCONVERT,                              0x0000,
    VK_ACCEPT,                                  0x0000,
    VK_MODECHANGE,                              0x0000,
    VK_SPACE,                                   ' ',
    VK_PRIOR,                                   (int)(KeyCodes::PageUp),
    VK_NEXT,                                    (int)(KeyCodes::PageDown),
    VK_END,                                     (int)(KeyCodes::End),
    VK_HOME,                                    (int)(KeyCodes::Home),
    VK_LEFT,                                    (int)(KeyCodes::ArrowLeft),
    VK_UP,                                      (int)(KeyCodes::ArrowUp),
    VK_RIGHT,                                   (int)(KeyCodes::ArrowRight),
    VK_DOWN,                                    (int)(KeyCodes::ArrowDown),
    VK_SELECT,                                  0x0000,
    VK_PRINT,                                   0x0000,
    VK_EXECUTE,                                 0x0000,
    VK_SNAPSHOT,                                0x0000,
    VK_INSERT,                                  (int)(KeyCodes::Insert),
    VK_DELETE,                                  (int)(KeyCodes::Delete),
    VK_HELP,                                    0x0000,
    VK_LWIN,                                    0x0000,
    VK_RWIN,                                    0x0000,
    VK_APPS,                                    0x0000,
    VK_SLEEP,                                   0x0000,
    VK_NUMPAD0,                                 0x0000,
    VK_NUMPAD1,                                 0x0000,
    VK_NUMPAD2,                                 0x0000,
    VK_NUMPAD3,                                 0x0000,
    VK_NUMPAD4,                                 0x0000,
    VK_NUMPAD5,                                 0x0000,
    VK_NUMPAD6,                                 0x0000,
    VK_NUMPAD7,                                 0x0000,
    VK_NUMPAD8,                                 0x0000,
    VK_NUMPAD9,                                 0x0000,
    VK_MULTIPLY,                                0x0000,
    VK_ADD,                                     0x0000,
    VK_SEPARATOR,                               0x0000,
    VK_SUBTRACT,                                0x0000,
    VK_DECIMAL,                                 0x0000,
    VK_DIVIDE,                                  0x0000,
    VK_F1,                                      0x0000,
    VK_F2,                                      0x0000,
    VK_F3,                                      0x0000,
    VK_F4,                                      0x0000,
    VK_F5,                                      0x0000,
    VK_F6,                                      0x0000,
    VK_F7,                                      0x0000,
    VK_F8,                                      0x0000,
    VK_F9,                                      0x0000,
    VK_F10,                                     0x0000,
    VK_F11,                                     0x0000,
    VK_F12,                                     0x0000,
    VK_F13,                                     0x0000,
    VK_F14,                                     0x0000,
    VK_F15,                                     0x0000,
    VK_F16,                                     0x0000,
    VK_F17,                                     0x0000,
    VK_F18,                                     0x0000,
    VK_F19,                                     0x0000,
    VK_F20,                                     0x0000,
    VK_F21,                                     0x0000,
    VK_F22,                                     0x0000,
    VK_F23,                                     0x0000,
    VK_F24,                                     0x0000,
    VK_NAVIGATION_VIEW,                         0x0000,
    VK_NAVIGATION_MENU,                         0x0000,
    VK_NAVIGATION_UP,                           0x0000,
    VK_NAVIGATION_DOWN,                         0x0000,
    VK_NAVIGATION_LEFT,                         0x0000,
    VK_NAVIGATION_RIGHT,                        0x0000,
    VK_NAVIGATION_ACCEPT,                       0x0000,
    VK_NAVIGATION_CANCEL,                       0x0000,
    VK_NUMLOCK,                                 0x0000,
    VK_SCROLL,                                  0x0000,
    VK_OEM_NEC_EQUAL,                           0x0000,
    VK_OEM_FJ_JISHO,                            0x0000,
    VK_OEM_FJ_MASSHOU,                          0x0000,
    VK_OEM_FJ_TOUROKU,                          0x0000,
    VK_OEM_FJ_LOYA,                             0x0000,
    VK_OEM_FJ_ROYA,                             0x0000,
    VK_LSHIFT,                                  (int) KeyCodes::ShiftLeft,
    VK_RSHIFT,                                  (int) KeyCodes::ShiftRight,
    VK_LCONTROL,                                (int) KeyCodes::ControlLeft,
    VK_RCONTROL,                                (int) KeyCodes::ControlRight,
    VK_LMENU,                                   0x0000,
    VK_RMENU,                                   0x0000,
    VK_BROWSER_BACK,                            0x0000,
    VK_BROWSER_FORWARD,                         0x0000,
    VK_BROWSER_REFRESH,                         0x0000,
    VK_BROWSER_STOP,                            0x0000,
    VK_BROWSER_SEARCH,                          0x0000,
    VK_BROWSER_FAVORITES,                       0x0000,
    VK_BROWSER_HOME,                            0x0000,
    VK_VOLUME_MUTE,                             0x0000,
    VK_VOLUME_DOWN,                             0x0000,
    VK_VOLUME_UP,                               0x0000,
    VK_MEDIA_NEXT_TRACK,                        0x0000,
    VK_MEDIA_PREV_TRACK,                        0x0000,
    VK_MEDIA_STOP,                              0x0000,
    VK_MEDIA_PLAY_PAUSE,                        0x0000,
    VK_LAUNCH_MAIL,                             0x0000,
    VK_LAUNCH_MEDIA_SELECT,                     0x0000,
    VK_LAUNCH_APP1,                             0x0000,
    VK_LAUNCH_APP2,                             0x0000,
    VK_OEM_1,                                   0x0000,
    VK_OEM_PLUS,                                0x0000,
    VK_OEM_COMMA,                               0x0000,
    VK_OEM_MINUS,                               0x0000,
    VK_OEM_PERIOD,                              0x0000,
    VK_OEM_2,                                   0x0000,
    VK_OEM_3,                                   0x0000,
    VK_GAMEPAD_A,                               0x0000,
    VK_GAMEPAD_B,                               0x0000,
    VK_GAMEPAD_X,                               0x0000,
    VK_GAMEPAD_Y,                               0x0000,
    VK_GAMEPAD_RIGHT_SHOULDER,                  0x0000,
    VK_GAMEPAD_LEFT_SHOULDER,                   0x0000,
    VK_GAMEPAD_LEFT_TRIGGER,                    0x0000,
    VK_GAMEPAD_RIGHT_TRIGGER,                   0x0000,
    VK_GAMEPAD_DPAD_UP,                         0x0000,
    VK_GAMEPAD_DPAD_DOWN,                       0x0000,
    VK_GAMEPAD_DPAD_LEFT,                       0x0000,
    VK_GAMEPAD_DPAD_RIGHT,                      0x0000,
    VK_GAMEPAD_MENU,                            0x0000,
    VK_GAMEPAD_VIEW,                            0x0000,
    VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON,          0x0000,
    VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON,         0x0000,
    VK_GAMEPAD_LEFT_THUMBSTICK_UP,              0x0000,
    VK_GAMEPAD_LEFT_THUMBSTICK_DOWN,            0x0000,
    VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT,           0x0000,
    VK_GAMEPAD_LEFT_THUMBSTICK_LEFT,            0x0000,
    VK_GAMEPAD_RIGHT_THUMBSTICK_UP,             0x0000,
    VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN,           0x0000,
    VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT,          0x0000,
    VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT,           0x0000,
    VK_OEM_4,                                   0x0000,
    VK_OEM_5,                                   0x0000,
    VK_OEM_6,                                   0x0000,
    VK_OEM_7,                                   0x0000,
    VK_OEM_8,                                   0x0000,
    VK_OEM_AX,                                  0x0000,
    VK_OEM_102,                                 0x0000,
    VK_ICO_HELP,                                0x0000,
    VK_ICO_00,                                  0x0000,
    VK_PROCESSKEY,                              0x0000,
    VK_ICO_CLEAR,                               0x0000,
    VK_PACKET,                                  0x0000,
    VK_OEM_RESET,                               0x0000,
    VK_OEM_JUMP,                                0x0000,
    VK_OEM_PA1,                                 0x0000,
    VK_OEM_PA2,                                 0x0000,
    VK_OEM_PA3,                                 0x0000,
    VK_OEM_WSCTRL,                              0x0000,
    VK_OEM_CUSEL,                               0x0000,
    VK_OEM_ATTN,                                0x0000,
    VK_OEM_FINISH,                              0x0000,
    VK_OEM_COPY,                                0x0000,
    VK_OEM_AUTO,                                0x0000,
    VK_OEM_ENLW,                                0x0000,
    VK_OEM_BACKTAB,                             0x0000,
    VK_ATTN,                                    0x0000,
    VK_CRSEL,                                   0x0000,
    VK_EXSEL,                                   0x0000,
    VK_EREOF,                                   0x0000,
    VK_PLAY,                                    0x0000,
    VK_ZOOM,                                    0x0000,
    VK_NONAME,                                  0x0000,
    VK_PA1,                                     0x0000,
    VK_OEM_CLEAR,                               0x0000,
    0, 0
    /* clang-format on */
};
