diff options
Diffstat (limited to 'LibGUI/GShortcut.cpp')
-rw-r--r-- | LibGUI/GShortcut.cpp | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/LibGUI/GShortcut.cpp b/LibGUI/GShortcut.cpp new file mode 100644 index 0000000000..7673133820 --- /dev/null +++ b/LibGUI/GShortcut.cpp @@ -0,0 +1,137 @@ +#include <LibGUI/GShortcut.h> +#include <AK/StringBuilder.h> + +static String to_string(KeyCode key) +{ + switch (key) { + case Key_Escape: return "Escape"; + case Key_Tab: return "Tab"; + case Key_Backspace: return "Backspace"; + case Key_Return: return "Return"; + case Key_Insert: return "Insert"; + case Key_Delete: return "Delete"; + case Key_PrintScreen: return "PrintScreen"; + case Key_SysRq: return "SysRq"; + case Key_Home: return "Home"; + case Key_End: return "End"; + case Key_Left: return "Left"; + case Key_Up: return "Up"; + case Key_Right: return "Right"; + case Key_Down: return "Down"; + case Key_PageUp: return "PageUp"; + case Key_PageDown: return "PageDown"; + case Key_Shift: return "Shift"; + case Key_Control: return "Control"; + case Key_Alt: return "Alt"; + case Key_CapsLock: return "CapsLock"; + case Key_NumLock: return "NumLock"; + case Key_ScrollLock: return "ScrollLock"; + case Key_F1: return "F1"; + case Key_F2: return "F2"; + case Key_F3: return "F3"; + case Key_F4: return "F4"; + case Key_F5: return "F5"; + case Key_F6: return "F6"; + case Key_F7: return "F7"; + case Key_F8: return "F8"; + case Key_F9: return "F9"; + case Key_F10: return "F10"; + case Key_F11: return "F11"; + case Key_F12: return "F12"; + case Key_Space: return "Space"; + case Key_ExclamationPoint: return "!"; + case Key_DoubleQuote: return "\""; + case Key_Hashtag: return "#"; + case Key_Dollar: return "$"; + case Key_Percent: return "%"; + case Key_Ampersand: return "&"; + case Key_Apostrophe: return "'"; + case Key_LeftParen: return "("; + case Key_RightParen: return ")"; + case Key_Asterisk: return "*"; + case Key_Plus: return "+"; + case Key_Comma: return ","; + case Key_Minus: return "-"; + case Key_Period: return ","; + case Key_Slash: return "/"; + case Key_0: return "0"; + case Key_1: return "1"; + case Key_2: return "2"; + case Key_3: return "3"; + case Key_4: return "4"; + case Key_5: return "5"; + case Key_6: return "6"; + case Key_7: return "7"; + case Key_8: return "8"; + case Key_9: return "9"; + case Key_Colon: return ":"; + case Key_Semicolon: return ";"; + case Key_LessThan: return "<"; + case Key_Equal: return "="; + case Key_GreaterThan: return ">"; + case Key_QuestionMark: return "?"; + case Key_AtSign: return "@"; + case Key_A: return "A"; + case Key_B: return "B"; + case Key_C: return "C"; + case Key_D: return "D"; + case Key_E: return "E"; + case Key_F: return "F"; + case Key_G: return "G"; + case Key_H: return "H"; + case Key_I: return "I"; + case Key_J: return "J"; + case Key_K: return "K"; + case Key_L: return "L"; + case Key_M: return "M"; + case Key_N: return "N"; + case Key_O: return "O"; + case Key_P: return "P"; + case Key_Q: return "Q"; + case Key_R: return "R"; + case Key_S: return "S"; + case Key_T: return "T"; + case Key_U: return "U"; + case Key_V: return "V"; + case Key_W: return "W"; + case Key_X: return "X"; + case Key_Y: return "Y"; + case Key_Z: return "Z"; + case Key_LeftBracket: return "["; + case Key_RightBracket: return "]"; + case Key_Backslash: return "\\"; + case Key_Circumflex: return "^"; + case Key_Underscore: return "_"; + case Key_LeftBrace: return "{"; + case Key_RightBrace: return "}"; + case Key_Pipe: return "|"; + case Key_Tilde: return "~"; + case Key_Backtick: return "`"; + + case Key_Invalid: return "Invalid"; + default: + ASSERT_NOT_REACHED(); + } +} + +String GShortcut::to_string() const +{ + Vector<String> parts; + + if (m_modifiers & Mod_Ctrl) + parts.append("Ctrl"); + if (m_modifiers & Mod_Shift) + parts.append("Shift"); + if (m_modifiers & Mod_Alt) + parts.append("Alt"); + + parts.append(::to_string(m_key)); + + StringBuilder builder; + for (int i = 0; i < parts.size(); ++i) { + builder.append(parts[i]); + if (i != parts.size() - 1) + builder.append('+'); + } + return builder.to_string(); +} |