1/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 * Mupen64plus - sdl_key_converter.c *
3 * Mupen64Plus homepage: https://mupen64plus.org/ *
4 * Copyright (C) 2013 Mupen64plus development team *
5 * *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the *
18 * Free Software Foundation, Inc., *
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
20 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
21
22#include "sdl_key_converter.h"
23
24#include <stdint.h>
25
26#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
27
28uint16_t sdl_keysym2scancode(uint16_t keysym)
29{
30 static const uint16_t keysym2scancode[323] = {
31 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
32 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
33 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
34 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
35 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
36 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
37 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
38 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
39 0x002au, /* SDLK_BACKSPACE -> SDL_SCANCODE_BACKSPACE */
40 0x002bu, /* SDLK_TAB -> SDL_SCANCODE_TAB */
41 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
42 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
43 0x009cu, /* SDLK_CLEAR -> SDL_SCANCODE_CLEAR */
44 0x0028u, /* SDLK_RETURN -> SDL_SCANCODE_RETURN */
45 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
46 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
47 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
48 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
49 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
50 0x0048u, /* SDLK_PAUSE -> SDL_SCANCODE_PAUSE */
51 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
52 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
53 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
54 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
55 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
56 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
57 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
58 0x0029u, /* SDLK_ESCAPE -> SDL_SCANCODE_ESCAPE */
59 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
60 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
61 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
62 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
63 0x002cu, /* SDLK_SPACE -> SDL_SCANCODE_SPACE */
64 0x0000u, /* SDLK_EXCLAIM -> SDL_SCANCODE_UNKNOWN */
65 0x0000u, /* SDLK_QUOTEDBL -> SDL_SCANCODE_UNKNOWN */
66 0x0000u, /* SDLK_HASH -> SDL_SCANCODE_UNKNOWN */
67 0x0000u, /* SDLK_DOLLAR -> SDL_SCANCODE_UNKNOWN */
68 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
69 0x0000u, /* SDLK_AMPERSAND -> SDL_SCANCODE_UNKNOWN */
70 0x0000u, /* SDLK_QUOTE -> SDL_SCANCODE_UNKNOWN */
71 0x0000u, /* SDLK_LEFTPAREN -> SDL_SCANCODE_UNKNOWN */
72 0x0000u, /* SDLK_RIGHTPAREN -> SDL_SCANCODE_UNKNOWN */
73 0x0000u, /* SDLK_ASTERISK -> SDL_SCANCODE_UNKNOWN */
74 0x0000u, /* SDLK_PLUS -> SDL_SCANCODE_UNKNOWN */
75 0x0036u, /* SDLK_COMMA -> SDL_SCANCODE_COMMA */
76 0x002du, /* SDLK_MINUS -> SDL_SCANCODE_MINUS */
77 0x0037u, /* SDLK_PERIOD -> SDL_SCANCODE_PERIOD */
78 0x0038u, /* SDLK_SLASH -> SDL_SCANCODE_SLASH */
79 0x0027u, /* SDLK_0 -> SDL_SCANCODE_0 */
80 0x001eu, /* SDLK_1 -> SDL_SCANCODE_1 */
81 0x001fu, /* SDLK_2 -> SDL_SCANCODE_2 */
82 0x0020u, /* SDLK_3 -> SDL_SCANCODE_3 */
83 0x0021u, /* SDLK_4 -> SDL_SCANCODE_4 */
84 0x0022u, /* SDLK_5 -> SDL_SCANCODE_5 */
85 0x0023u, /* SDLK_6 -> SDL_SCANCODE_6 */
86 0x0024u, /* SDLK_7 -> SDL_SCANCODE_7 */
87 0x0025u, /* SDLK_8 -> SDL_SCANCODE_8 */
88 0x0026u, /* SDLK_9 -> SDL_SCANCODE_9 */
89 0x0000u, /* SDLK_COLON -> SDL_SCANCODE_UNKNOWN */
90 0x0033u, /* SDLK_SEMICOLON -> SDL_SCANCODE_SEMICOLON */
91 0x0000u, /* SDLK_LESS -> SDL_SCANCODE_UNKNOWN */
92 0x002eu, /* SDLK_EQUALS -> SDL_SCANCODE_EQUALS */
93 0x0000u, /* SDLK_GREATER -> SDL_SCANCODE_UNKNOWN */
94 0x0000u, /* SDLK_QUESTION -> SDL_SCANCODE_UNKNOWN */
95 0x0000u, /* SDLK_AT -> SDL_SCANCODE_UNKNOWN */
96 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
97 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
98 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
99 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
100 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
101 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
102 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
103 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
104 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
105 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
106 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
107 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
108 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
109 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
110 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
111 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
112 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
113 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
114 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
115 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
116 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
117 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
118 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
119 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
120 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
121 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
122 0x002fu, /* SDLK_LEFTBRACKET -> SDL_SCANCODE_LEFTBRACKET */
123 0x0031u, /* SDLK_BACKSLASH -> SDL_SCANCODE_BACKSLASH */
124 0x0030u, /* SDLK_RIGHTBRACKET -> SDL_SCANCODE_RIGHTBRACKET */
125 0x0000u, /* SDLK_CARET -> SDL_SCANCODE_UNKNOWN */
126 0x0000u, /* SDLK_UNDERSCORE -> SDL_SCANCODE_UNKNOWN */
127 0x0000u, /* SDLK_BACKQUOTE -> SDL_SCANCODE_UNKNOWN */
128 0x0004u, /* SDLK_a -> SDL_SCANCODE_A */
129 0x0005u, /* SDLK_b -> SDL_SCANCODE_B */
130 0x0006u, /* SDLK_c -> SDL_SCANCODE_C */
131 0x0007u, /* SDLK_d -> SDL_SCANCODE_D */
132 0x0008u, /* SDLK_e -> SDL_SCANCODE_E */
133 0x0009u, /* SDLK_f -> SDL_SCANCODE_F */
134 0x000au, /* SDLK_g -> SDL_SCANCODE_G */
135 0x000bu, /* SDLK_h -> SDL_SCANCODE_H */
136 0x000cu, /* SDLK_i -> SDL_SCANCODE_I */
137 0x000du, /* SDLK_j -> SDL_SCANCODE_J */
138 0x000eu, /* SDLK_k -> SDL_SCANCODE_K */
139 0x000fu, /* SDLK_l -> SDL_SCANCODE_L */
140 0x0010u, /* SDLK_m -> SDL_SCANCODE_M */
141 0x0011u, /* SDLK_n -> SDL_SCANCODE_N */
142 0x0012u, /* SDLK_o -> SDL_SCANCODE_O */
143 0x0013u, /* SDLK_p -> SDL_SCANCODE_P */
144 0x0014u, /* SDLK_q -> SDL_SCANCODE_Q */
145 0x0015u, /* SDLK_r -> SDL_SCANCODE_R */
146 0x0016u, /* SDLK_s -> SDL_SCANCODE_S */
147 0x0017u, /* SDLK_t -> SDL_SCANCODE_T */
148 0x0018u, /* SDLK_u -> SDL_SCANCODE_U */
149 0x0019u, /* SDLK_v -> SDL_SCANCODE_V */
150 0x001au, /* SDLK_w -> SDL_SCANCODE_W */
151 0x001bu, /* SDLK_x -> SDL_SCANCODE_X */
152 0x001cu, /* SDLK_y -> SDL_SCANCODE_Y */
153 0x001du, /* SDLK_z -> SDL_SCANCODE_Z */
154 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
155 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
156 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
157 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
158 0x004cu, /* SDLK_DELETE -> SDL_SCANCODE_DELETE */
159 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
160 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
161 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
162 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
163 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
164 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
165 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
166 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
167 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
168 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
169 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
170 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
171 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
172 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
173 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
174 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
175 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
176 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
177 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
178 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
179 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
180 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
181 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
182 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
183 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
184 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
185 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
186 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
187 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
188 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
189 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
190 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
191 0x0000u, /* SDLK_WORLD_0 -> SDL_SCANCODE_UNKNOWN */
192 0x0000u, /* SDLK_WORLD_1 -> SDL_SCANCODE_UNKNOWN */
193 0x0000u, /* SDLK_WORLD_2 -> SDL_SCANCODE_UNKNOWN */
194 0x0000u, /* SDLK_WORLD_3 -> SDL_SCANCODE_UNKNOWN */
195 0x0000u, /* SDLK_WORLD_4 -> SDL_SCANCODE_UNKNOWN */
196 0x0000u, /* SDLK_WORLD_5 -> SDL_SCANCODE_UNKNOWN */
197 0x0000u, /* SDLK_WORLD_6 -> SDL_SCANCODE_UNKNOWN */
198 0x0000u, /* SDLK_WORLD_7 -> SDL_SCANCODE_UNKNOWN */
199 0x0000u, /* SDLK_WORLD_8 -> SDL_SCANCODE_UNKNOWN */
200 0x0000u, /* SDLK_WORLD_9 -> SDL_SCANCODE_UNKNOWN */
201 0x0000u, /* SDLK_WORLD_10 -> SDL_SCANCODE_UNKNOWN */
202 0x0000u, /* SDLK_WORLD_11 -> SDL_SCANCODE_UNKNOWN */
203 0x0000u, /* SDLK_WORLD_12 -> SDL_SCANCODE_UNKNOWN */
204 0x0000u, /* SDLK_WORLD_13 -> SDL_SCANCODE_UNKNOWN */
205 0x0000u, /* SDLK_WORLD_14 -> SDL_SCANCODE_UNKNOWN */
206 0x0000u, /* SDLK_WORLD_15 -> SDL_SCANCODE_UNKNOWN */
207 0x0000u, /* SDLK_WORLD_16 -> SDL_SCANCODE_UNKNOWN */
208 0x0000u, /* SDLK_WORLD_17 -> SDL_SCANCODE_UNKNOWN */
209 0x0000u, /* SDLK_WORLD_18 -> SDL_SCANCODE_UNKNOWN */
210 0x0000u, /* SDLK_WORLD_19 -> SDL_SCANCODE_UNKNOWN */
211 0x0000u, /* SDLK_WORLD_20 -> SDL_SCANCODE_UNKNOWN */
212 0x0000u, /* SDLK_WORLD_21 -> SDL_SCANCODE_UNKNOWN */
213 0x0000u, /* SDLK_WORLD_22 -> SDL_SCANCODE_UNKNOWN */
214 0x0000u, /* SDLK_WORLD_23 -> SDL_SCANCODE_UNKNOWN */
215 0x0000u, /* SDLK_WORLD_24 -> SDL_SCANCODE_UNKNOWN */
216 0x0000u, /* SDLK_WORLD_25 -> SDL_SCANCODE_UNKNOWN */
217 0x0000u, /* SDLK_WORLD_26 -> SDL_SCANCODE_UNKNOWN */
218 0x0000u, /* SDLK_WORLD_27 -> SDL_SCANCODE_UNKNOWN */
219 0x0000u, /* SDLK_WORLD_28 -> SDL_SCANCODE_UNKNOWN */
220 0x0000u, /* SDLK_WORLD_29 -> SDL_SCANCODE_UNKNOWN */
221 0x0000u, /* SDLK_WORLD_30 -> SDL_SCANCODE_UNKNOWN */
222 0x0000u, /* SDLK_WORLD_31 -> SDL_SCANCODE_UNKNOWN */
223 0x0000u, /* SDLK_WORLD_32 -> SDL_SCANCODE_UNKNOWN */
224 0x0000u, /* SDLK_WORLD_33 -> SDL_SCANCODE_UNKNOWN */
225 0x0000u, /* SDLK_WORLD_34 -> SDL_SCANCODE_UNKNOWN */
226 0x0000u, /* SDLK_WORLD_35 -> SDL_SCANCODE_UNKNOWN */
227 0x0000u, /* SDLK_WORLD_36 -> SDL_SCANCODE_UNKNOWN */
228 0x0000u, /* SDLK_WORLD_37 -> SDL_SCANCODE_UNKNOWN */
229 0x0000u, /* SDLK_WORLD_38 -> SDL_SCANCODE_UNKNOWN */
230 0x0000u, /* SDLK_WORLD_39 -> SDL_SCANCODE_UNKNOWN */
231 0x0000u, /* SDLK_WORLD_40 -> SDL_SCANCODE_UNKNOWN */
232 0x0000u, /* SDLK_WORLD_41 -> SDL_SCANCODE_UNKNOWN */
233 0x0000u, /* SDLK_WORLD_42 -> SDL_SCANCODE_UNKNOWN */
234 0x0000u, /* SDLK_WORLD_43 -> SDL_SCANCODE_UNKNOWN */
235 0x0000u, /* SDLK_WORLD_44 -> SDL_SCANCODE_UNKNOWN */
236 0x0000u, /* SDLK_WORLD_45 -> SDL_SCANCODE_UNKNOWN */
237 0x0000u, /* SDLK_WORLD_46 -> SDL_SCANCODE_UNKNOWN */
238 0x0000u, /* SDLK_WORLD_47 -> SDL_SCANCODE_UNKNOWN */
239 0x0000u, /* SDLK_WORLD_48 -> SDL_SCANCODE_UNKNOWN */
240 0x0000u, /* SDLK_WORLD_49 -> SDL_SCANCODE_UNKNOWN */
241 0x0000u, /* SDLK_WORLD_50 -> SDL_SCANCODE_UNKNOWN */
242 0x0000u, /* SDLK_WORLD_51 -> SDL_SCANCODE_UNKNOWN */
243 0x0000u, /* SDLK_WORLD_52 -> SDL_SCANCODE_UNKNOWN */
244 0x0000u, /* SDLK_WORLD_53 -> SDL_SCANCODE_UNKNOWN */
245 0x0000u, /* SDLK_WORLD_54 -> SDL_SCANCODE_UNKNOWN */
246 0x0000u, /* SDLK_WORLD_55 -> SDL_SCANCODE_UNKNOWN */
247 0x0000u, /* SDLK_WORLD_56 -> SDL_SCANCODE_UNKNOWN */
248 0x0000u, /* SDLK_WORLD_57 -> SDL_SCANCODE_UNKNOWN */
249 0x0000u, /* SDLK_WORLD_58 -> SDL_SCANCODE_UNKNOWN */
250 0x0000u, /* SDLK_WORLD_59 -> SDL_SCANCODE_UNKNOWN */
251 0x0000u, /* SDLK_WORLD_60 -> SDL_SCANCODE_UNKNOWN */
252 0x0000u, /* SDLK_WORLD_61 -> SDL_SCANCODE_UNKNOWN */
253 0x0000u, /* SDLK_WORLD_62 -> SDL_SCANCODE_UNKNOWN */
254 0x0000u, /* SDLK_WORLD_63 -> SDL_SCANCODE_UNKNOWN */
255 0x0000u, /* SDLK_WORLD_64 -> SDL_SCANCODE_UNKNOWN */
256 0x0000u, /* SDLK_WORLD_65 -> SDL_SCANCODE_UNKNOWN */
257 0x0000u, /* SDLK_WORLD_66 -> SDL_SCANCODE_UNKNOWN */
258 0x0000u, /* SDLK_WORLD_67 -> SDL_SCANCODE_UNKNOWN */
259 0x0000u, /* SDLK_WORLD_68 -> SDL_SCANCODE_UNKNOWN */
260 0x0000u, /* SDLK_WORLD_69 -> SDL_SCANCODE_UNKNOWN */
261 0x0000u, /* SDLK_WORLD_70 -> SDL_SCANCODE_UNKNOWN */
262 0x0000u, /* SDLK_WORLD_71 -> SDL_SCANCODE_UNKNOWN */
263 0x0000u, /* SDLK_WORLD_72 -> SDL_SCANCODE_UNKNOWN */
264 0x0000u, /* SDLK_WORLD_73 -> SDL_SCANCODE_UNKNOWN */
265 0x0000u, /* SDLK_WORLD_74 -> SDL_SCANCODE_UNKNOWN */
266 0x0000u, /* SDLK_WORLD_75 -> SDL_SCANCODE_UNKNOWN */
267 0x0000u, /* SDLK_WORLD_76 -> SDL_SCANCODE_UNKNOWN */
268 0x0000u, /* SDLK_WORLD_77 -> SDL_SCANCODE_UNKNOWN */
269 0x0000u, /* SDLK_WORLD_78 -> SDL_SCANCODE_UNKNOWN */
270 0x0000u, /* SDLK_WORLD_79 -> SDL_SCANCODE_UNKNOWN */
271 0x0000u, /* SDLK_WORLD_80 -> SDL_SCANCODE_UNKNOWN */
272 0x0000u, /* SDLK_WORLD_81 -> SDL_SCANCODE_UNKNOWN */
273 0x0000u, /* SDLK_WORLD_82 -> SDL_SCANCODE_UNKNOWN */
274 0x0000u, /* SDLK_WORLD_83 -> SDL_SCANCODE_UNKNOWN */
275 0x0000u, /* SDLK_WORLD_84 -> SDL_SCANCODE_UNKNOWN */
276 0x0000u, /* SDLK_WORLD_85 -> SDL_SCANCODE_UNKNOWN */
277 0x0000u, /* SDLK_WORLD_86 -> SDL_SCANCODE_UNKNOWN */
278 0x0000u, /* SDLK_WORLD_87 -> SDL_SCANCODE_UNKNOWN */
279 0x0000u, /* SDLK_WORLD_88 -> SDL_SCANCODE_UNKNOWN */
280 0x0000u, /* SDLK_WORLD_89 -> SDL_SCANCODE_UNKNOWN */
281 0x0000u, /* SDLK_WORLD_90 -> SDL_SCANCODE_UNKNOWN */
282 0x0000u, /* SDLK_WORLD_91 -> SDL_SCANCODE_UNKNOWN */
283 0x0000u, /* SDLK_WORLD_92 -> SDL_SCANCODE_UNKNOWN */
284 0x0000u, /* SDLK_WORLD_93 -> SDL_SCANCODE_UNKNOWN */
285 0x0000u, /* SDLK_WORLD_94 -> SDL_SCANCODE_UNKNOWN */
286 0x0000u, /* SDLK_WORLD_95 -> SDL_SCANCODE_UNKNOWN */
287 0x0062u, /* SDLK_KP0 -> SDL_SCANCODE_KP_0 */
288 0x0059u, /* SDLK_KP1 -> SDL_SCANCODE_KP_1 */
289 0x005au, /* SDLK_KP2 -> SDL_SCANCODE_KP_2 */
290 0x005bu, /* SDLK_KP3 -> SDL_SCANCODE_KP_3 */
291 0x005cu, /* SDLK_KP4 -> SDL_SCANCODE_KP_4 */
292 0x005du, /* SDLK_KP5 -> SDL_SCANCODE_KP_5 */
293 0x005eu, /* SDLK_KP6 -> SDL_SCANCODE_KP_6 */
294 0x005fu, /* SDLK_KP7 -> SDL_SCANCODE_KP_7 */
295 0x0060u, /* SDLK_KP8 -> SDL_SCANCODE_KP_8 */
296 0x0061u, /* SDLK_KP9 -> SDL_SCANCODE_KP_9 */
297 0x0063u, /* SDLK_KP_PERIOD -> SDL_SCANCODE_KP_PERIOD */
298 0x0054u, /* SDLK_KP_DIVIDE -> SDL_SCANCODE_KP_DIVIDE */
299 0x0055u, /* SDLK_KP_MULTIPLY -> SDL_SCANCODE_KP_MULTIPLY */
300 0x0056u, /* SDLK_KP_MINUS -> SDL_SCANCODE_KP_MINUS */
301 0x0057u, /* SDLK_KP_PLUS -> SDL_SCANCODE_KP_PLUS */
302 0x0058u, /* SDLK_KP_ENTER -> SDL_SCANCODE_KP_ENTER */
303 0x0067u, /* SDLK_KP_EQUALS -> SDL_SCANCODE_KP_EQUALS */
304 0x0052u, /* SDLK_UP -> SDL_SCANCODE_UP */
305 0x0051u, /* SDLK_DOWN -> SDL_SCANCODE_DOWN */
306 0x004fu, /* SDLK_RIGHT -> SDL_SCANCODE_RIGHT */
307 0x0050u, /* SDLK_LEFT -> SDL_SCANCODE_LEFT */
308 0x0049u, /* SDLK_INSERT -> SDL_SCANCODE_INSERT */
309 0x004au, /* SDLK_HOME -> SDL_SCANCODE_HOME */
310 0x004du, /* SDLK_END -> SDL_SCANCODE_END */
311 0x004bu, /* SDLK_PAGEUP -> SDL_SCANCODE_PAGEUP */
312 0x004eu, /* SDLK_PAGEDOWN -> SDL_SCANCODE_PAGEDOWN */
313 0x003au, /* SDLK_F1 -> SDL_SCANCODE_F1 */
314 0x003bu, /* SDLK_F2 -> SDL_SCANCODE_F2 */
315 0x003cu, /* SDLK_F3 -> SDL_SCANCODE_F3 */
316 0x003du, /* SDLK_F4 -> SDL_SCANCODE_F4 */
317 0x003eu, /* SDLK_F5 -> SDL_SCANCODE_F5 */
318 0x003fu, /* SDLK_F6 -> SDL_SCANCODE_F6 */
319 0x0040u, /* SDLK_F7 -> SDL_SCANCODE_F7 */
320 0x0041u, /* SDLK_F8 -> SDL_SCANCODE_F8 */
321 0x0042u, /* SDLK_F9 -> SDL_SCANCODE_F9 */
322 0x0043u, /* SDLK_F10 -> SDL_SCANCODE_F10 */
323 0x0044u, /* SDLK_F11 -> SDL_SCANCODE_F11 */
324 0x0045u, /* SDLK_F12 -> SDL_SCANCODE_F12 */
325 0x0068u, /* SDLK_F13 -> SDL_SCANCODE_F13 */
326 0x0069u, /* SDLK_F14 -> SDL_SCANCODE_F14 */
327 0x006au, /* SDLK_F15 -> SDL_SCANCODE_F15 */
328 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
329 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
330 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */
331 0x0053u, /* SDLK_NUMLOCK -> SDL_SCANCODE_NUMLOCKCLEAR */
332 0x0039u, /* SDLK_CAPSLOCK -> SDL_SCANCODE_CAPSLOCK */
333 0x0000u, /* SDLK_SCROLLOCK -> SDL_SCANCODE_UNKNOWN */
334 0x00e5u, /* SDLK_RSHIFT -> SDL_SCANCODE_RSHIFT */
335 0x00e1u, /* SDLK_LSHIFT -> SDL_SCANCODE_LSHIFT */
336 0x00e4u, /* SDLK_RCTRL -> SDL_SCANCODE_RCTRL */
337 0x00e0u, /* SDLK_LCTRL -> SDL_SCANCODE_LCTRL */
338 0x00e6u, /* SDLK_RALT -> SDL_SCANCODE_RALT */
339 0x00e2u, /* SDLK_LALT -> SDL_SCANCODE_LALT */
340 0x0000u, /* SDLK_RMETA -> SDL_SCANCODE_UNKNOWN */
341 0x0000u, /* SDLK_LMETA -> SDL_SCANCODE_UNKNOWN */
342 0x00e3u, /* SDLK_LSUPER -> SDL_SCANCODE_LGUI */
343 0x00e7u, /* SDLK_RSUPER -> SDL_SCANCODE_RGUI */
344 0x0101u, /* SDLK_MODE -> SDL_SCANCODE_MODE */
345 0x0000u, /* SDLK_COMPOSE -> SDL_SCANCODE_UNKNOWN */
346 0x0075u, /* SDLK_HELP -> SDL_SCANCODE_HELP */
347 0x0000u, /* SDLK_PRINT -> SDL_SCANCODE_UNKNOWN */
348 0x009au, /* SDLK_SYSREQ -> SDL_SCANCODE_SYSREQ */
349 0x0000u, /* SDLK_BREAK -> SDL_SCANCODE_UNKNOWN */
350 0x0076u, /* SDLK_MENU -> SDL_SCANCODE_MENU */
351 0x0066u, /* SDLK_POWER -> SDL_SCANCODE_POWER */
352 0x0000u, /* SDLK_EURO -> SDL_SCANCODE_UNKNOWN */
353 0x007au, /* SDLK_UNDO -> SDL_SCANCODE_UNDO */
354 };
355
356 if (keysym >= ARRAY_SIZE(keysym2scancode))
357 return 0;
358 return keysym2scancode[keysym];
359}
360
361uint16_t sdl_scancode2keysym(uint16_t scancode)
362{
363 static const uint16_t scancode2keysym[285] = {
364 0x0000u, /* unassigned -> SDLK_UNKNOWN */
365 0x0000u, /* unassigned -> SDLK_UNKNOWN */
366 0x0000u, /* unassigned -> SDLK_UNKNOWN */
367 0x0000u, /* unassigned -> SDLK_UNKNOWN */
368 0x0061u, /* SDL_SCANCODE_A -> SDLK_a */
369 0x0062u, /* SDL_SCANCODE_B -> SDLK_b */
370 0x0063u, /* SDL_SCANCODE_C -> SDLK_c */
371 0x0064u, /* SDL_SCANCODE_D -> SDLK_d */
372 0x0065u, /* SDL_SCANCODE_E -> SDLK_e */
373 0x0066u, /* SDL_SCANCODE_F -> SDLK_f */
374 0x0067u, /* SDL_SCANCODE_G -> SDLK_g */
375 0x0068u, /* SDL_SCANCODE_H -> SDLK_h */
376 0x0069u, /* SDL_SCANCODE_I -> SDLK_i */
377 0x006au, /* SDL_SCANCODE_J -> SDLK_j */
378 0x006bu, /* SDL_SCANCODE_K -> SDLK_k */
379 0x006cu, /* SDL_SCANCODE_L -> SDLK_l */
380 0x006du, /* SDL_SCANCODE_M -> SDLK_m */
381 0x006eu, /* SDL_SCANCODE_N -> SDLK_n */
382 0x006fu, /* SDL_SCANCODE_O -> SDLK_o */
383 0x0070u, /* SDL_SCANCODE_P -> SDLK_p */
384 0x0071u, /* SDL_SCANCODE_Q -> SDLK_q */
385 0x0072u, /* SDL_SCANCODE_R -> SDLK_r */
386 0x0073u, /* SDL_SCANCODE_S -> SDLK_s */
387 0x0074u, /* SDL_SCANCODE_T -> SDLK_t */
388 0x0075u, /* SDL_SCANCODE_U -> SDLK_u */
389 0x0076u, /* SDL_SCANCODE_V -> SDLK_v */
390 0x0077u, /* SDL_SCANCODE_W -> SDLK_w */
391 0x0078u, /* SDL_SCANCODE_X -> SDLK_x */
392 0x0079u, /* SDL_SCANCODE_Y -> SDLK_y */
393 0x007au, /* SDL_SCANCODE_Z -> SDLK_z */
394 0x0031u, /* SDL_SCANCODE_1 -> SDLK_1 */
395 0x0032u, /* SDL_SCANCODE_2 -> SDLK_2 */
396 0x0033u, /* SDL_SCANCODE_3 -> SDLK_3 */
397 0x0034u, /* SDL_SCANCODE_4 -> SDLK_4 */
398 0x0035u, /* SDL_SCANCODE_5 -> SDLK_5 */
399 0x0036u, /* SDL_SCANCODE_6 -> SDLK_6 */
400 0x0037u, /* SDL_SCANCODE_7 -> SDLK_7 */
401 0x0038u, /* SDL_SCANCODE_8 -> SDLK_8 */
402 0x0039u, /* SDL_SCANCODE_9 -> SDLK_9 */
403 0x0030u, /* SDL_SCANCODE_0 -> SDLK_0 */
404 0x000du, /* SDL_SCANCODE_RETURN -> SDLK_RETURN */
405 0x001bu, /* SDL_SCANCODE_ESCAPE -> SDLK_ESCAPE */
406 0x0008u, /* SDL_SCANCODE_BACKSPACE -> SDLK_BACKSPACE */
407 0x0009u, /* SDL_SCANCODE_TAB -> SDLK_TAB */
408 0x0020u, /* SDL_SCANCODE_SPACE -> SDLK_SPACE */
409 0x002du, /* SDL_SCANCODE_MINUS -> SDLK_MINUS */
410 0x003du, /* SDL_SCANCODE_EQUALS -> SDLK_EQUALS */
411 0x005bu, /* SDL_SCANCODE_LEFTBRACKET -> SDLK_LEFTBRACKET */
412 0x005du, /* SDL_SCANCODE_RIGHTBRACKET -> SDLK_RIGHTBRACKET */
413 0x005cu, /* SDL_SCANCODE_BACKSLASH -> SDLK_BACKSLASH */
414 0x0000u, /* SDL_SCANCODE_NONUSHASH -> SDLK_UNKNOWN */
415 0x003bu, /* SDL_SCANCODE_SEMICOLON -> SDLK_SEMICOLON */
416 0x0000u, /* SDL_SCANCODE_APOSTROPHE -> SDLK_UNKNOWN */
417 0x0000u, /* SDL_SCANCODE_GRAVE -> SDLK_UNKNOWN */
418 0x002cu, /* SDL_SCANCODE_COMMA -> SDLK_COMMA */
419 0x002eu, /* SDL_SCANCODE_PERIOD -> SDLK_PERIOD */
420 0x002fu, /* SDL_SCANCODE_SLASH -> SDLK_SLASH */
421 0x012du, /* SDL_SCANCODE_CAPSLOCK -> SDLK_CAPSLOCK */
422 0x011au, /* SDL_SCANCODE_F1 -> SDLK_F1 */
423 0x011bu, /* SDL_SCANCODE_F2 -> SDLK_F2 */
424 0x011cu, /* SDL_SCANCODE_F3 -> SDLK_F3 */
425 0x011du, /* SDL_SCANCODE_F4 -> SDLK_F4 */
426 0x011eu, /* SDL_SCANCODE_F5 -> SDLK_F5 */
427 0x011fu, /* SDL_SCANCODE_F6 -> SDLK_F6 */
428 0x0120u, /* SDL_SCANCODE_F7 -> SDLK_F7 */
429 0x0121u, /* SDL_SCANCODE_F8 -> SDLK_F8 */
430 0x0122u, /* SDL_SCANCODE_F9 -> SDLK_F9 */
431 0x0123u, /* SDL_SCANCODE_F10 -> SDLK_F10 */
432 0x0124u, /* SDL_SCANCODE_F11 -> SDLK_F11 */
433 0x0125u, /* SDL_SCANCODE_F12 -> SDLK_F12 */
434 0x0000u, /* SDL_SCANCODE_PRINTSCREEN -> SDLK_UNKNOWN */
435 0x0000u, /* SDL_SCANCODE_SCROLLLOCK -> SDLK_UNKNOWN */
436 0x0013u, /* SDL_SCANCODE_PAUSE -> SDLK_PAUSE */
437 0x0115u, /* SDL_SCANCODE_INSERT -> SDLK_INSERT */
438 0x0116u, /* SDL_SCANCODE_HOME -> SDLK_HOME */
439 0x0118u, /* SDL_SCANCODE_PAGEUP -> SDLK_PAGEUP */
440 0x007fu, /* SDL_SCANCODE_DELETE -> SDLK_DELETE */
441 0x0117u, /* SDL_SCANCODE_END -> SDLK_END */
442 0x0119u, /* SDL_SCANCODE_PAGEDOWN -> SDLK_PAGEDOWN */
443 0x0113u, /* SDL_SCANCODE_RIGHT -> SDLK_RIGHT */
444 0x0114u, /* SDL_SCANCODE_LEFT -> SDLK_LEFT */
445 0x0112u, /* SDL_SCANCODE_DOWN -> SDLK_DOWN */
446 0x0111u, /* SDL_SCANCODE_UP -> SDLK_UP */
447 0x012cu, /* SDL_SCANCODE_NUMLOCKCLEAR -> SDLK_NUMLOCK */
448 0x010bu, /* SDL_SCANCODE_KP_DIVIDE -> SDLK_KP_DIVIDE */
449 0x010cu, /* SDL_SCANCODE_KP_MULTIPLY -> SDLK_KP_MULTIPLY */
450 0x010du, /* SDL_SCANCODE_KP_MINUS -> SDLK_KP_MINUS */
451 0x010eu, /* SDL_SCANCODE_KP_PLUS -> SDLK_KP_PLUS */
452 0x010fu, /* SDL_SCANCODE_KP_ENTER -> SDLK_KP_ENTER */
453 0x0101u, /* SDL_SCANCODE_KP_1 -> SDLK_KP1 */
454 0x0102u, /* SDL_SCANCODE_KP_2 -> SDLK_KP2 */
455 0x0103u, /* SDL_SCANCODE_KP_3 -> SDLK_KP3 */
456 0x0104u, /* SDL_SCANCODE_KP_4 -> SDLK_KP4 */
457 0x0105u, /* SDL_SCANCODE_KP_5 -> SDLK_KP5 */
458 0x0106u, /* SDL_SCANCODE_KP_6 -> SDLK_KP6 */
459 0x0107u, /* SDL_SCANCODE_KP_7 -> SDLK_KP7 */
460 0x0108u, /* SDL_SCANCODE_KP_8 -> SDLK_KP8 */
461 0x0109u, /* SDL_SCANCODE_KP_9 -> SDLK_KP9 */
462 0x0100u, /* SDL_SCANCODE_KP_0 -> SDLK_KP0 */
463 0x010au, /* SDL_SCANCODE_KP_PERIOD -> SDLK_KP_PERIOD */
464 0x0000u, /* SDL_SCANCODE_NONUSBACKSLASH -> SDLK_UNKNOWN */
465 0x0000u, /* SDL_SCANCODE_APPLICATION -> SDLK_UNKNOWN */
466 0x0140u, /* SDL_SCANCODE_POWER -> SDLK_POWER */
467 0x0110u, /* SDL_SCANCODE_KP_EQUALS -> SDLK_KP_EQUALS */
468 0x0126u, /* SDL_SCANCODE_F13 -> SDLK_F13 */
469 0x0127u, /* SDL_SCANCODE_F14 -> SDLK_F14 */
470 0x0128u, /* SDL_SCANCODE_F15 -> SDLK_F15 */
471 0x0000u, /* SDL_SCANCODE_F16 -> SDLK_UNKNOWN */
472 0x0000u, /* SDL_SCANCODE_F17 -> SDLK_UNKNOWN */
473 0x0000u, /* SDL_SCANCODE_F18 -> SDLK_UNKNOWN */
474 0x0000u, /* SDL_SCANCODE_F19 -> SDLK_UNKNOWN */
475 0x0000u, /* SDL_SCANCODE_F20 -> SDLK_UNKNOWN */
476 0x0000u, /* SDL_SCANCODE_F21 -> SDLK_UNKNOWN */
477 0x0000u, /* SDL_SCANCODE_F22 -> SDLK_UNKNOWN */
478 0x0000u, /* SDL_SCANCODE_F23 -> SDLK_UNKNOWN */
479 0x0000u, /* SDL_SCANCODE_F24 -> SDLK_UNKNOWN */
480 0x0000u, /* SDL_SCANCODE_EXECUTE -> SDLK_UNKNOWN */
481 0x013bu, /* SDL_SCANCODE_HELP -> SDLK_HELP */
482 0x013fu, /* SDL_SCANCODE_MENU -> SDLK_MENU */
483 0x0000u, /* SDL_SCANCODE_SELECT -> SDLK_UNKNOWN */
484 0x0000u, /* SDL_SCANCODE_STOP -> SDLK_UNKNOWN */
485 0x0000u, /* SDL_SCANCODE_AGAIN -> SDLK_UNKNOWN */
486 0x0142u, /* SDL_SCANCODE_UNDO -> SDLK_UNDO */
487 0x0000u, /* SDL_SCANCODE_CUT -> SDLK_UNKNOWN */
488 0x0000u, /* SDL_SCANCODE_COPY -> SDLK_UNKNOWN */
489 0x0000u, /* SDL_SCANCODE_PASTE -> SDLK_UNKNOWN */
490 0x0000u, /* SDL_SCANCODE_FIND -> SDLK_UNKNOWN */
491 0x0000u, /* SDL_SCANCODE_MUTE -> SDLK_UNKNOWN */
492 0x0000u, /* SDL_SCANCODE_VOLUMEUP -> SDLK_UNKNOWN */
493 0x0000u, /* SDL_SCANCODE_VOLUMEDOWN -> SDLK_UNKNOWN */
494 0x0000u, /* unassigned -> SDLK_UNKNOWN */
495 0x0000u, /* unassigned -> SDLK_UNKNOWN */
496 0x0000u, /* unassigned -> SDLK_UNKNOWN */
497 0x0000u, /* SDL_SCANCODE_KP_COMMA -> SDLK_UNKNOWN */
498 0x0000u, /* SDL_SCANCODE_KP_EQUALSAS400 -> SDLK_UNKNOWN */
499 0x0000u, /* SDL_SCANCODE_INTERNATIONAL1 -> SDLK_UNKNOWN */
500 0x0000u, /* SDL_SCANCODE_INTERNATIONAL2 -> SDLK_UNKNOWN */
501 0x0000u, /* SDL_SCANCODE_INTERNATIONAL3 -> SDLK_UNKNOWN */
502 0x0000u, /* SDL_SCANCODE_INTERNATIONAL4 -> SDLK_UNKNOWN */
503 0x0000u, /* SDL_SCANCODE_INTERNATIONAL5 -> SDLK_UNKNOWN */
504 0x0000u, /* SDL_SCANCODE_INTERNATIONAL6 -> SDLK_UNKNOWN */
505 0x0000u, /* SDL_SCANCODE_INTERNATIONAL7 -> SDLK_UNKNOWN */
506 0x0000u, /* SDL_SCANCODE_INTERNATIONAL8 -> SDLK_UNKNOWN */
507 0x0000u, /* SDL_SCANCODE_INTERNATIONAL9 -> SDLK_UNKNOWN */
508 0x0000u, /* SDL_SCANCODE_LANG1 -> SDLK_UNKNOWN */
509 0x0000u, /* SDL_SCANCODE_LANG2 -> SDLK_UNKNOWN */
510 0x0000u, /* SDL_SCANCODE_LANG3 -> SDLK_UNKNOWN */
511 0x0000u, /* SDL_SCANCODE_LANG4 -> SDLK_UNKNOWN */
512 0x0000u, /* SDL_SCANCODE_LANG5 -> SDLK_UNKNOWN */
513 0x0000u, /* SDL_SCANCODE_LANG6 -> SDLK_UNKNOWN */
514 0x0000u, /* SDL_SCANCODE_LANG7 -> SDLK_UNKNOWN */
515 0x0000u, /* SDL_SCANCODE_LANG8 -> SDLK_UNKNOWN */
516 0x0000u, /* SDL_SCANCODE_LANG9 -> SDLK_UNKNOWN */
517 0x0000u, /* SDL_SCANCODE_ALTERASE -> SDLK_UNKNOWN */
518 0x013du, /* SDL_SCANCODE_SYSREQ -> SDLK_SYSREQ */
519 0x0000u, /* SDL_SCANCODE_CANCEL -> SDLK_UNKNOWN */
520 0x000cu, /* SDL_SCANCODE_CLEAR -> SDLK_CLEAR */
521 0x0000u, /* SDL_SCANCODE_PRIOR -> SDLK_UNKNOWN */
522 0x0000u, /* SDL_SCANCODE_RETURN2 -> SDLK_UNKNOWN */
523 0x0000u, /* SDL_SCANCODE_SEPARATOR -> SDLK_UNKNOWN */
524 0x0000u, /* SDL_SCANCODE_OUT -> SDLK_UNKNOWN */
525 0x0000u, /* SDL_SCANCODE_OPER -> SDLK_UNKNOWN */
526 0x0000u, /* SDL_SCANCODE_CLEARAGAIN -> SDLK_UNKNOWN */
527 0x0000u, /* SDL_SCANCODE_CRSEL -> SDLK_UNKNOWN */
528 0x0000u, /* SDL_SCANCODE_EXSEL -> SDLK_UNKNOWN */
529 0x0000u, /* unassigned -> SDLK_UNKNOWN */
530 0x0000u, /* unassigned -> SDLK_UNKNOWN */
531 0x0000u, /* unassigned -> SDLK_UNKNOWN */
532 0x0000u, /* unassigned -> SDLK_UNKNOWN */
533 0x0000u, /* unassigned -> SDLK_UNKNOWN */
534 0x0000u, /* unassigned -> SDLK_UNKNOWN */
535 0x0000u, /* unassigned -> SDLK_UNKNOWN */
536 0x0000u, /* unassigned -> SDLK_UNKNOWN */
537 0x0000u, /* unassigned -> SDLK_UNKNOWN */
538 0x0000u, /* unassigned -> SDLK_UNKNOWN */
539 0x0000u, /* unassigned -> SDLK_UNKNOWN */
540 0x0000u, /* SDL_SCANCODE_KP_00 -> SDLK_UNKNOWN */
541 0x0000u, /* SDL_SCANCODE_KP_000 -> SDLK_UNKNOWN */
542 0x0000u, /* SDL_SCANCODE_THOUSANDSSEPARATOR -> SDLK_UNKNOWN */
543 0x0000u, /* SDL_SCANCODE_DECIMALSEPARATOR -> SDLK_UNKNOWN */
544 0x0000u, /* SDL_SCANCODE_CURRENCYUNIT -> SDLK_UNKNOWN */
545 0x0000u, /* SDL_SCANCODE_CURRENCYSUBUNIT -> SDLK_UNKNOWN */
546 0x0000u, /* SDL_SCANCODE_KP_LEFTPAREN -> SDLK_UNKNOWN */
547 0x0000u, /* SDL_SCANCODE_KP_RIGHTPAREN -> SDLK_UNKNOWN */
548 0x0000u, /* SDL_SCANCODE_KP_LEFTBRACE -> SDLK_UNKNOWN */
549 0x0000u, /* SDL_SCANCODE_KP_RIGHTBRACE -> SDLK_UNKNOWN */
550 0x0000u, /* SDL_SCANCODE_KP_TAB -> SDLK_UNKNOWN */
551 0x0000u, /* SDL_SCANCODE_KP_BACKSPACE -> SDLK_UNKNOWN */
552 0x0000u, /* SDL_SCANCODE_KP_A -> SDLK_UNKNOWN */
553 0x0000u, /* SDL_SCANCODE_KP_B -> SDLK_UNKNOWN */
554 0x0000u, /* SDL_SCANCODE_KP_C -> SDLK_UNKNOWN */
555 0x0000u, /* SDL_SCANCODE_KP_D -> SDLK_UNKNOWN */
556 0x0000u, /* SDL_SCANCODE_KP_E -> SDLK_UNKNOWN */
557 0x0000u, /* SDL_SCANCODE_KP_F -> SDLK_UNKNOWN */
558 0x0000u, /* SDL_SCANCODE_KP_XOR -> SDLK_UNKNOWN */
559 0x0000u, /* SDL_SCANCODE_KP_POWER -> SDLK_UNKNOWN */
560 0x0000u, /* SDL_SCANCODE_KP_PERCENT -> SDLK_UNKNOWN */
561 0x0000u, /* SDL_SCANCODE_KP_LESS -> SDLK_UNKNOWN */
562 0x0000u, /* SDL_SCANCODE_KP_GREATER -> SDLK_UNKNOWN */
563 0x0000u, /* SDL_SCANCODE_KP_AMPERSAND -> SDLK_UNKNOWN */
564 0x0000u, /* SDL_SCANCODE_KP_DBLAMPERSAND -> SDLK_UNKNOWN */
565 0x0000u, /* SDL_SCANCODE_KP_VERTICALBAR -> SDLK_UNKNOWN */
566 0x0000u, /* SDL_SCANCODE_KP_DBLVERTICALBAR -> SDLK_UNKNOWN */
567 0x0000u, /* SDL_SCANCODE_KP_COLON -> SDLK_UNKNOWN */
568 0x0000u, /* SDL_SCANCODE_KP_HASH -> SDLK_UNKNOWN */
569 0x0000u, /* SDL_SCANCODE_KP_SPACE -> SDLK_UNKNOWN */
570 0x0000u, /* SDL_SCANCODE_KP_AT -> SDLK_UNKNOWN */
571 0x0000u, /* SDL_SCANCODE_KP_EXCLAM -> SDLK_UNKNOWN */
572 0x0000u, /* SDL_SCANCODE_KP_MEMSTORE -> SDLK_UNKNOWN */
573 0x0000u, /* SDL_SCANCODE_KP_MEMRECALL -> SDLK_UNKNOWN */
574 0x0000u, /* SDL_SCANCODE_KP_MEMCLEAR -> SDLK_UNKNOWN */
575 0x0000u, /* SDL_SCANCODE_KP_MEMADD -> SDLK_UNKNOWN */
576 0x0000u, /* SDL_SCANCODE_KP_MEMSUBTRACT -> SDLK_UNKNOWN */
577 0x0000u, /* SDL_SCANCODE_KP_MEMMULTIPLY -> SDLK_UNKNOWN */
578 0x0000u, /* SDL_SCANCODE_KP_MEMDIVIDE -> SDLK_UNKNOWN */
579 0x0000u, /* SDL_SCANCODE_KP_PLUSMINUS -> SDLK_UNKNOWN */
580 0x0000u, /* SDL_SCANCODE_KP_CLEAR -> SDLK_UNKNOWN */
581 0x0000u, /* SDL_SCANCODE_KP_CLEARENTRY -> SDLK_UNKNOWN */
582 0x0000u, /* SDL_SCANCODE_KP_BINARY -> SDLK_UNKNOWN */
583 0x0000u, /* SDL_SCANCODE_KP_OCTAL -> SDLK_UNKNOWN */
584 0x0000u, /* SDL_SCANCODE_KP_DECIMAL -> SDLK_UNKNOWN */
585 0x0000u, /* SDL_SCANCODE_KP_HEXADECIMAL -> SDLK_UNKNOWN */
586 0x0000u, /* unassigned -> SDLK_UNKNOWN */
587 0x0000u, /* unassigned -> SDLK_UNKNOWN */
588 0x0132u, /* SDL_SCANCODE_LCTRL -> SDLK_LCTRL */
589 0x0130u, /* SDL_SCANCODE_LSHIFT -> SDLK_LSHIFT */
590 0x0134u, /* SDL_SCANCODE_LALT -> SDLK_LALT */
591 0x0137u, /* SDL_SCANCODE_LGUI -> SDLK_LSUPER */
592 0x0131u, /* SDL_SCANCODE_RCTRL -> SDLK_RCTRL */
593 0x012fu, /* SDL_SCANCODE_RSHIFT -> SDLK_RSHIFT */
594 0x0133u, /* SDL_SCANCODE_RALT -> SDLK_RALT */
595 0x0138u, /* SDL_SCANCODE_RGUI -> SDLK_RSUPER */
596 0x0000u, /* unassigned -> SDLK_UNKNOWN */
597 0x0000u, /* unassigned -> SDLK_UNKNOWN */
598 0x0000u, /* unassigned -> SDLK_UNKNOWN */
599 0x0000u, /* unassigned -> SDLK_UNKNOWN */
600 0x0000u, /* unassigned -> SDLK_UNKNOWN */
601 0x0000u, /* unassigned -> SDLK_UNKNOWN */
602 0x0000u, /* unassigned -> SDLK_UNKNOWN */
603 0x0000u, /* unassigned -> SDLK_UNKNOWN */
604 0x0000u, /* unassigned -> SDLK_UNKNOWN */
605 0x0000u, /* unassigned -> SDLK_UNKNOWN */
606 0x0000u, /* unassigned -> SDLK_UNKNOWN */
607 0x0000u, /* unassigned -> SDLK_UNKNOWN */
608 0x0000u, /* unassigned -> SDLK_UNKNOWN */
609 0x0000u, /* unassigned -> SDLK_UNKNOWN */
610 0x0000u, /* unassigned -> SDLK_UNKNOWN */
611 0x0000u, /* unassigned -> SDLK_UNKNOWN */
612 0x0000u, /* unassigned -> SDLK_UNKNOWN */
613 0x0000u, /* unassigned -> SDLK_UNKNOWN */
614 0x0000u, /* unassigned -> SDLK_UNKNOWN */
615 0x0000u, /* unassigned -> SDLK_UNKNOWN */
616 0x0000u, /* unassigned -> SDLK_UNKNOWN */
617 0x0000u, /* unassigned -> SDLK_UNKNOWN */
618 0x0000u, /* unassigned -> SDLK_UNKNOWN */
619 0x0000u, /* unassigned -> SDLK_UNKNOWN */
620 0x0000u, /* unassigned -> SDLK_UNKNOWN */
621 0x0139u, /* SDL_SCANCODE_MODE -> SDLK_MODE */
622 0x0000u, /* SDL_SCANCODE_AUDIONEXT -> SDLK_UNKNOWN */
623 0x0000u, /* SDL_SCANCODE_AUDIOPREV -> SDLK_UNKNOWN */
624 0x0000u, /* SDL_SCANCODE_AUDIOSTOP -> SDLK_UNKNOWN */
625 0x0000u, /* SDL_SCANCODE_AUDIOPLAY -> SDLK_UNKNOWN */
626 0x0000u, /* SDL_SCANCODE_AUDIOMUTE -> SDLK_UNKNOWN */
627 0x0000u, /* SDL_SCANCODE_MEDIASELECT -> SDLK_UNKNOWN */
628 0x0000u, /* SDL_SCANCODE_WWW -> SDLK_UNKNOWN */
629 0x0000u, /* SDL_SCANCODE_MAIL -> SDLK_UNKNOWN */
630 0x0000u, /* SDL_SCANCODE_CALCULATOR -> SDLK_UNKNOWN */
631 0x0000u, /* SDL_SCANCODE_COMPUTER -> SDLK_UNKNOWN */
632 0x0000u, /* SDL_SCANCODE_AC_SEARCH -> SDLK_UNKNOWN */
633 0x0000u, /* SDL_SCANCODE_AC_HOME -> SDLK_UNKNOWN */
634 0x0000u, /* SDL_SCANCODE_AC_BACK -> SDLK_UNKNOWN */
635 0x0000u, /* SDL_SCANCODE_AC_FORWARD -> SDLK_UNKNOWN */
636 0x0000u, /* SDL_SCANCODE_AC_STOP -> SDLK_UNKNOWN */
637 0x0000u, /* SDL_SCANCODE_AC_REFRESH -> SDLK_UNKNOWN */
638 0x0000u, /* SDL_SCANCODE_AC_BOOKMARKS -> SDLK_UNKNOWN */
639 0x0000u, /* SDL_SCANCODE_BRIGHTNESSDOWN -> SDLK_UNKNOWN */
640 0x0000u, /* SDL_SCANCODE_BRIGHTNESSUP -> SDLK_UNKNOWN */
641 0x0000u, /* SDL_SCANCODE_DISPLAYSWITCH -> SDLK_UNKNOWN */
642 0x0000u, /* SDL_SCANCODE_KBDILLUMTOGGLE -> SDLK_UNKNOWN */
643 0x0000u, /* SDL_SCANCODE_KBDILLUMDOWN -> SDLK_UNKNOWN */
644 0x0000u, /* SDL_SCANCODE_KBDILLUMUP -> SDLK_UNKNOWN */
645 0x0000u, /* SDL_SCANCODE_EJECT -> SDLK_UNKNOWN */
646 0x0000u, /* SDL_SCANCODE_SLEEP -> SDLK_UNKNOWN */
647 0x0000u, /* SDL_SCANCODE_APP1 -> SDLK_UNKNOWN */
648 0x0000u, /* SDL_SCANCODE_APP2 -> SDLK_UNKNOWN */
649 };
650
651 if (scancode >= ARRAY_SIZE(scancode2keysym))
652 return 0;
653 return scancode2keysym[scancode];
654}
655