#pragma once
#include "pch.h"

struct KeyDefinition
{
	string name;
	uint32_t keyCode;

	static vector<KeyDefinition> GetSharedKeyDefinitions()
	{
		return {
			{ "", 0 },
			{ "Cancel", 1 },
			{ "Backspace", 2 },
			{ "Tab", 3 },
			{ "Line Feed", 4 },
			{ "Clear", 5 },
			{ "Enter", 6 },
			{ "Pause", 7 },
			{ "Caps Lock", 8 },
			{ "Kana Mode", 9 },
			{ "Junja Mode", 10 },
			{ "Final Mode", 11 },
			{ "Kanji Mode", 12 },
			{ "Esc", 13 },
			{ "IME convert", 14 },
			{ "IME nonconvert", 15 },
			{ "IME accept", 16 },
			{ "IME mode change request", 17 },
			{ "Space", 18 },
			{ "Page Up", 19 },
			{ "Page Down", 20 },
			{ "End", 21 },
			{ "Home", 22 },
			{ "Left Arrow", 23 },
			{ "Up Arrow", 24 },
			{ "Right Arrow", 25 },
			{ "Down Arrow", 26 },
			{ "Select", 27 },
			{ "Print", 28 },
			{ "Execute", 29 },
			{ "Print Screen", 30 },
			{ "Insert", 31 },
			{ "Delete", 32 },
			{ "Help", 33 },
			{ "0", 34 },
			{ "1", 35 },
			{ "2", 36 },
			{ "3", 37 },
			{ "4", 38 },
			{ "5", 39 },
			{ "6", 40 },
			{ "7", 41 },
			{ "8", 42 },
			{ "9", 43 },
			{ "A", 44 },
			{ "B", 45 },
			{ "C", 46 },
			{ "D", 47 },
			{ "E", 48 },
			{ "F", 49 },
			{ "G", 50 },
			{ "H", 51 },
			{ "I", 52 },
			{ "J", 53 },
			{ "K", 54 },
			{ "L", 55 },
			{ "M", 56 },
			{ "N", 57 },
			{ "O", 58 },
			{ "P", 59 },
			{ "Q", 60 },
			{ "R", 61 },
			{ "S", 62 },
			{ "T", 63 },
			{ "U", 64 },
			{ "V", 65 },
			{ "W", 66 },
			{ "X", 67 },
			{ "Y", 68 },
			{ "Z", 69 },
			{ "Left Win", 70 },
			{ "Right Win", 71 },
			{ "Apps", 72 },
			{ "Sleep", 73 },
			{ "Numpad 0", 74 },
			{ "Numpad 1", 75 },
			{ "Numpad 2", 76 },
			{ "Numpad 3", 77 },
			{ "Numpad 4", 78 },
			{ "Numpad 5", 79 },
			{ "Numpad 6", 80 },
			{ "Numpad 7", 81 },
			{ "Numpad 8", 82 },
			{ "Numpad 9", 83 },
			{ "Numpad *", 84 },
			{ "Numpad +", 85 },
			{ "Separator", 86 },
			{ "Numpad -", 87 },
			{ "Numpad .", 88 },
			{ "Numpad /", 89 },
			{ "F1", 90 },
			{ "F2", 91 },
			{ "F3", 92 },
			{ "F4", 93 },
			{ "F5", 94 },
			{ "F6", 95 },
			{ "F7", 96 },
			{ "F8", 97 },
			{ "F9", 98 },
			{ "F10", 99 },
			{ "F11", 100 },
			{ "F12", 101 },
			{ "F13", 102 },
			{ "F14", 103 },
			{ "F15", 104 },
			{ "F16", 105 },
			{ "F17", 106 },
			{ "F18", 107 },
			{ "F19", 108 },
			{ "F20", 109 },
			{ "F21", 110 },
			{ "F22", 111 },
			{ "F23", 112 },
			{ "F24", 113 },
			{ "Num Lock", 114 },
			{ "Scroll Lock", 115 },
			{ "Left Shift", 116 },
			{ "Right Shift", 117 },
			{ "Left Ctrl", 118 },
			{ "Right Ctrl", 119 },
			{ "Left Alt", 120 },
			{ "Right Alt", 121 },
			{ "Browser Back", 122 },
			{ "Browser Forward", 123 },
			{ "Browser Refresh", 124 },
			{ "Browser Stop", 125 },
			{ "Browser Search", 126 },
			{ "Browser Favorites", 127 },
			{ "Browser Home", 128 },
			{ "Volume Mute", 129 },
			{ "Volume Down", 130 },
			{ "Volume Up", 131 },
			{ "Next Track", 132 },
			{ "Previous Track", 133 },
			{ "Stop", 134 },
			{ "Play/Pause", 135 },
			{ "Start Mail", 136 },
			{ "Select Media", 137 },
			{ "Start Application 1", 138 },
			{ "Start Application 2", 139 },
			{ ";", 140 },
			{ "=", 141 },
			{ ",", 142 },
			{ "-", 143 },
			{ ".", 144 },
			{ "/", 145 },
			{ "`", 146 },
			{ "AbntC1", 147 },
			{ "AbntC2", 148 },
			{ "[", 149 },
			{ "\\", 150 },
			{ "]", 151 },
			{ "'", 152 },
			{ "Oem8", 153 },
			{ "|", 154 },
			{ "IME Processed", 155 },
			{ "System", 156 },
			{ "OemAttn", 157 },
			{ "DbeAlphanumeric", 157 },
			{ "OemFinish", 158 },
			{ "DbeKatakana", 158 },
			{ "DbeHiragana", 159 },
			{ "OemCopy", 159 },
			{ "DbeSbcsChar", 160 },
			{ "OemAuto", 160 },
			{ "DbeDbcsChar", 161 },
			{ "OemEnlw", 161 },
			{ "OemBackTab", 162 },
			{ "DbeRoman", 162 },
			{ "DbeNoRoman", 163 },
			{ "Attn", 163 },
			{ "CrSel", 164 },
			{ "DbeEnterWordRegisterMode", 164 },
			{ "ExSel", 165 },
			{ "DbeEnterImeConfigureMode", 165 },
			{ "EraseEof", 166 },
			{ "DbeFlushString", 166 },
			{ "Play", 167 },
			{ "DbeCodeInput", 167 },
			{ "DbeNoCodeInput", 168 },
			{ "Zoom", 168 },
			{ "NoName", 169 },
			{ "DbeDetermineString", 169 },
			{ "DbeEnterDialogConversionMode", 170 },
			{ "Pa1", 170 },
			{ "OemClear", 171 },
			{ "DeadCharProcessed", 172 },

			{ "Mouse Left", 0x200 },
			{ "Mouse Right", 0x201 },
			{ "Mouse Middle", 0x202 },
			{ "Mouse 4", 0x203 },
			{ "Mouse 5", 0x204 },

			{ "FnLeftArrow", 10001 },
			{ "FnRightArrow", 10002 },
			{ "FnUpArrow", 10003 },
			{ "FnDownArrow", 10004 }
		};
	};
};
