namespace Aprillz.MewUI.Native.Constants;

/// <summary>
/// Virtual key codes (VK_*)
/// </summary>
internal static class VirtualKeys
{
    public const int VK_LBUTTON = 0x01;
    public const int VK_RBUTTON = 0x02;
    public const int VK_CANCEL = 0x03;
    public const int VK_MBUTTON = 0x04;
    public const int VK_XBUTTON1 = 0x05;
    public const int VK_XBUTTON2 = 0x06;
    public const int VK_BACK = 0x08;
    public const int VK_TAB = 0x09;
    public const int VK_CLEAR = 0x0C;
    public const int VK_RETURN = 0x0D;
    public const int VK_SHIFT = 0x10;
    public const int VK_CONTROL = 0x11;
    public const int VK_MENU = 0x12;
    public const int VK_PAUSE = 0x13;
    public const int VK_CAPITAL = 0x14;
    public const int VK_KANA = 0x15;
    public const int VK_HANGUL = 0x15;
    public const int VK_IME_ON = 0x16;
    public const int VK_JUNJA = 0x17;
    public const int VK_FINAL = 0x18;
    public const int VK_HANJA = 0x19;
    public const int VK_KANJI = 0x19;
    public const int VK_IME_OFF = 0x1A;
    public const int VK_ESCAPE = 0x1B;
    public const int VK_CONVERT = 0x1C;
    public const int VK_NONCONVERT = 0x1D;
    public const int VK_ACCEPT = 0x1E;
    public const int VK_MODECHANGE = 0x1F;
    public const int VK_SPACE = 0x20;
    public const int VK_PRIOR = 0x21;
    public const int VK_NEXT = 0x22;
    public const int VK_END = 0x23;
    public const int VK_HOME = 0x24;
    public const int VK_LEFT = 0x25;
    public const int VK_UP = 0x26;
    public const int VK_RIGHT = 0x27;
    public const int VK_DOWN = 0x28;
    public const int VK_SELECT = 0x29;
    public const int VK_PRINT = 0x2A;
    public const int VK_EXECUTE = 0x2B;
    public const int VK_SNAPSHOT = 0x2C;
    public const int VK_INSERT = 0x2D;
    public const int VK_DELETE = 0x2E;
    public const int VK_HELP = 0x2F;

    // 0-9 (0x30 - 0x39)
    // A-Z (0x41 - 0x5A)

    public const int VK_LWIN = 0x5B;
    public const int VK_RWIN = 0x5C;
    public const int VK_APPS = 0x5D;
    public const int VK_SLEEP = 0x5F;
    public const int VK_NUMPAD0 = 0x60;
    public const int VK_NUMPAD1 = 0x61;
    public const int VK_NUMPAD2 = 0x62;
    public const int VK_NUMPAD3 = 0x63;
    public const int VK_NUMPAD4 = 0x64;
    public const int VK_NUMPAD5 = 0x65;
    public const int VK_NUMPAD6 = 0x66;
    public const int VK_NUMPAD7 = 0x67;
    public const int VK_NUMPAD8 = 0x68;
    public const int VK_NUMPAD9 = 0x69;
    public const int VK_MULTIPLY = 0x6A;
    public const int VK_ADD = 0x6B;
    public const int VK_SEPARATOR = 0x6C;
    public const int VK_SUBTRACT = 0x6D;
    public const int VK_DECIMAL = 0x6E;
    public const int VK_DIVIDE = 0x6F;
    public const int VK_F1 = 0x70;
    public const int VK_F2 = 0x71;
    public const int VK_F3 = 0x72;
    public const int VK_F4 = 0x73;
    public const int VK_F5 = 0x74;
    public const int VK_F6 = 0x75;
    public const int VK_F7 = 0x76;
    public const int VK_F8 = 0x77;
    public const int VK_F9 = 0x78;
    public const int VK_F10 = 0x79;
    public const int VK_F11 = 0x7A;
    public const int VK_F12 = 0x7B;
    public const int VK_F13 = 0x7C;
    public const int VK_F14 = 0x7D;
    public const int VK_F15 = 0x7E;
    public const int VK_F16 = 0x7F;
    public const int VK_F17 = 0x80;
    public const int VK_F18 = 0x81;
    public const int VK_F19 = 0x82;
    public const int VK_F20 = 0x83;
    public const int VK_F21 = 0x84;
    public const int VK_F22 = 0x85;
    public const int VK_F23 = 0x86;
    public const int VK_F24 = 0x87;
    public const int VK_NUMLOCK = 0x90;
    public const int VK_SCROLL = 0x91;
    public const int VK_LSHIFT = 0xA0;
    public const int VK_RSHIFT = 0xA1;
    public const int VK_LCONTROL = 0xA2;
    public const int VK_RCONTROL = 0xA3;
    public const int VK_LMENU = 0xA4;
    public const int VK_RMENU = 0xA5;

    public const int VK_OEM_1 = 0xBA;      // ;:
    public const int VK_OEM_PLUS = 0xBB;   // +
    public const int VK_OEM_COMMA = 0xBC;  // ,
    public const int VK_OEM_MINUS = 0xBD;  // -
    public const int VK_OEM_PERIOD = 0xBE; // .
    public const int VK_OEM_2 = 0xBF;      // /?
    public const int VK_OEM_3 = 0xC0;      // `~
    public const int VK_OEM_4 = 0xDB;      // [{
    public const int VK_OEM_5 = 0xDC;      // \|
    public const int VK_OEM_6 = 0xDD;      // ]}
    public const int VK_OEM_7 = 0xDE;      // '"
    public const int VK_OEM_8 = 0xDF;
    public const int VK_OEM_102 = 0xE2;    // <>
}
