namespace Strawberry
{
	public enum Keys : uint32
	{
		case Unknown = 0;

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

		case Key1 = 30;
		case Key2 = 31;
		case Key3 = 32;
		case Key4 = 33;
		case Key5 = 34;
		case Key6 = 35;
		case Key7 = 36;
		case Key8 = 37;
		case Key9 = 38;
		case Key0 = 39;

		case Return = 40;
		case Escape = 41;
		case BackSpace = 42;
		case Tab = 43;
		case Space = 44;
		case Minus = 45;
		case Equals = 46;
		case LeftBracket = 47;
		case RightBracket = 48;
		case BackSlash = 49;
		case NonUSHash = 50;
		case Semicolon = 51;
		case Apostrophe = 52;
		case Grave = 53;
		case Comma = 54;
		case Period = 55;
		case Slash = 56;
		case CapsLock = 57;

		case F1 = 58;
		case F2 = 59;
		case F3 = 60;
		case F4 = 61;
		case F5 = 62;
		case F6 = 63;
		case F7 = 64;
		case F8 = 65;
		case F9 = 66;
		case F10 = 67;
		case F11 = 68;
		case F12 = 69;

		case PrintScreen = 70;
		case ScrollLock = 71;
		case Pause = 72;
		case Insert = 73;
		case Home = 74;
		case PageUp = 75;
		case Delete = 76;
		case End = 77;
		case PageDown = 78;
		case Right = 79;
		case Left = 80;
		case Down = 81;
		case Up = 82;

		case NumLockClear = 83;
		case KpDivide = 84;
		case KpMultiply = 85;
		case KpMinus = 86;
		case KpPlus = 87;
		case KpEnter = 88;
		case Kp1 = 89;
		case Kp2 = 90;
		case Kp3 = 91;
		case Kp4 = 92;
		case Kp5 = 93;
		case Kp6 = 94;
		case Kp7 = 95;
		case Kp8 = 96;
		case Kp9 = 97;
		case Kp0 = 98;
		case KpPeriod = 99;

		case NonUSBackslash = 100;
		case Application = 101;
		case Power = 102;
		case KpEquals = 103;
		case F13 = 104;
		case F14 = 105;
		case F15 = 106;
		case F16 = 107;
		case F17 = 108;
		case F18 = 109;
		case F19 = 110;
		case F20 = 111;
		case F21 = 112;
		case F22 = 113;
		case F23 = 114;
		case F24 = 115;
		case Execute = 116;
		case Help = 117;
		case Menu = 118;
		case Select = 119;
		case Stop = 120;
		case Again = 121;
		case Undo = 122;
		case Cut = 123;
		case Copy = 124;
		case Paste = 125;
		case Find = 126;
		case Mute = 127;
		case VolumeUp = 128;
		case VolumeDown = 129;
		case LockingCapsLock = 130;
		case LockingNumLock = 131;
		case LockingScrollLock = 132;
		case KpComma = 133;
		case KpEqualsAS400 = 134;

		case International1 = 135;
		case International2 = 136;
		case International3 = 137;
		case International4 = 138;
		case International5 = 139;
		case International6 = 140;
		case International7 = 141;
		case International8 = 142;
		case International9 = 143;
		case Lang1 = 144;
		case Lang2 = 145;
		case Lang3 = 146;
		case Lang4 = 147;
		case Lang5 = 148;
		case Lang6 = 149;
		case Lang7 = 150;
		case Lang8 = 151;
		case Lang9 = 152;

		case AltErase = 153;
		case SysReq = 154;
		case Cancel = 155;
		case Clear = 156;
		case Prior = 157;
		case Return2 = 158;
		case Separator = 159;
		case Out = 160;
		case Oper = 161;
		case ClearAgain = 162;
		case CrSel = 163;
		case ExSel = 164;

		case Kp00 = 176;
		case Kp000 = 177;
		case ThousandsSeparator = 178;
		case DecimalSeparator = 179;
		case CurrencyUnit = 180;
		case CurrencySubUnit = 181;
		case KpLeftParen = 182;
		case KpRightParen = 183;
		case KpLeftBrace = 184;
		case KpRightBrace = 185;
		case KpTab = 186;
		case KpBackspace = 187;
		case KPA = 188;
		case KPB = 189;
		case KPC = 190;
		case KPD = 191;
		case KPE = 192;
		case KPF = 193;
		case KpXor = 194;
		case KpPower = 195;
		case KpPercent = 196;
		case KpLess = 197;
		case KpGreater = 198;
		case KpAmpersand = 199;
		case KpdBlAmpersand = 200;
		case KpVerticalBar = 201;
		case KpDblVerticalBar = 202;
		case KpColon = 203;
		case KpHash = 204;
		case KpSpace = 205;
		case KpAt = 206;
		case KpExclam = 207;
		case KpMemstore = 208;
		case KpMemRecall = 209;
		case KpMemClear = 210;
		case KpMemAdd = 211;
		case KpMemSubtract = 212;
		case KpMemMultiply = 213;
		case KpMemDivide = 214;
		case KpPlusMinus = 215;
		case KpClear = 216;
		case KpClearEntry = 217;
		case KpBinary = 218;
		case KpOctal = 219;
		case KpDecimal = 220;
		case KpHexadecimal = 221;

		case LCtrl = 224;
		case LShift = 225;
		case LAlt = 226;
		case LGui = 227;
		case RCtrl = 228;
		case RShift = 229;
		case RAlt = 230;
		case RGui = 231;

		case Mode = 257;

		// these come from the usb consumer page (0x0c)
		case AudioNext = 258;
		case AudioPrev = 259;
		case AudioStop = 260;
		case AudioPlay = 261;
		case AudioMute = 262;
		case MediaSelect = 263;
		case Www = 264;
		case Mail = 265;
		case Calculator = 266;
		case Computer = 267;
		case AcSearch = 268;
		case AcHome = 269;
		case AcBack = 270;
		case AcForward = 271;
		case AcStop = 272;
		case AcRefresh = 273;
		case AcBookmarks = 274;

		// these come from other sources; and are mostly mac related
		case BrightnessDown = 275;
		case BrightnessUp = 276;
		case DisplaySwitch = 277;
		case KbdIllumToggle = 278;
		case KbdIllumDown = 279;
		case KbdIllumUp = 280;
		case Eject = 281;
		case Sleep = 282;
		case App1 = 283;
		case App2 = 284;

		static public int Count => 512;
	}
}
