KeyCode.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #pragma once
  2. #include <AK/Types.h>
  3. enum KeyCode : u8 {
  4. Key_Invalid = 0,
  5. Key_Escape,
  6. Key_Tab,
  7. Key_Backspace,
  8. Key_Return,
  9. Key_Insert,
  10. Key_Delete,
  11. Key_PrintScreen,
  12. Key_SysRq,
  13. Key_Home,
  14. Key_End,
  15. Key_Left,
  16. Key_Up,
  17. Key_Right,
  18. Key_Down,
  19. Key_PageUp,
  20. Key_PageDown,
  21. Key_LeftShift,
  22. Key_RightShift,
  23. Key_Control,
  24. Key_Alt,
  25. Key_CapsLock,
  26. Key_NumLock,
  27. Key_ScrollLock,
  28. Key_F1,
  29. Key_F2,
  30. Key_F3,
  31. Key_F4,
  32. Key_F5,
  33. Key_F6,
  34. Key_F7,
  35. Key_F8,
  36. Key_F9,
  37. Key_F10,
  38. Key_F11,
  39. Key_F12,
  40. Key_Space,
  41. Key_ExclamationPoint,
  42. Key_DoubleQuote,
  43. Key_Hashtag,
  44. Key_Dollar,
  45. Key_Percent,
  46. Key_Ampersand,
  47. Key_Apostrophe,
  48. Key_LeftParen,
  49. Key_RightParen,
  50. Key_Asterisk,
  51. Key_Plus,
  52. Key_Comma,
  53. Key_Minus,
  54. Key_Period,
  55. Key_Slash,
  56. Key_0,
  57. Key_1,
  58. Key_2,
  59. Key_3,
  60. Key_4,
  61. Key_5,
  62. Key_6,
  63. Key_7,
  64. Key_8,
  65. Key_9,
  66. Key_Colon,
  67. Key_Semicolon,
  68. Key_LessThan,
  69. Key_Equal,
  70. Key_GreaterThan,
  71. Key_QuestionMark,
  72. Key_AtSign,
  73. Key_A,
  74. Key_B,
  75. Key_C,
  76. Key_D,
  77. Key_E,
  78. Key_F,
  79. Key_G,
  80. Key_H,
  81. Key_I,
  82. Key_J,
  83. Key_K,
  84. Key_L,
  85. Key_M,
  86. Key_N,
  87. Key_O,
  88. Key_P,
  89. Key_Q,
  90. Key_R,
  91. Key_S,
  92. Key_T,
  93. Key_U,
  94. Key_V,
  95. Key_W,
  96. Key_X,
  97. Key_Y,
  98. Key_Z,
  99. Key_LeftBracket,
  100. Key_RightBracket,
  101. Key_Backslash,
  102. Key_Circumflex,
  103. Key_Underscore,
  104. Key_LeftBrace,
  105. Key_RightBrace,
  106. Key_Pipe,
  107. Key_Tilde,
  108. Key_Backtick,
  109. Key_Logo,
  110. Key_Shift = Key_LeftShift,
  111. };
  112. enum KeyModifier {
  113. Mod_None = 0x00,
  114. Mod_Alt = 0x01,
  115. Mod_Ctrl = 0x02,
  116. Mod_Shift = 0x04,
  117. Mod_Logo = 0x08,
  118. Mod_AltGr = 0x10,
  119. Mod_Mask = 0x1f,
  120. Is_Press = 0x80,
  121. };
  122. struct KeyEvent {
  123. KeyCode key { Key_Invalid };
  124. u8 character { 0 };
  125. u8 flags { 0 };
  126. bool alt() const { return flags & Mod_Alt; }
  127. bool ctrl() const { return flags & Mod_Ctrl; }
  128. bool shift() const { return flags & Mod_Shift; }
  129. bool logo() const { return flags & Mod_Logo; }
  130. bool altgr() const { return flags & Mod_AltGr; }
  131. unsigned modifiers() const { return flags & Mod_Mask; }
  132. bool is_press() const { return flags & Is_Press; }
  133. };