1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:07:45 +00:00

Kernel: Add a stringification helper for KeyCode

This commit is contained in:
Andreas Kling 2020-05-12 17:02:09 +02:00
parent 39d55d1d76
commit 0ac9986c2f

View file

@ -28,115 +28,121 @@
#include <AK/Types.h> #include <AK/Types.h>
enum KeyCode : u8 { #define ENUMERATE_KEY_CODES \
Key_Invalid = 0, __ENUMERATE_KEY_CODE(Invalid, "Invalid") \
Key_Escape, __ENUMERATE_KEY_CODE(Escape, "Escape") \
Key_Tab, __ENUMERATE_KEY_CODE(Tab, "Tab") \
Key_Backspace, __ENUMERATE_KEY_CODE(Backspace, "Backspace") \
Key_Return, __ENUMERATE_KEY_CODE(Return, "Return") \
Key_Insert, __ENUMERATE_KEY_CODE(Insert, "Insert") \
Key_Delete, __ENUMERATE_KEY_CODE(Delete, "Delete") \
Key_PrintScreen, __ENUMERATE_KEY_CODE(PrintScreen, "PrintScreen") \
Key_SysRq, __ENUMERATE_KEY_CODE(SysRq, "SysRq") \
Key_Home, __ENUMERATE_KEY_CODE(Home, "Home") \
Key_End, __ENUMERATE_KEY_CODE(End, "End") \
Key_Left, __ENUMERATE_KEY_CODE(Left, "Left") \
Key_Up, __ENUMERATE_KEY_CODE(Up, "Up") \
Key_Right, __ENUMERATE_KEY_CODE(Right, "Right") \
Key_Down, __ENUMERATE_KEY_CODE(Down, "Down") \
Key_PageUp, __ENUMERATE_KEY_CODE(PageUp, "PageUp") \
Key_PageDown, __ENUMERATE_KEY_CODE(PageDown, "PageDown") \
Key_LeftShift, __ENUMERATE_KEY_CODE(LeftShift, "LeftShift") \
Key_RightShift, __ENUMERATE_KEY_CODE(RightShift, "RightShift") \
Key_Control, __ENUMERATE_KEY_CODE(Control, "Ctrl") \
Key_Alt, __ENUMERATE_KEY_CODE(Alt, "Alt") \
Key_CapsLock, __ENUMERATE_KEY_CODE(CapsLock, "CapsLock") \
Key_NumLock, __ENUMERATE_KEY_CODE(NumLock, "NumLock") \
Key_ScrollLock, __ENUMERATE_KEY_CODE(ScrollLock, "ScrollLock") \
Key_F1, __ENUMERATE_KEY_CODE(F1, "F1") \
Key_F2, __ENUMERATE_KEY_CODE(F2, "F2") \
Key_F3, __ENUMERATE_KEY_CODE(F3, "F3") \
Key_F4, __ENUMERATE_KEY_CODE(F4, "F4") \
Key_F5, __ENUMERATE_KEY_CODE(F5, "F5") \
Key_F6, __ENUMERATE_KEY_CODE(F6, "F6") \
Key_F7, __ENUMERATE_KEY_CODE(F7, "F7") \
Key_F8, __ENUMERATE_KEY_CODE(F8, "F8") \
Key_F9, __ENUMERATE_KEY_CODE(F9, "F9") \
Key_F10, __ENUMERATE_KEY_CODE(F10, "F10") \
Key_F11, __ENUMERATE_KEY_CODE(F11, "F11") \
Key_F12, __ENUMERATE_KEY_CODE(F12, "F12") \
Key_Space, __ENUMERATE_KEY_CODE(Space, "Space") \
Key_ExclamationPoint, __ENUMERATE_KEY_CODE(ExclamationPoint, "!") \
Key_DoubleQuote, __ENUMERATE_KEY_CODE(DoubleQuote, "\"") \
Key_Hashtag, __ENUMERATE_KEY_CODE(Hashtag, "#") \
Key_Dollar, __ENUMERATE_KEY_CODE(Dollar, "$") \
Key_Percent, __ENUMERATE_KEY_CODE(Percent, "%") \
Key_Ampersand, __ENUMERATE_KEY_CODE(Ampersand, "&") \
Key_Apostrophe, __ENUMERATE_KEY_CODE(Apostrophe, "'") \
Key_LeftParen, __ENUMERATE_KEY_CODE(LeftParen, "(") \
Key_RightParen, __ENUMERATE_KEY_CODE(RightParen, ")") \
Key_Asterisk, __ENUMERATE_KEY_CODE(Asterisk, "*") \
Key_Plus, __ENUMERATE_KEY_CODE(Plus, "+") \
Key_Comma, __ENUMERATE_KEY_CODE(Comma, ",") \
Key_Minus, __ENUMERATE_KEY_CODE(Minus, "-") \
Key_Period, __ENUMERATE_KEY_CODE(Period, ".") \
Key_Slash, __ENUMERATE_KEY_CODE(Slash, "/") \
Key_0, __ENUMERATE_KEY_CODE(0, "0") \
Key_1, __ENUMERATE_KEY_CODE(1, "1") \
Key_2, __ENUMERATE_KEY_CODE(2, "2") \
Key_3, __ENUMERATE_KEY_CODE(3, "3") \
Key_4, __ENUMERATE_KEY_CODE(4, "4") \
Key_5, __ENUMERATE_KEY_CODE(5, "5") \
Key_6, __ENUMERATE_KEY_CODE(6, "6") \
Key_7, __ENUMERATE_KEY_CODE(7, "7") \
Key_8, __ENUMERATE_KEY_CODE(8, "8") \
Key_9, __ENUMERATE_KEY_CODE(9, "9") \
Key_Colon, __ENUMERATE_KEY_CODE(Colon, ":") \
Key_Semicolon, __ENUMERATE_KEY_CODE(Semicolon, ";") \
Key_LessThan, __ENUMERATE_KEY_CODE(LessThan, "<") \
Key_Equal, __ENUMERATE_KEY_CODE(Equal, "=") \
Key_GreaterThan, __ENUMERATE_KEY_CODE(GreaterThan, ">") \
Key_QuestionMark, __ENUMERATE_KEY_CODE(QuestionMark, "?") \
Key_AtSign, __ENUMERATE_KEY_CODE(AtSign, "@") \
Key_A, __ENUMERATE_KEY_CODE(A, "A") \
Key_B, __ENUMERATE_KEY_CODE(B, "B") \
Key_C, __ENUMERATE_KEY_CODE(C, "C") \
Key_D, __ENUMERATE_KEY_CODE(D, "D") \
Key_E, __ENUMERATE_KEY_CODE(E, "E") \
Key_F, __ENUMERATE_KEY_CODE(F, "F") \
Key_G, __ENUMERATE_KEY_CODE(G, "G") \
Key_H, __ENUMERATE_KEY_CODE(H, "H") \
Key_I, __ENUMERATE_KEY_CODE(I, "I") \
Key_J, __ENUMERATE_KEY_CODE(J, "J") \
Key_K, __ENUMERATE_KEY_CODE(K, "K") \
Key_L, __ENUMERATE_KEY_CODE(L, "L") \
Key_M, __ENUMERATE_KEY_CODE(M, "M") \
Key_N, __ENUMERATE_KEY_CODE(N, "N") \
Key_O, __ENUMERATE_KEY_CODE(O, "O") \
Key_P, __ENUMERATE_KEY_CODE(P, "P") \
Key_Q, __ENUMERATE_KEY_CODE(Q, "Q") \
Key_R, __ENUMERATE_KEY_CODE(R, "R") \
Key_S, __ENUMERATE_KEY_CODE(S, "S") \
Key_T, __ENUMERATE_KEY_CODE(T, "T") \
Key_U, __ENUMERATE_KEY_CODE(U, "U") \
Key_V, __ENUMERATE_KEY_CODE(V, "V") \
Key_W, __ENUMERATE_KEY_CODE(W, "W") \
Key_X, __ENUMERATE_KEY_CODE(X, "X") \
Key_Y, __ENUMERATE_KEY_CODE(Y, "Y") \
Key_Z, __ENUMERATE_KEY_CODE(Z, "Z") \
Key_LeftBracket, __ENUMERATE_KEY_CODE(LeftBracket, "[") \
Key_RightBracket, __ENUMERATE_KEY_CODE(RightBracket, "]") \
Key_Backslash, __ENUMERATE_KEY_CODE(Backslash, "\\") \
Key_Circumflex, __ENUMERATE_KEY_CODE(Circumflex, "^") \
Key_Underscore, __ENUMERATE_KEY_CODE(Underscore, "_") \
Key_LeftBrace, __ENUMERATE_KEY_CODE(LeftBrace, "{") \
Key_RightBrace, __ENUMERATE_KEY_CODE(RightBrace, "}") \
Key_Pipe, __ENUMERATE_KEY_CODE(Pipe, "|") \
Key_Tilde, __ENUMERATE_KEY_CODE(Tilde, "~") \
Key_Backtick, __ENUMERATE_KEY_CODE(Backtick, "`") \
Key_Logo, __ENUMERATE_KEY_CODE(Logo, "Logo")
Key_Shift = Key_LeftShift, enum KeyCode : u8 {
#define __ENUMERATE_KEY_CODE(name, ui_name) Key_##name,
ENUMERATE_KEY_CODES
#undef __ENUMERATE_KEY_CODE
Key_Shift
= Key_LeftShift,
}; };
const int key_code_count = Key_Logo; const int key_code_count = Key_Logo;
@ -164,3 +170,16 @@ struct KeyEvent {
unsigned modifiers() const { return flags & Mod_Mask; } unsigned modifiers() const { return flags & Mod_Mask; }
bool is_press() const { return flags & Is_Press; } bool is_press() const { return flags & Is_Press; }
}; };
inline const char* key_code_to_string(KeyCode key)
{
switch (key) {
#define __ENUMERATE_KEY_CODE(name, ui_name) \
case Key_##name: \
return ui_name;
ENUMERATE_KEY_CODES
#undef __ENUMERATE_KEY_CODE
default:
return nullptr;
}
}