#include "keymap.h" #include /* XKB standard physical key names, independent of server numeric keycodes. */ enum yasl_key yasl_private_key_from_xkb_name(const char name[4]) { static const struct { char name[4]; enum yasl_key key; } keys[] = { {{'T', 'L', 'D', 'E'}, YASL_KEY_GRAVE}, {{'A', 'E', '0', '1'}, YASL_KEY_1}, {{'A', 'E', '0', '2'}, YASL_KEY_2}, {{'A', 'E', '0', '3'}, YASL_KEY_3}, {{'A', 'E', '0', '4'}, YASL_KEY_4}, {{'A', 'E', '0', '5'}, YASL_KEY_5}, {{'A', 'E', '0', '6'}, YASL_KEY_6}, {{'A', 'E', '0', '7'}, YASL_KEY_7}, {{'A', 'E', '0', '8'}, YASL_KEY_8}, {{'A', 'E', '0', '9'}, YASL_KEY_9}, {{'A', 'E', '1', '0'}, YASL_KEY_0}, {{'A', 'E', '1', '1'}, YASL_KEY_MINUS}, {{'A', 'E', '1', '2'}, YASL_KEY_EQUAL}, {{'B', 'K', 'S', 'P'}, YASL_KEY_BACKSPACE}, {{'T', 'A', 'B', 0}, YASL_KEY_TAB}, {{'A', 'D', '0', '1'}, YASL_KEY_Q}, {{'A', 'D', '0', '2'}, YASL_KEY_W}, {{'A', 'D', '0', '3'}, YASL_KEY_E}, {{'A', 'D', '0', '4'}, YASL_KEY_R}, {{'A', 'D', '0', '5'}, YASL_KEY_T}, {{'A', 'D', '0', '6'}, YASL_KEY_Y}, {{'A', 'D', '0', '7'}, YASL_KEY_U}, {{'A', 'D', '0', '8'}, YASL_KEY_I}, {{'A', 'D', '0', '9'}, YASL_KEY_O}, {{'A', 'D', '1', '0'}, YASL_KEY_P}, {{'A', 'D', '1', '1'}, YASL_KEY_LEFT_BRACKET}, {{'A', 'D', '1', '2'}, YASL_KEY_RIGHT_BRACKET}, {{'B', 'K', 'S', 'L'}, YASL_KEY_BACKSLASH}, {{'R', 'T', 'R', 'N'}, YASL_KEY_ENTER}, {{'C', 'A', 'P', 'S'}, YASL_KEY_CAPS_LOCK}, {{'A', 'C', '0', '1'}, YASL_KEY_A}, {{'A', 'C', '0', '2'}, YASL_KEY_S}, {{'A', 'C', '0', '3'}, YASL_KEY_D}, {{'A', 'C', '0', '4'}, YASL_KEY_F}, {{'A', 'C', '0', '5'}, YASL_KEY_G}, {{'A', 'C', '0', '6'}, YASL_KEY_H}, {{'A', 'C', '0', '7'}, YASL_KEY_J}, {{'A', 'C', '0', '8'}, YASL_KEY_K}, {{'A', 'C', '0', '9'}, YASL_KEY_L}, {{'A', 'C', '1', '0'}, YASL_KEY_SEMICOLON}, {{'A', 'C', '1', '1'}, YASL_KEY_APOSTROPHE}, {{'L', 'F', 'S', 'H'}, YASL_KEY_LEFT_SHIFT}, {{'L', 'S', 'G', 'T'}, YASL_KEY_ISO_BACKSLASH}, {{'A', 'B', '0', '1'}, YASL_KEY_Z}, {{'A', 'B', '0', '2'}, YASL_KEY_X}, {{'A', 'B', '0', '3'}, YASL_KEY_C}, {{'A', 'B', '0', '4'}, YASL_KEY_V}, {{'A', 'B', '0', '5'}, YASL_KEY_B}, {{'A', 'B', '0', '6'}, YASL_KEY_N}, {{'A', 'B', '0', '7'}, YASL_KEY_M}, {{'A', 'B', '0', '8'}, YASL_KEY_COMMA}, {{'A', 'B', '0', '9'}, YASL_KEY_PERIOD}, {{'A', 'B', '1', '0'}, YASL_KEY_SLASH}, {{'R', 'T', 'S', 'H'}, YASL_KEY_RIGHT_SHIFT}, {{'L', 'C', 'T', 'L'}, YASL_KEY_LEFT_CONTROL}, {{'L', 'W', 'I', 'N'}, YASL_KEY_LEFT_SUPER}, {{'L', 'A', 'L', 'T'}, YASL_KEY_LEFT_ALT}, {{'S', 'P', 'C', 'E'}, YASL_KEY_SPACE}, {{'R', 'A', 'L', 'T'}, YASL_KEY_RIGHT_ALT}, {{'R', 'W', 'I', 'N'}, YASL_KEY_RIGHT_SUPER}, {{'C', 'O', 'M', 'P'}, YASL_KEY_MENU}, {{'R', 'C', 'T', 'L'}, YASL_KEY_RIGHT_CONTROL}, {{'E', 'S', 'C', 0}, YASL_KEY_ESCAPE}, {{'F', 'K', '0', '1'}, YASL_KEY_F1}, {{'F', 'K', '0', '2'}, YASL_KEY_F2}, {{'F', 'K', '0', '3'}, YASL_KEY_F3}, {{'F', 'K', '0', '4'}, YASL_KEY_F4}, {{'F', 'K', '0', '5'}, YASL_KEY_F5}, {{'F', 'K', '0', '6'}, YASL_KEY_F6}, {{'F', 'K', '0', '7'}, YASL_KEY_F7}, {{'F', 'K', '0', '8'}, YASL_KEY_F8}, {{'F', 'K', '0', '9'}, YASL_KEY_F9}, {{'F', 'K', '1', '0'}, YASL_KEY_F10}, {{'F', 'K', '1', '1'}, YASL_KEY_F11}, {{'F', 'K', '1', '2'}, YASL_KEY_F12}, {{'P', 'R', 'S', 'C'}, YASL_KEY_PRINT_SCREEN}, {{'S', 'C', 'L', 'K'}, YASL_KEY_SCROLL_LOCK}, {{'P', 'A', 'U', 'S'}, YASL_KEY_PAUSE}, {{'I', 'N', 'S', 0}, YASL_KEY_INSERT}, {{'H', 'O', 'M', 'E'}, YASL_KEY_HOME}, {{'P', 'G', 'U', 'P'}, YASL_KEY_PAGE_UP}, {{'D', 'E', 'L', 'E'}, YASL_KEY_DELETE}, {{'E', 'N', 'D', 0}, YASL_KEY_END}, {{'P', 'G', 'D', 'N'}, YASL_KEY_PAGE_DOWN}, {{'U', 'P', 0, 0}, YASL_KEY_UP}, {{'L', 'E', 'F', 'T'}, YASL_KEY_LEFT}, {{'D', 'O', 'W', 'N'}, YASL_KEY_DOWN}, {{'R', 'G', 'H', 'T'}, YASL_KEY_RIGHT}, {{'N', 'M', 'L', 'K'}, YASL_KEY_NUM_LOCK}, {{'K', 'P', 'D', 'V'}, YASL_KEY_KP_DIVIDE}, {{'K', 'P', 'M', 'U'}, YASL_KEY_KP_MULTIPLY}, {{'K', 'P', 'S', 'U'}, YASL_KEY_KP_SUBTRACT}, {{'K', 'P', '7', 0}, YASL_KEY_KP_7}, {{'K', 'P', '8', 0}, YASL_KEY_KP_8}, {{'K', 'P', '9', 0}, YASL_KEY_KP_9}, {{'K', 'P', 'A', 'D'}, YASL_KEY_KP_ADD}, {{'K', 'P', '4', 0}, YASL_KEY_KP_4}, {{'K', 'P', '5', 0}, YASL_KEY_KP_5}, {{'K', 'P', '6', 0}, YASL_KEY_KP_6}, {{'K', 'P', '1', 0}, YASL_KEY_KP_1}, {{'K', 'P', '2', 0}, YASL_KEY_KP_2}, {{'K', 'P', '3', 0}, YASL_KEY_KP_3}, {{'K', 'P', 'E', 'N'}, YASL_KEY_KP_ENTER}, {{'K', 'P', '0', 0}, YASL_KEY_KP_0}, {{'K', 'P', 'D', 'L'}, YASL_KEY_KP_DECIMAL}, {{'K', 'P', 'E', 'Q'}, YASL_KEY_KP_EQUAL}, {{'F', 'K', '1', '3'}, YASL_KEY_F13}, {{'F', 'K', '1', '4'}, YASL_KEY_F14}, {{'F', 'K', '1', '5'}, YASL_KEY_F15}, {{'F', 'K', '1', '6'}, YASL_KEY_F16}, {{'F', 'K', '1', '7'}, YASL_KEY_F17}, {{'F', 'K', '1', '8'}, YASL_KEY_F18}, {{'F', 'K', '1', '9'}, YASL_KEY_F19}, {{'F', 'K', '2', '0'}, YASL_KEY_F20}, {{'F', 'K', '2', '1'}, YASL_KEY_F21}, {{'F', 'K', '2', '2'}, YASL_KEY_F22}, {{'F', 'K', '2', '3'}, YASL_KEY_F23}, {{'F', 'K', '2', '4'}, YASL_KEY_F24}, {{'H', 'K', 'T', 'G'}, YASL_KEY_KANA}, {{'A', 'B', '1', '1'}, YASL_KEY_RO}, {{'H', 'E', 'N', 'K'}, YASL_KEY_CONVERT}, {{'M', 'U', 'H', 'E'}, YASL_KEY_NONCONVERT}, {{'A', 'E', '1', '3'}, YASL_KEY_YEN}, {{'M', 'U', 'T', 'E'}, YASL_KEY_MUTE}, {{'I', '1', '2', '9'}, YASL_KEY_KP_COMMA}, }; for (size_t i = 0; i < sizeof(keys) / sizeof(keys[0]); i++) if (memcmp(keys[i].name, name, 4) == 0) return keys[i].key; return YASL_KEY_UNKNOWN; }