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_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;
}
|