// gKeyMapper - canonical key name tables. #include "keys.h" #include namespace gkeymapper { namespace { const KeyDef kKeys[] = { // Modifiers (also needed as key codes when a shortcut is replayed). {"ctrl", KEY_LEFTCTRL}, {"control", KEY_LEFTCTRL}, {"alt", KEY_LEFTALT}, {"shift", KEY_LEFTSHIFT}, {"super", KEY_LEFTMETA}, {"meta", KEY_LEFTMETA}, {"altgr", KEY_RIGHTALT}, {"iso_level3_shift", KEY_RIGHTALT}, // Letters. {"a", KEY_A}, {"b", KEY_B}, {"c", KEY_C}, {"d", KEY_D}, {"e", KEY_E}, {"f", KEY_F}, {"g", KEY_G}, {"h", KEY_H}, {"i", KEY_I}, {"j", KEY_J}, {"k", KEY_K}, {"l", KEY_L}, {"m", KEY_M}, {"n", KEY_N}, {"o", KEY_O}, {"p", KEY_P}, {"q", KEY_Q}, {"r", KEY_R}, {"s", KEY_S}, {"t", KEY_T}, {"u", KEY_U}, {"v", KEY_V}, {"w", KEY_W}, {"x", KEY_X}, {"y", KEY_Y}, {"z", KEY_Z}, // Digits. {"0", KEY_0}, {"1", KEY_1}, {"2", KEY_2}, {"3", KEY_3}, {"4", KEY_4}, {"5", KEY_5}, {"6", KEY_6}, {"7", KEY_7}, {"8", KEY_8}, {"9", KEY_9}, // Function keys. {"f1", KEY_F1}, {"f2", KEY_F2}, {"f3", KEY_F3}, {"f4", KEY_F4}, {"f5", KEY_F5}, {"f6", KEY_F6}, {"f7", KEY_F7}, {"f8", KEY_F8}, {"f9", KEY_F9}, {"f10", KEY_F10}, {"f11", KEY_F11}, {"f12", KEY_F12}, // Editing / navigation. {"escape", KEY_ESC}, {"tab", KEY_TAB}, {"space", KEY_SPACE}, {"return", KEY_ENTER}, {"backspace", KEY_BACKSPACE}, {"delete", KEY_DELETE}, {"insert", KEY_INSERT}, {"home", KEY_HOME}, {"end", KEY_END}, {"page_up", KEY_PAGEUP}, {"page_down", KEY_PAGEDOWN}, {"up", KEY_UP}, {"down", KEY_DOWN}, {"left", KEY_LEFT}, {"right", KEY_RIGHT}, {"caps_lock", KEY_CAPSLOCK}, // Punctuation. {"minus", KEY_MINUS}, {"equal", KEY_EQUAL}, {"bracketleft", KEY_LEFTBRACE}, {"bracketright", KEY_RIGHTBRACE}, {"semicolon", KEY_SEMICOLON}, {"apostrophe", KEY_APOSTROPHE}, {"grave", KEY_GRAVE}, {"backslash", KEY_BACKSLASH}, {"comma", KEY_COMMA}, {"period", KEY_DOT}, {"slash", KEY_SLASH}, }; } // namespace const KeyDef* key_definitions() { return kKeys; } int key_definition_count() { return static_cast(sizeof(kKeys) / sizeof(kKeys[0])); } int linux_key_code(const std::string& name) { for (const KeyDef& def : kKeys) { if (name == def.name) { return def.linux_code; } } return -1; } unsigned modifier_bit(const std::string& name) { if (name == "ctrl" || name == "control") { return kModCtrl; } if (name == "alt") { return kModAlt; } if (name == "shift") { return kModShift; } if (name == "super" || name == "meta") { return kModSuper; } if (name == "altgr" || name == "iso_level3_shift") { return kModAltGr; } return kModNone; } } // namespace gkeymapper