// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Core/Config.h"
///
/// Enumeration for key codes.
///
API_ENUM() enum class KeyboardKeys
{
///
/// The 'none' key
///
None = 0,
///
/// BACKSPACE key
///
Backspace = 0x08,
///
/// TAB key
///
Tab = 0x09,
///
/// CLEAR key
///
Clear = 0x0C,
///
/// ENTER key
///
Return = 0x0D,
///
/// Any SHIFT key, right or left
///
Shift = 0x10,
///
/// Any CTRL key, right or left
///
Control = 0x11,
///
/// Any ALT key, right or left
///
Alt = 0x12,
///
/// PAUSE key
///
Pause = 0x13,
///
/// CAPS LOCK key
///
Capital = 0x14,
///
/// IME Kana mode
///
Kana = 0x15,
///
/// IME Hangul mode
///
Hangul = 0x15,
///
/// IME Junja mode
///
Junja = 0x17,
///
/// IME final mode
///
Final = 0x18,
///
/// IME Hanja mode
///
Hanja = 0x19,
///
/// IME Kanji mode
///
Kanji = 0x19,
///
/// ESC key
///
Escape = 0x1B,
///
/// IME convert
///
Convert = 0x1C,
///
/// IME nonconvert
///
Nonconvert = 0x1D,
///
/// IME accept
///
Accept = 0x1E,
///
/// IME mode change request
///
Modechange = 0x1F,
///
/// SPACEBAR key
///
Spacebar = 0x20,
///
/// PAGE UP key
///
PageUp = 0x21,
///
/// PAGE DOWN key
///
PageDown = 0x22,
///
/// END key
///
End = 0x23,
///
/// HOME key
///
Home = 0x24,
///
/// LEFT ARROW key
///
ArrowLeft = 0x25,
///
/// UP ARROW key
///
ArrowUp = 0x26,
///
/// RIGHT ARROW key
///
ArrowRight = 0x27,
///
/// DOWN ARROW key
///
ArrowDown = 0x28,
///
/// SELECT key
///
Select = 0x29,
///
/// PRINT key
///
Print = 0x2A,
///
/// EXECUTE key
///
Execute = 0x2B,
///
/// PRINT SCREEN key
///
PrintScreen = 0x2C,
///
/// INSERT key
///
Insert = 0x2D,
///
/// DELETE key
///
Delete = 0x2E,
///
/// HELP key
///
Help = 0x2F,
///
/// The '0' key on the top of the alphanumeric keyboard.
///
Alpha0 = 0x30,
///
/// The '1' key on the top of the alphanumeric keyboard.
///
Alpha1 = 0x31,
///
/// The '2' key on the top of the alphanumeric keyboard.
///
Alpha2 = 0x32,
///
/// The '3' key on the top of the alphanumeric keyboard.
///
Alpha3 = 0x33,
///
/// The '4' key on the top of the alphanumeric keyboard.
///
Alpha4 = 0x34,
///
/// The '5' key on the top of the alphanumeric keyboard.
///
Alpha5 = 0x35,
///
/// The '6' key on the top of the alphanumeric keyboard.
///
Alpha6 = 0x36,
///
/// The '7' key on the top of the alphanumeric keyboard.
///
Alpha7 = 0x37,
///
/// The '8' key on the top of the alphanumeric keyboard.
///
Alpha8 = 0x38,
///
/// The '9' key on the top of the alphanumeric keyboard.
///
Alpha9 = 0x39,
///
/// A key
///
A = 0x41,
///
/// B key
///
B = 0x42,
///
/// C key
///
C = 0x43,
///
/// D key
///
D = 0x44,
///
/// E key
///
E = 0x45,
///
/// F key
///
F = 0x46,
///
/// G key
///
G = 0x47,
///
/// H key
///
H = 0x48,
///
/// I key
///
I = 0x49,
///
/// J key
///
J = 0x4A,
///
/// K key
///
K = 0x4B,
///
/// L key
///
L = 0x4C,
///
/// M key
///
M = 0x4D,
///
/// N key
///
N = 0x4E,
///
/// O key
///
O = 0x4F,
///
/// P key
///
P = 0x50,
///
/// Q key
///
Q = 0x51,
///
/// R key
///
R = 0x52,
///
/// S key
///
S = 0x53,
///
/// T key
///
T = 0x54,
///
/// U key
///
U = 0x55,
///
/// V key
///
V = 0x56,
///
/// W key
///
W = 0x57,
///
/// X key
///
X = 0x58,
///
/// Y key
///
Y = 0x59,
///
/// Z key
///
Z = 0x5A,
///
/// Left Windows key (Natural keyboard)
///
LeftWindows = 0x5B,
///
/// Right Windows key (Natural keyboard)
///
RightWindows = 0x5C,
///
/// Applications key (Natural keyboard)
///
Applications = 0x5D,
///
/// Computer Sleep key
///
Sleep = 0x5F,
///
/// Numeric keypad 0 key
///
Numpad0 = 0x60,
///
/// Numeric keypad 1 key
///
Numpad1 = 0x61,
///
/// Numeric keypad 2 key
///
Numpad2 = 0x62,
///
/// Numeric keypad 3 key
///
Numpad3 = 0x63,
///
/// Numeric keypad 4 key
///
Numpad4 = 0x64,
///
/// Numeric keypad 5 key
///
Numpad5 = 0x65,
///
/// Numeric keypad 6 key
///
Numpad6 = 0x66,
///
/// Numeric keypad 7 key
///
Numpad7 = 0x67,
///
/// Numeric keypad 8 key
///
Numpad8 = 0x68,
///
/// Numeric keypad 9 key
///
Numpad9 = 0x69,
///
/// Numeric keypad Multiply key '*'
///
NumpadMultiply = 0x6A,
///
/// Numeric keypad Add key '+'
///
NumpadAdd = 0x6B,
///
/// Numeric Separator key
///
NumpadSeparator = 0x6C,
///
/// Numeric keypad Subtract key '-'
///
NumpadSubtract = 0x6D,
///
/// Numeric keypad Decimal key ','
///
NumpadDecimal = 0x6E,
///
/// Numeric keypad Divide key '/'
///
NumpadDivide = 0x6F,
///
/// F1 function key
///
F1 = 0x70,
///
/// F2 function key
///
F2 = 0x71,
///
/// F3 function key
///
F3 = 0x72,
///
/// F4 function key
///
F4 = 0x73,
///
/// F5 function key
///
F5 = 0x74,
///
/// F6 function key
///
F6 = 0x75,
///
/// F7 function key
///
F7 = 0x76,
///
/// F8 function key
///
F8 = 0x77,
///
/// F9 function key
///
F9 = 0x78,
///
/// F10 function key
///
F10 = 0x79,
///
/// F11 function key
///
F11 = 0x7A,
///
/// F12 function key
///
F12 = 0x7B,
///
/// F13 function key
///
F13 = 0x7C,
///
/// F14 function key
///
F14 = 0x7D,
///
/// F15 function key
///
F15 = 0x7E,
///
/// F16 function key
///
F16 = 0x7F,
///
/// F17 function key
///
F17 = 0x80,
///
/// F18 function key
///
F18 = 0x81,
///
/// F19 function key
///
F19 = 0x82,
///
/// F20 function key
///
F20 = 0x83,
///
/// F21 function key
///
F21 = 0x84,
///
/// F22 function key
///
F22 = 0x85,
///
/// F23 function key
///
F23 = 0x86,
///
/// F24 function key
///
F24 = 0x87,
///
/// Numeric keypad NUM LOCK key
///
Numlock = 0x90,
///
/// SCROLL LOCK key
///
Scroll = 0x91,
///
/// Left MENU key
///
LeftMenu = 0xA4,
///
/// Right MENU key
///
RightMenu = 0xA5,
///
/// Browser Back key
///
BrowserBack = 0xA6,
///
/// Browser Forward key
///
BrowserForward = 0xA7,
///
/// Browser Refresh key
///
BrowserRefresh = 0xA8,
///
/// Browser Stop key
///
BrowserStop = 0xA9,
///
/// Browser Search key
///
BrowserSearch = 0xAA,
///
/// Browser Favorites key
///
BrowserFavorites = 0xAB,
///
/// Browser Start and Home key
///
BrowserHome = 0xAC,
///
/// Volume Mute key
///
VolumeMute = 0xAD,
///
/// Volume Down key
///
VolumeDown = 0xAE,
///
/// Volume Up key
///
VolumeUp = 0xAF,
///
/// Next Track key
///
MediaNextTrack = 0xB0,
///
/// Previous Track key
///
MediaPrevTrack = 0xB1,
///
/// Stop Media key
///
MediaStop = 0xB2,
///
/// Play/Pause Media key
///
MediaPlayPause = 0xB3,
///
/// Start Mail key
///
LaunchMail = 0xB4,
///
/// Select Media key
///
LaunchMediaSelect = 0xB5,
///
/// Start Application 1 key
///
LaunchApp1 = 0xB6,
///
/// Start Application 2 key
///
LaunchApp2 = 0xB7,
///
/// Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard the ';:' key
///
Colon = 0xBA,
///
/// For any country/region the '+' key
///
Plus = 0xBB,
///
/// For any country/region the ',' key
///
Comma = 0xBC,
///
/// For any country/region the '-' key
///
Minus = 0xBD,
///
/// For any country/region the '.' key
///
Period = 0xBE,
///
/// Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard the '/?' key
///
Slash = 0xBF,
///
/// Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard the '`~' key
///
BackQuote = 0xC0,
///
/// Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard the '[{' key
///
LeftBracket = 0xDB,
///
/// Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard the '\|' key
///
Backslash = 0xDC,
///
/// Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard the ']}' key
///
RightBracket = 0xDD,
///
/// Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard the
/// 'single-quote/double-quote' key
///
Quote = 0xDE,
///
/// Used for miscellaneous characters; it can vary by keyboard.
///
Oem8 = 0xDF,
///
/// Either the angle bracket key or the backslash key on the RT 102-key keyboard
///
Oem102 = 0xE2,
///
/// IME PROCESS key
///
Processkey = 0xE5,
///
/// Used to pass Unicode characters as if they were keystrokes. The PACKET key is the low word of a 32-bit Virtual Key
/// value used for non-keyboard input methods.
///
Packet = 0xE7,
///
/// Attn key
///
Attn = 0xF6,
///
/// CrSel key
///
Crsel = 0xF7,
///
/// ExSel key
///
Exsel = 0xF8,
///
/// Erase EOF key
///
Ereof = 0xF9,
///
/// Play key
///
Play = 0xFA,
///
/// Zoom key
///
Zoom = 0xFB,
///
/// PA1 key
///
Pa1 = 0xFD,
///
/// Clear key
///
OemClear = 0xFE,
MAX
};