#pragma once

#include <cstdint>

enum class USBKeyCode : uint32_t
{
  Hyper = 0x10,
  Super = 0x11,
  Fn = 0x12,
  PrivacyScreenToggle = 0x17,
  Sleep = 0x10082,
  WakeUp = 0x10083,
  DisplayToggleIntExt = 0x100b5,
  A = 0x70004,
  B = 0x70005,
  C = 0x70006,
  D = 0x70007,
  E = 0x70008,
  F = 0x70009,
  G = 0x7000a,
  H = 0x7000b,
  I = 0x7000c,
  J = 0x7000d,
  K = 0x7000e,
  L = 0x7000f,
  M = 0x70010,
  N = 0x70011,
  O = 0x70012,
  P = 0x70013,
  Q = 0x70014,
  R = 0x70015,
  S = 0x70016,
  T = 0x70017,
  U = 0x70018,
  V = 0x70019,
  W = 0x7001a,
  X = 0x7001b,
  Y = 0x7001c,
  Z = 0x7001d,
  Digit1 = 0x7001e,
  Digit2 = 0x7001f,
  Digit3 = 0x70020,
  Digit4 = 0x70021,
  Digit5 = 0x70022,
  Digit6 = 0x70023,
  Digit7 = 0x70024,
  Digit8 = 0x70025,
  Digit9 = 0x70026,
  Digit0 = 0x70027,
  Enter = 0x70028,
  Escape = 0x70029,
  Backspace = 0x7002a,
  Tab = 0x7002b,
  Space = 0x7002c,
  Minus = 0x7002d,
  Equal = 0x7002e,
  BracketLeft = 0x7002f,
  BracketRight = 0x70030,
  Backslash = 0x70031,
  Semicolon = 0x70033,
  Quote = 0x70034,
  Backquote = 0x70035,
  Comma = 0x70036,
  Period = 0x70037,
  Slash = 0x70038,
  CapsLock = 0x70039,
  F1 = 0x7003a,
  F2 = 0x7003b,
  F3 = 0x7003c,
  F4 = 0x7003d,
  F5 = 0x7003e,
  F6 = 0x7003f,
  F7 = 0x70040,
  F8 = 0x70041,
  F9 = 0x70042,
  F10 = 0x70043,
  F11 = 0x70044,
  F12 = 0x70045,
  PrintScreen = 0x70046,
  ScrollLock = 0x70047,
  Pause = 0x70048,
  Insert = 0x70049,
  Home = 0x7004a,
  PageUp = 0x7004b,
  Delete = 0x7004c,
  End = 0x7004d,
  PageDown = 0x7004e,
  ArrowRight = 0x7004f,
  ArrowLeft = 0x70050,
  ArrowDown = 0x70051,
  ArrowUp = 0x70052,
  NumLock = 0x70053,
  NumpadDivide = 0x70054,
  NumpadMultiply = 0x70055,
  NumpadSubtract = 0x70056,
  NumpadAdd = 0x70057,
  NumpadEnter = 0x70058,
  Numpad1 = 0x70059,
  Numpad2 = 0x7005a,
  Numpad3 = 0x7005b,
  Numpad4 = 0x7005c,
  Numpad5 = 0x7005d,
  Numpad6 = 0x7005e,
  Numpad7 = 0x7005f,
  Numpad8 = 0x70060,
  Numpad9 = 0x70061,
  Numpad0 = 0x70062,
  NumpadDecimal = 0x70063,
  IntlBackslash = 0x70064,
  ContextMenu = 0x70065,
  Power = 0x70066,
  NumpadEqual = 0x70067,
  F13 = 0x70068,
  F14 = 0x70069,
  F15 = 0x7006a,
  F16 = 0x7006b,
  F17 = 0x7006c,
  F18 = 0x7006d,
  F19 = 0x7006e,
  F20 = 0x7006f,
  F21 = 0x70070,
  F22 = 0x70071,
  F23 = 0x70072,
  F24 = 0x70073,
  Open = 0x70074,
  Help = 0x70075,
  Select = 0x70077,
  Again = 0x70079,
  Undo = 0x7007a,
  Cut = 0x7007b,
  Copy = 0x7007c,
  Paste = 0x7007d,
  Find = 0x7007e,
  AudioVolumeMute = 0x7007f,
  AudioVolumeUp = 0x70080,
  AudioVolumeDown = 0x70081,
  NumpadComma = 0x70085,
  IntlRo = 0x70087,
  KanaMode = 0x70088,
  IntlYen = 0x70089,
  Convert = 0x7008a,
  NonConvert = 0x7008b,
  Lang1 = 0x70090,
  Lang2 = 0x70091,
  Lang3 = 0x70092,
  Lang4 = 0x70093,
  Lang5 = 0x70094,
  Abort = 0x7009b,
  Props = 0x700a3,
  NumpadParenLeft = 0x700b6,
  NumpadParenRight = 0x700b7,
  NumpadBackspace = 0x700bb,
  NumpadMemoryStore = 0x700d0,
  NumpadMemoryRecall = 0x700d1,
  NumpadMemoryClear = 0x700d2,
  NumpadMemoryAdd = 0x700d3,
  NumpadMemorySubtract = 0x700d4,
  NumpadSignChange = 0x700d7,
  NumpadClear = 0x700d8,
  NumpadClearEntry = 0x700d9,
  ControlLeft = 0x700e0,
  ShiftLeft = 0x700e1,
  AltLeft = 0x700e2,
  MetaLeft = 0x700e3,
  ControlRight = 0x700e4,
  ShiftRight = 0x700e5,
  AltRight = 0x700e6,
  MetaRight = 0x700e7,
  Info = 0xc0060,
  ClosedCaptionToggle = 0xc0061,
  BrightnessUp = 0xc006f,
  BrightnessDown = 0xc0070,
  BrightnessToggle = 0xc0072,
  BrightnessMinimum = 0xc0073,
  BrightnessMaximum = 0xc0074,
  BrightnessAuto = 0xc0075,
  IllumUp = 0xc0079,
  IllumDown = 0xc007a,
  MediaLast = 0xc0083,
  LaunchPhone = 0xc008c,
  ProgramGuide = 0xc008d,
  Exit = 0xc0094,
  ChannelUp = 0xc009c,
  ChannelDown = 0xc009d,
  MediaPlay = 0xc00b0,
  MediaPause = 0xc00b1,
  MediaRecord = 0xc00b2,
  MediaFastForward = 0xc00b3,
  MediaRewind = 0xc00b4,
  MediaTrackNext = 0xc00b5,
  MediaTrackPrevious = 0xc00b6,
  MediaStop = 0xc00b7,
  Eject = 0xc00b8,
  MediaPlayPause = 0xc00cd,
  SpeechInputToggle = 0xc00cf,
  BassBoost = 0xc00e5,
  MediaSelect = 0xc0183,
  LaunchWordProcessor = 0xc0184,
  LaunchSpreadsheet = 0xc0186,
  LaunchMail = 0xc018a,
  LaunchContacts = 0xc018d,
  LaunchCalendar = 0xc018e,
  LaunchApp2 = 0xc0192,
  LaunchApp1 = 0xc0194,
  LaunchInternetBrowser = 0xc0196,
  LogOff = 0xc019c,
  LockScreen = 0xc019e,
  LaunchControlPanel = 0xc019f,
  SelectTask = 0xc01a2,
  LaunchDocuments = 0xc01a7,
  SpellCheck = 0xc01ab,
  LaunchKeyboardLayout = 0xc01ae,
  LaunchScreenSaver = 0xc01b1,
  LaunchAudioBrowser = 0xc01b7,
  LaunchAssistant = 0xc01cb,
  New = 0xc0201,
  Close = 0xc0203,
  Save = 0xc0207,
  Print = 0xc0208,
  BrowserSearch = 0xc0221,
  BrowserHome = 0xc0223,
  BrowserBack = 0xc0224,
  BrowserForward = 0xc0225,
  BrowserStop = 0xc0226,
  BrowserRefresh = 0xc0227,
  BrowserFavorites = 0xc022a,
  ZoomIn = 0xc022d,
  ZoomOut = 0xc022e,
  ZoomToggle = 0xc0232,
  Redo = 0xc0279,
  MailReply = 0xc0289,
  MailForward = 0xc028b,
  MailSend = 0xc028c,
  KeyboardLayoutSelect = 0xc029d,
  ShowAllWindows = 0xc029f,
};
