diff options
| author | Berke Güzel <wenekar1@gmail.com> | 2026-10-13 13:44:13 +0300 |
|---|---|---|
| committer | Berke Güzel <wenekar1@gmail.com> | 2026-10-13 13:44:13 +0300 |
| commit | c059e3aa7f93da470f052a5cd8ee0d8dc969e679 (patch) | |
| tree | 63ffa378287ed2c606eda2e940501b9edc3d2b8b /src/platform/x11/keymap.c | |
| parent | 87d0bc50d53dc216efb2b04495f090616318bc5c (diff) | |
rename and simplification
Diffstat (limited to 'src/platform/x11/keymap.c')
| -rw-r--r-- | src/platform/x11/keymap.c | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/src/platform/x11/keymap.c b/src/platform/x11/keymap.c new file mode 100644 index 0000000..3c566b3 --- /dev/null +++ b/src/platform/x11/keymap.c @@ -0,0 +1,137 @@ +#include "keymap.h" +#include <string.h> + +/* XKB standard physical key names, independent of server numeric keycodes. */ +enum yasl_key yasl_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; +} |
