summaryrefslogtreecommitdiff
path: root/src/platform/x11/keymap.c
blob: 3c566b38dcdf471c35edd216fd701594569dda2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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;
}