SDL  2.0
SDL_androidkeyboard.c
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 #include "../../SDL_internal.h"
22 
23 #if SDL_VIDEO_DRIVER_ANDROID
24 
25 #include <android/log.h>
26 
27 #include "../../events/SDL_events_c.h"
28 
29 #include "SDL_androidkeyboard.h"
30 
31 #include "../../core/android/SDL_android.h"
32 
33 void Android_InitKeyboard(void)
34 {
36 
37  /* Add default scancode to key mapping */
38  SDL_GetDefaultKeymap(keymap);
39  SDL_SetKeymap(0, keymap, SDL_NUM_SCANCODES);
40 }
41 
42 static SDL_Scancode Android_Keycodes[] = {
43  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_UNKNOWN */
44  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_SOFT_LEFT */
45  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_SOFT_RIGHT */
46  SDL_SCANCODE_AC_HOME, /* AKEYCODE_HOME */
47  SDL_SCANCODE_AC_BACK, /* AKEYCODE_BACK */
48  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_CALL */
49  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_ENDCALL */
50  SDL_SCANCODE_0, /* AKEYCODE_0 */
51  SDL_SCANCODE_1, /* AKEYCODE_1 */
52  SDL_SCANCODE_2, /* AKEYCODE_2 */
53  SDL_SCANCODE_3, /* AKEYCODE_3 */
54  SDL_SCANCODE_4, /* AKEYCODE_4 */
55  SDL_SCANCODE_5, /* AKEYCODE_5 */
56  SDL_SCANCODE_6, /* AKEYCODE_6 */
57  SDL_SCANCODE_7, /* AKEYCODE_7 */
58  SDL_SCANCODE_8, /* AKEYCODE_8 */
59  SDL_SCANCODE_9, /* AKEYCODE_9 */
60  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_STAR */
61  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_POUND */
62  SDL_SCANCODE_UP, /* AKEYCODE_DPAD_UP */
63  SDL_SCANCODE_DOWN, /* AKEYCODE_DPAD_DOWN */
64  SDL_SCANCODE_LEFT, /* AKEYCODE_DPAD_LEFT */
65  SDL_SCANCODE_RIGHT, /* AKEYCODE_DPAD_RIGHT */
66  SDL_SCANCODE_SELECT, /* AKEYCODE_DPAD_CENTER */
67  SDL_SCANCODE_VOLUMEUP, /* AKEYCODE_VOLUME_UP */
68  SDL_SCANCODE_VOLUMEDOWN, /* AKEYCODE_VOLUME_DOWN */
69  SDL_SCANCODE_POWER, /* AKEYCODE_POWER */
70  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_CAMERA */
71  SDL_SCANCODE_CLEAR, /* AKEYCODE_CLEAR */
72  SDL_SCANCODE_A, /* AKEYCODE_A */
73  SDL_SCANCODE_B, /* AKEYCODE_B */
74  SDL_SCANCODE_C, /* AKEYCODE_C */
75  SDL_SCANCODE_D, /* AKEYCODE_D */
76  SDL_SCANCODE_E, /* AKEYCODE_E */
77  SDL_SCANCODE_F, /* AKEYCODE_F */
78  SDL_SCANCODE_G, /* AKEYCODE_G */
79  SDL_SCANCODE_H, /* AKEYCODE_H */
80  SDL_SCANCODE_I, /* AKEYCODE_I */
81  SDL_SCANCODE_J, /* AKEYCODE_J */
82  SDL_SCANCODE_K, /* AKEYCODE_K */
83  SDL_SCANCODE_L, /* AKEYCODE_L */
84  SDL_SCANCODE_M, /* AKEYCODE_M */
85  SDL_SCANCODE_N, /* AKEYCODE_N */
86  SDL_SCANCODE_O, /* AKEYCODE_O */
87  SDL_SCANCODE_P, /* AKEYCODE_P */
88  SDL_SCANCODE_Q, /* AKEYCODE_Q */
89  SDL_SCANCODE_R, /* AKEYCODE_R */
90  SDL_SCANCODE_S, /* AKEYCODE_S */
91  SDL_SCANCODE_T, /* AKEYCODE_T */
92  SDL_SCANCODE_U, /* AKEYCODE_U */
93  SDL_SCANCODE_V, /* AKEYCODE_V */
94  SDL_SCANCODE_W, /* AKEYCODE_W */
95  SDL_SCANCODE_X, /* AKEYCODE_X */
96  SDL_SCANCODE_Y, /* AKEYCODE_Y */
97  SDL_SCANCODE_Z, /* AKEYCODE_Z */
98  SDL_SCANCODE_COMMA, /* AKEYCODE_COMMA */
99  SDL_SCANCODE_PERIOD, /* AKEYCODE_PERIOD */
100  SDL_SCANCODE_LALT, /* AKEYCODE_ALT_LEFT */
101  SDL_SCANCODE_RALT, /* AKEYCODE_ALT_RIGHT */
102  SDL_SCANCODE_LSHIFT, /* AKEYCODE_SHIFT_LEFT */
103  SDL_SCANCODE_RSHIFT, /* AKEYCODE_SHIFT_RIGHT */
104  SDL_SCANCODE_TAB, /* AKEYCODE_TAB */
105  SDL_SCANCODE_SPACE, /* AKEYCODE_SPACE */
106  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_SYM */
107  SDL_SCANCODE_WWW, /* AKEYCODE_EXPLORER */
108  SDL_SCANCODE_MAIL, /* AKEYCODE_ENVELOPE */
109  SDL_SCANCODE_RETURN, /* AKEYCODE_ENTER */
110  SDL_SCANCODE_BACKSPACE, /* AKEYCODE_DEL */
111  SDL_SCANCODE_GRAVE, /* AKEYCODE_GRAVE */
112  SDL_SCANCODE_MINUS, /* AKEYCODE_MINUS */
113  SDL_SCANCODE_EQUALS, /* AKEYCODE_EQUALS */
114  SDL_SCANCODE_LEFTBRACKET, /* AKEYCODE_LEFT_BRACKET */
115  SDL_SCANCODE_RIGHTBRACKET, /* AKEYCODE_RIGHT_BRACKET */
116  SDL_SCANCODE_BACKSLASH, /* AKEYCODE_BACKSLASH */
117  SDL_SCANCODE_SEMICOLON, /* AKEYCODE_SEMICOLON */
118  SDL_SCANCODE_APOSTROPHE, /* AKEYCODE_APOSTROPHE */
119  SDL_SCANCODE_SLASH, /* AKEYCODE_SLASH */
120  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_AT */
121  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_NUM */
122  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_HEADSETHOOK */
123  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_FOCUS */
124  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_PLUS */
125  SDL_SCANCODE_MENU, /* AKEYCODE_MENU */
126  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_NOTIFICATION */
127  SDL_SCANCODE_AC_SEARCH, /* AKEYCODE_SEARCH */
128  SDL_SCANCODE_AUDIOPLAY, /* AKEYCODE_MEDIA_PLAY_PAUSE */
129  SDL_SCANCODE_AUDIOSTOP, /* AKEYCODE_MEDIA_STOP */
130  SDL_SCANCODE_AUDIONEXT, /* AKEYCODE_MEDIA_NEXT */
131  SDL_SCANCODE_AUDIOPREV, /* AKEYCODE_MEDIA_PREVIOUS */
132  SDL_SCANCODE_AUDIOREWIND, /* AKEYCODE_MEDIA_REWIND */
133  SDL_SCANCODE_AUDIOFASTFORWARD, /* AKEYCODE_MEDIA_FAST_FORWARD */
134  SDL_SCANCODE_MUTE, /* AKEYCODE_MUTE */
135  SDL_SCANCODE_PAGEUP, /* AKEYCODE_PAGE_UP */
136  SDL_SCANCODE_PAGEDOWN, /* AKEYCODE_PAGE_DOWN */
137  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_PICTSYMBOLS */
138  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_SWITCH_CHARSET */
139  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_A */
140  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_B */
141  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_C */
142  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_X */
143  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_Y */
144  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_Z */
145  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_L1 */
146  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_R1 */
147  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_L2 */
148  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_R2 */
149  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_THUMBL */
150  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_THUMBR */
151  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_START */
152  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_SELECT */
153  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_MODE */
154  SDL_SCANCODE_ESCAPE, /* AKEYCODE_ESCAPE */
155  SDL_SCANCODE_DELETE, /* AKEYCODE_FORWARD_DEL */
156  SDL_SCANCODE_LCTRL, /* AKEYCODE_CTRL_LEFT */
157  SDL_SCANCODE_RCTRL, /* AKEYCODE_CTRL_RIGHT */
158  SDL_SCANCODE_CAPSLOCK, /* AKEYCODE_CAPS_LOCK */
159  SDL_SCANCODE_SCROLLLOCK, /* AKEYCODE_SCROLL_LOCK */
160  SDL_SCANCODE_LGUI, /* AKEYCODE_META_LEFT */
161  SDL_SCANCODE_RGUI, /* AKEYCODE_META_RIGHT */
162  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_FUNCTION */
163  SDL_SCANCODE_PRINTSCREEN, /* AKEYCODE_SYSRQ */
164  SDL_SCANCODE_PAUSE, /* AKEYCODE_BREAK */
165  SDL_SCANCODE_HOME, /* AKEYCODE_MOVE_HOME */
166  SDL_SCANCODE_END, /* AKEYCODE_MOVE_END */
167  SDL_SCANCODE_INSERT, /* AKEYCODE_INSERT */
168  SDL_SCANCODE_AC_FORWARD, /* AKEYCODE_FORWARD */
169  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_PLAY */
170  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_PAUSE */
171  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_CLOSE */
172  SDL_SCANCODE_EJECT, /* AKEYCODE_MEDIA_EJECT */
173  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_RECORD */
174  SDL_SCANCODE_F1, /* AKEYCODE_F1 */
175  SDL_SCANCODE_F2, /* AKEYCODE_F2 */
176  SDL_SCANCODE_F3, /* AKEYCODE_F3 */
177  SDL_SCANCODE_F4, /* AKEYCODE_F4 */
178  SDL_SCANCODE_F5, /* AKEYCODE_F5 */
179  SDL_SCANCODE_F6, /* AKEYCODE_F6 */
180  SDL_SCANCODE_F7, /* AKEYCODE_F7 */
181  SDL_SCANCODE_F8, /* AKEYCODE_F8 */
182  SDL_SCANCODE_F9, /* AKEYCODE_F9 */
183  SDL_SCANCODE_F10, /* AKEYCODE_F10 */
184  SDL_SCANCODE_F11, /* AKEYCODE_F11 */
185  SDL_SCANCODE_F12, /* AKEYCODE_F12 */
186  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_NUM_LOCK */
187  SDL_SCANCODE_KP_0, /* AKEYCODE_NUMPAD_0 */
188  SDL_SCANCODE_KP_1, /* AKEYCODE_NUMPAD_1 */
189  SDL_SCANCODE_KP_2, /* AKEYCODE_NUMPAD_2 */
190  SDL_SCANCODE_KP_3, /* AKEYCODE_NUMPAD_3 */
191  SDL_SCANCODE_KP_4, /* AKEYCODE_NUMPAD_4 */
192  SDL_SCANCODE_KP_5, /* AKEYCODE_NUMPAD_5 */
193  SDL_SCANCODE_KP_6, /* AKEYCODE_NUMPAD_6 */
194  SDL_SCANCODE_KP_7, /* AKEYCODE_NUMPAD_7 */
195  SDL_SCANCODE_KP_8, /* AKEYCODE_NUMPAD_8 */
196  SDL_SCANCODE_KP_9, /* AKEYCODE_NUMPAD_9 */
197  SDL_SCANCODE_KP_DIVIDE, /* AKEYCODE_NUMPAD_DIVIDE */
198  SDL_SCANCODE_KP_MULTIPLY, /* AKEYCODE_NUMPAD_MULTIPLY */
199  SDL_SCANCODE_KP_MINUS, /* AKEYCODE_NUMPAD_SUBTRACT */
200  SDL_SCANCODE_KP_PLUS, /* AKEYCODE_NUMPAD_ADD */
201  SDL_SCANCODE_KP_PERIOD, /* AKEYCODE_NUMPAD_DOT */
202  SDL_SCANCODE_KP_COMMA, /* AKEYCODE_NUMPAD_COMMA */
203  SDL_SCANCODE_KP_ENTER, /* AKEYCODE_NUMPAD_ENTER */
204  SDL_SCANCODE_KP_EQUALS, /* AKEYCODE_NUMPAD_EQUALS */
205  SDL_SCANCODE_KP_LEFTPAREN, /* AKEYCODE_NUMPAD_LEFT_PAREN */
206  SDL_SCANCODE_KP_RIGHTPAREN, /* AKEYCODE_NUMPAD_RIGHT_PAREN */
207  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_VOLUME_MUTE */
208  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_INFO */
209  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_CHANNEL_UP */
210  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_CHANNEL_DOWN */
211  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_ZOOM_IN */
212  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_ZOOM_OUT */
213  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV */
214  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_WINDOW */
215  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_GUIDE */
216  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_DVR */
217  SDL_SCANCODE_AC_BOOKMARKS, /* AKEYCODE_BOOKMARK */
218  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_CAPTIONS */
219  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_SETTINGS */
220  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_POWER */
221  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT */
222  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_STB_POWER */
223  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_STB_INPUT */
224  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_AVR_POWER */
225  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_AVR_INPUT */
226  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_PROG_RED */
227  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_PROG_GREEN */
228  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_PROG_YELLOW */
229  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_PROG_BLUE */
230  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_APP_SWITCH */
231  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_1 */
232  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_2 */
233  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_3 */
234  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_4 */
235  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_5 */
236  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_6 */
237  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_7 */
238  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_8 */
239  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_9 */
240  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_10 */
241  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_11 */
242  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_12 */
243  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_13 */
244  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_14 */
245  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_15 */
246  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_BUTTON_16 */
247  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_LANGUAGE_SWITCH */
248  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MANNER_MODE */
249  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_3D_MODE */
250  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_CONTACTS */
251  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_CALENDAR */
252  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MUSIC */
253  SDL_SCANCODE_CALCULATOR, /* AKEYCODE_CALCULATOR */
254  SDL_SCANCODE_LANG5, /* AKEYCODE_ZENKAKU_HANKAKU */
255  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_EISU */
256  SDL_SCANCODE_INTERNATIONAL5, /* AKEYCODE_MUHENKAN */
257  SDL_SCANCODE_INTERNATIONAL4, /* AKEYCODE_HENKAN */
258  SDL_SCANCODE_LANG3, /* AKEYCODE_KATAKANA_HIRAGANA */
259  SDL_SCANCODE_INTERNATIONAL3, /* AKEYCODE_YEN */
260  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_RO */
261  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_KANA */
262  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_ASSIST */
263  SDL_SCANCODE_BRIGHTNESSDOWN, /* AKEYCODE_BRIGHTNESS_DOWN */
264  SDL_SCANCODE_BRIGHTNESSUP, /* AKEYCODE_BRIGHTNESS_UP */
265  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_AUDIO_TRACK */
266  SDL_SCANCODE_SLEEP, /* AKEYCODE_SLEEP */
267  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_WAKEUP */
268  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_PAIRING */
269  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_TOP_MENU */
270  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_11 */
271  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_12 */
272  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_LAST_CHANNEL */
273  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_DATA_SERVICE */
274  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_VOICE_ASSIST */
275  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_RADIO_SERVICE */
276  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_TELETEXT */
277  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_NUMBER_ENTRY */
278  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_TERRESTRIAL_ANALOG */
279  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_TERRESTRIAL_DIGITAL */
280  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_SATELLITE */
281  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_SATELLITE_BS */
282  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_SATELLITE_CS */
283  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_SATELLITE_SERVICE */
284  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_NETWORK */
285  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_ANTENNA_CABLE */
286  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT_HDMI_1 */
287  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT_HDMI_2 */
288  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT_HDMI_3 */
289  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT_HDMI_4 */
290  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT_COMPOSITE_1 */
291  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT_COMPOSITE_2 */
292  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT_COMPONENT_1 */
293  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT_COMPONENT_2 */
294  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_INPUT_VGA_1 */
295  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_AUDIO_DESCRIPTION */
296  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP */
297  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN */
298  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_ZOOM_MODE */
299  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_CONTENTS_MENU */
300  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_MEDIA_CONTEXT_MENU */
301  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_TV_TIMER_PROGRAMMING */
302  SDL_SCANCODE_HELP, /* AKEYCODE_HELP */
303  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_NAVIGATE_PREVIOUS */
304  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_NAVIGATE_NEXT */
305  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_NAVIGATE_IN */
306  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_NAVIGATE_OUT */
307  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_STEM_PRIMARY */
308  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_STEM_1 */
309  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_STEM_2 */
310  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_STEM_3 */
311  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_DPAD_UP_LEFT */
312  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_DPAD_DOWN_LEFT */
313  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_DPAD_UP_RIGHT */
314  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_DPAD_DOWN_RIGHT */
315  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_SKIP_FORWARD */
316  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_SKIP_BACKWARD */
317  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_STEP_FORWARD */
318  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_STEP_BACKWARD */
319  SDL_SCANCODE_UNKNOWN, /* AKEYCODE_SOFT_SLEEP */
320  SDL_SCANCODE_CUT, /* AKEYCODE_CUT */
321  SDL_SCANCODE_COPY, /* AKEYCODE_COPY */
322  SDL_SCANCODE_PASTE, /* AKEYCODE_PASTE */
323 };
324 
325 static SDL_Scancode
326 TranslateKeycode(int keycode)
327 {
329 
330  if (keycode < SDL_arraysize(Android_Keycodes)) {
331  scancode = Android_Keycodes[keycode];
332  }
333  if (scancode == SDL_SCANCODE_UNKNOWN) {
334  __android_log_print(ANDROID_LOG_INFO, "SDL", "Unknown keycode %d", keycode);
335  }
336  return scancode;
337 }
338 
339 int
340 Android_OnKeyDown(int keycode)
341 {
342  return SDL_SendKeyboardKey(SDL_PRESSED, TranslateKeycode(keycode));
343 }
344 
345 int
346 Android_OnKeyUp(int keycode)
347 {
348  return SDL_SendKeyboardKey(SDL_RELEASED, TranslateKeycode(keycode));
349 }
350 
351 SDL_bool
353 {
354  return SDL_TRUE;
355 }
356 
357 SDL_bool
359 {
361 }
362 
363 void
365 {
366  SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;
367  Android_JNI_ShowTextInput(&videodata->textRect);
368 }
369 
370 void
372 {
374 }
375 
376 void
378 {
379  SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;
380 
381  if (!rect) {
382  SDL_InvalidParamError("rect");
383  return;
384  }
385 
386  videodata->textRect = *rect;
387 }
388 
389 #endif /* SDL_VIDEO_DRIVER_ANDROID */
390 
391 /* vi: set ts=4 sw=4 expandtab: */
SDL_SCANCODE_KP_2
@ SDL_SCANCODE_KP_2
Definition: SDL_scancode.h:189
SDL_SCANCODE_AC_FORWARD
@ SDL_SCANCODE_AC_FORWARD
Definition: SDL_scancode.h:364
SDL_SCANCODE_3
@ SDL_SCANCODE_3
Definition: SDL_scancode.h:83
SDL_SCANCODE_RCTRL
@ SDL_SCANCODE_RCTRL
Definition: SDL_scancode.h:332
SDL_SCANCODE_PRINTSCREEN
@ SDL_SCANCODE_PRINTSCREEN
Definition: SDL_scancode.h:166
SDL_SCANCODE_BACKSLASH
@ SDL_SCANCODE_BACKSLASH
Definition: SDL_scancode.h:102
SDL_SCANCODE_HELP
@ SDL_SCANCODE_HELP
Definition: SDL_scancode.h:228
SDL_SCANCODE_BRIGHTNESSDOWN
@ SDL_SCANCODE_BRIGHTNESSDOWN
Definition: SDL_scancode.h:378
Android_InitKeyboard
void Android_InitKeyboard(void)
SDL_SCANCODE_INTERNATIONAL3
@ SDL_SCANCODE_INTERNATIONAL3
Definition: SDL_scancode.h:251
SDL_SCANCODE_KP_MINUS
@ SDL_SCANCODE_KP_MINUS
Definition: SDL_scancode.h:185
SDL_SCANCODE_6
@ SDL_SCANCODE_6
Definition: SDL_scancode.h:86
SDL_VideoDevice::driverdata
void * driverdata
Definition: SDL_sysvideo.h:381
SDL_SCANCODE_LEFT
@ SDL_SCANCODE_LEFT
Definition: SDL_scancode.h:177
SDL_GetDefaultKeymap
void SDL_GetDefaultKeymap(SDL_Keycode *keymap)
Definition: SDL_keyboard.c:588
SDL_SCANCODE_PERIOD
@ SDL_SCANCODE_PERIOD
Definition: SDL_scancode.h:148
SDL_SCANCODE_SELECT
@ SDL_SCANCODE_SELECT
Definition: SDL_scancode.h:230
SDL_SCANCODE_5
@ SDL_SCANCODE_5
Definition: SDL_scancode.h:85
SDL_SCANCODE_F7
@ SDL_SCANCODE_F7
Definition: SDL_scancode.h:159
SDL_SCANCODE_K
@ SDL_SCANCODE_K
Definition: SDL_scancode.h:64
SDL_SCANCODE_KP_PERIOD
@ SDL_SCANCODE_KP_PERIOD
Definition: SDL_scancode.h:198
SDL_SCANCODE_SLASH
@ SDL_SCANCODE_SLASH
Definition: SDL_scancode.h:149
SDL_SCANCODE_4
@ SDL_SCANCODE_4
Definition: SDL_scancode.h:84
SDL_SCANCODE_SCROLLLOCK
@ SDL_SCANCODE_SCROLLLOCK
Definition: SDL_scancode.h:167
SDL_SCANCODE_RIGHT
@ SDL_SCANCODE_RIGHT
Definition: SDL_scancode.h:176
SDL_SCANCODE_POWER
@ SDL_SCANCODE_POWER
Definition: SDL_scancode.h:211
SDL_SCANCODE_U
@ SDL_SCANCODE_U
Definition: SDL_scancode.h:74
SDL_SCANCODE_VOLUMEDOWN
@ SDL_SCANCODE_VOLUMEDOWN
Definition: SDL_scancode.h:240
SDL_SCANCODE_AUDIOREWIND
@ SDL_SCANCODE_AUDIOREWIND
Definition: SDL_scancode.h:400
SDL_Scancode
SDL_Scancode
The SDL keyboard scancode representation.
Definition: SDL_scancode.h:44
SDL_InvalidParamError
#define SDL_InvalidParamError(param)
Definition: SDL_error.h:54
SDL_SCANCODE_KP_8
@ SDL_SCANCODE_KP_8
Definition: SDL_scancode.h:195
SDL_SCANCODE_KP_LEFTPAREN
@ SDL_SCANCODE_KP_LEFTPAREN
Definition: SDL_scancode.h:287
SDL_SCANCODE_N
@ SDL_SCANCODE_N
Definition: SDL_scancode.h:67
SDL_SCANCODE_UP
@ SDL_SCANCODE_UP
Definition: SDL_scancode.h:179
SDL_SCANCODE_KP_5
@ SDL_SCANCODE_KP_5
Definition: SDL_scancode.h:192
SDL_SCANCODE_TAB
@ SDL_SCANCODE_TAB
Definition: SDL_scancode.h:95
SDL_SCANCODE_7
@ SDL_SCANCODE_7
Definition: SDL_scancode.h:87
SDL_SCANCODE_GRAVE
@ SDL_SCANCODE_GRAVE
Definition: SDL_scancode.h:130
SDL_SCANCODE_PASTE
@ SDL_SCANCODE_PASTE
Definition: SDL_scancode.h:236
SDL_SCANCODE_EQUALS
@ SDL_SCANCODE_EQUALS
Definition: SDL_scancode.h:99
SDL_SCANCODE_VOLUMEUP
@ SDL_SCANCODE_VOLUMEUP
Definition: SDL_scancode.h:239
SDL_SCANCODE_F3
@ SDL_SCANCODE_F3
Definition: SDL_scancode.h:155
SDL_SCANCODE_PAGEDOWN
@ SDL_SCANCODE_PAGEDOWN
Definition: SDL_scancode.h:175
SDL_SCANCODE_SEMICOLON
@ SDL_SCANCODE_SEMICOLON
Definition: SDL_scancode.h:128
SDL_SCANCODE_W
@ SDL_SCANCODE_W
Definition: SDL_scancode.h:76
SDL_RELEASED
#define SDL_RELEASED
Definition: SDL_events.h:49
SDL_Keycode
Sint32 SDL_Keycode
The SDL virtual key representation.
Definition: SDL_keycode.h:45
SDL_SCANCODE_KP_6
@ SDL_SCANCODE_KP_6
Definition: SDL_scancode.h:193
SDL_SCANCODE_LALT
@ SDL_SCANCODE_LALT
Definition: SDL_scancode.h:330
SDL_SendKeyboardKey
int SDL_SendKeyboardKey(Uint8 state, SDL_Scancode scancode)
Definition: SDL_keyboard.c:679
SDL_SCANCODE_Z
@ SDL_SCANCODE_Z
Definition: SDL_scancode.h:79
SDL_SCANCODE_KP_RIGHTPAREN
@ SDL_SCANCODE_KP_RIGHTPAREN
Definition: SDL_scancode.h:288
SDL_SCANCODE_KP_EQUALS
@ SDL_SCANCODE_KP_EQUALS
Definition: SDL_scancode.h:214
SDL_Window
The type used to identify a window.
Definition: SDL_sysvideo.h:74
SDL_SCANCODE_KP_1
@ SDL_SCANCODE_KP_1
Definition: SDL_scancode.h:188
SDL_SCANCODE_MUTE
@ SDL_SCANCODE_MUTE
Definition: SDL_scancode.h:238
SDL_SCANCODE_F9
@ SDL_SCANCODE_F9
Definition: SDL_scancode.h:161
SDL_SCANCODE_CAPSLOCK
@ SDL_SCANCODE_CAPSLOCK
Definition: SDL_scancode.h:151
SDL_SCANCODE_SLEEP
@ SDL_SCANCODE_SLEEP
Definition: SDL_scancode.h:386
SDL_SCANCODE_CALCULATOR
@ SDL_SCANCODE_CALCULATOR
Definition: SDL_scancode.h:359
SDL_SCANCODE_F5
@ SDL_SCANCODE_F5
Definition: SDL_scancode.h:157
SDL_PRESSED
#define SDL_PRESSED
Definition: SDL_events.h:50
Android_OnKeyDown
int Android_OnKeyDown(int keycode)
SDL_SCANCODE_RIGHTBRACKET
@ SDL_SCANCODE_RIGHTBRACKET
Definition: SDL_scancode.h:101
SDL_SCANCODE_H
@ SDL_SCANCODE_H
Definition: SDL_scancode.h:61
SDL_SCANCODE_I
@ SDL_SCANCODE_I
Definition: SDL_scancode.h:62
SDL_SCANCODE_MINUS
@ SDL_SCANCODE_MINUS
Definition: SDL_scancode.h:98
SDL_SCANCODE_KP_MULTIPLY
@ SDL_SCANCODE_KP_MULTIPLY
Definition: SDL_scancode.h:184
_this
static SDL_VideoDevice * _this
Definition: SDL_video.c:121
SDL_SCANCODE_SPACE
@ SDL_SCANCODE_SPACE
Definition: SDL_scancode.h:96
SDL_SCANCODE_9
@ SDL_SCANCODE_9
Definition: SDL_scancode.h:89
SDL_SCANCODE_V
@ SDL_SCANCODE_V
Definition: SDL_scancode.h:75
SDL_SCANCODE_PAUSE
@ SDL_SCANCODE_PAUSE
Definition: SDL_scancode.h:168
window
EGLSurface EGLNativeWindowType * window
Definition: eglext.h:1025
SDL_SCANCODE_R
@ SDL_SCANCODE_R
Definition: SDL_scancode.h:71
SDL_SCANCODE_KP_7
@ SDL_SCANCODE_KP_7
Definition: SDL_scancode.h:194
SDL_SCANCODE_T
@ SDL_SCANCODE_T
Definition: SDL_scancode.h:73
SDL_SCANCODE_P
@ SDL_SCANCODE_P
Definition: SDL_scancode.h:69
SDL_SCANCODE_E
@ SDL_SCANCODE_E
Definition: SDL_scancode.h:58
SDL_SCANCODE_C
@ SDL_SCANCODE_C
Definition: SDL_scancode.h:56
Android_SetTextInputRect
void Android_SetTextInputRect(_THIS, SDL_Rect *rect)
SDL_SCANCODE_A
@ SDL_SCANCODE_A
Definition: SDL_scancode.h:54
SDL_SCANCODE_KP_4
@ SDL_SCANCODE_KP_4
Definition: SDL_scancode.h:191
SDL_SCANCODE_KP_0
@ SDL_SCANCODE_KP_0
Definition: SDL_scancode.h:197
rect
SDL_Rect rect
Definition: testrelative.c:27
SDL_SCANCODE_MAIL
@ SDL_SCANCODE_MAIL
Definition: SDL_scancode.h:358
SDL_SCANCODE_LANG5
@ SDL_SCANCODE_LANG5
Definition: SDL_scancode.h:262
SDL_SCANCODE_0
@ SDL_SCANCODE_0
Definition: SDL_scancode.h:90
SDL_SCANCODE_ESCAPE
@ SDL_SCANCODE_ESCAPE
Definition: SDL_scancode.h:93
SDL_SCANCODE_KP_9
@ SDL_SCANCODE_KP_9
Definition: SDL_scancode.h:196
Android_HasScreenKeyboardSupport
SDL_bool Android_HasScreenKeyboardSupport(_THIS)
SDL_SCANCODE_F11
@ SDL_SCANCODE_F11
Definition: SDL_scancode.h:163
Android_StopTextInput
void Android_StopTextInput(_THIS)
SDL_SCANCODE_S
@ SDL_SCANCODE_S
Definition: SDL_scancode.h:72
_THIS
#define _THIS
Definition: SDL_alsa_audio.h:31
SDL_SCANCODE_BACKSPACE
@ SDL_SCANCODE_BACKSPACE
Definition: SDL_scancode.h:94
SDL_SCANCODE_KP_DIVIDE
@ SDL_SCANCODE_KP_DIVIDE
Definition: SDL_scancode.h:183
SDL_SCANCODE_AC_BACK
@ SDL_SCANCODE_AC_BACK
Definition: SDL_scancode.h:363
SDL_TRUE
@ SDL_TRUE
Definition: SDL_stdinc.h:164
SDL_SCANCODE_COPY
@ SDL_SCANCODE_COPY
Definition: SDL_scancode.h:235
SDL_SCANCODE_KP_PLUS
@ SDL_SCANCODE_KP_PLUS
Definition: SDL_scancode.h:186
SDL_SCANCODE_LCTRL
@ SDL_SCANCODE_LCTRL
Definition: SDL_scancode.h:328
SDL_SCANCODE_Y
@ SDL_SCANCODE_Y
Definition: SDL_scancode.h:78
SDL_SCANCODE_KP_COMMA
@ SDL_SCANCODE_KP_COMMA
Definition: SDL_scancode.h:245
SDL_SetKeymap
void SDL_SetKeymap(int start, SDL_Keycode *keys, int length)
Definition: SDL_keyboard.c:594
SDL_SCANCODE_UNKNOWN
@ SDL_SCANCODE_UNKNOWN
Definition: SDL_scancode.h:45
SDL_SCANCODE_LSHIFT
@ SDL_SCANCODE_LSHIFT
Definition: SDL_scancode.h:329
Android_JNI_ShowTextInput
void Android_JNI_ShowTextInput(SDL_Rect *inputRect)
SDL_SCANCODE_LEFTBRACKET
@ SDL_SCANCODE_LEFTBRACKET
Definition: SDL_scancode.h:100
SDL_SCANCODE_CUT
@ SDL_SCANCODE_CUT
Definition: SDL_scancode.h:234
SDL_SCANCODE_CLEAR
@ SDL_SCANCODE_CLEAR
Definition: SDL_scancode.h:271
SDL_arraysize
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:115
SDL_SCANCODE_INTERNATIONAL5
@ SDL_SCANCODE_INTERNATIONAL5
Definition: SDL_scancode.h:253
SDL_SCANCODE_DELETE
@ SDL_SCANCODE_DELETE
Definition: SDL_scancode.h:173
SDL_SCANCODE_F8
@ SDL_SCANCODE_F8
Definition: SDL_scancode.h:160
SDL_SCANCODE_INTERNATIONAL4
@ SDL_SCANCODE_INTERNATIONAL4
Definition: SDL_scancode.h:252
SDL_SCANCODE_AUDIOSTOP
@ SDL_SCANCODE_AUDIOSTOP
Definition: SDL_scancode.h:353
SDL_SCANCODE_F
@ SDL_SCANCODE_F
Definition: SDL_scancode.h:59
SDL_SCANCODE_COMMA
@ SDL_SCANCODE_COMMA
Definition: SDL_scancode.h:147
SDL_SCANCODE_EJECT
@ SDL_SCANCODE_EJECT
Definition: SDL_scancode.h:385
SDL_SCANCODE_AUDIOFASTFORWARD
@ SDL_SCANCODE_AUDIOFASTFORWARD
Definition: SDL_scancode.h:401
SDL_Rect
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:65
SDL_SCANCODE_X
@ SDL_SCANCODE_X
Definition: SDL_scancode.h:77
SDL_SCANCODE_F2
@ SDL_SCANCODE_F2
Definition: SDL_scancode.h:154
Android_OnKeyUp
int Android_OnKeyUp(int keycode)
SDL_SCANCODE_LANG3
@ SDL_SCANCODE_LANG3
Definition: SDL_scancode.h:260
Android_JNI_HideTextInput
void Android_JNI_HideTextInput(void)
SDL_SCANCODE_B
@ SDL_SCANCODE_B
Definition: SDL_scancode.h:55
SDL_SCANCODE_2
@ SDL_SCANCODE_2
Definition: SDL_scancode.h:82
SDL_SCANCODE_AC_HOME
@ SDL_SCANCODE_AC_HOME
Definition: SDL_scancode.h:362
SDL_SCANCODE_M
@ SDL_SCANCODE_M
Definition: SDL_scancode.h:66
SDL_SCANCODE_PAGEUP
@ SDL_SCANCODE_PAGEUP
Definition: SDL_scancode.h:172
SDL_SCANCODE_APOSTROPHE
@ SDL_SCANCODE_APOSTROPHE
Definition: SDL_scancode.h:129
SDL_SCANCODE_BRIGHTNESSUP
@ SDL_SCANCODE_BRIGHTNESSUP
Definition: SDL_scancode.h:379
SDL_SCANCODE_Q
@ SDL_SCANCODE_Q
Definition: SDL_scancode.h:70
SDL_SCANCODE_LGUI
@ SDL_SCANCODE_LGUI
Definition: SDL_scancode.h:331
SDL_NUM_SCANCODES
@ SDL_NUM_SCANCODES
Definition: SDL_scancode.h:407
SDL_SCANCODE_G
@ SDL_SCANCODE_G
Definition: SDL_scancode.h:60
SDL_bool
SDL_bool
Definition: SDL_stdinc.h:162
SDL_androidkeyboard.h
SDL_SCANCODE_RGUI
@ SDL_SCANCODE_RGUI
Definition: SDL_scancode.h:335
SDL_SCANCODE_KP_3
@ SDL_SCANCODE_KP_3
Definition: SDL_scancode.h:190
SDL_SCANCODE_1
@ SDL_SCANCODE_1
Definition: SDL_scancode.h:81
SDL_SCANCODE_INSERT
@ SDL_SCANCODE_INSERT
Definition: SDL_scancode.h:169
SDL_SCANCODE_AC_SEARCH
@ SDL_SCANCODE_AC_SEARCH
Definition: SDL_scancode.h:361
SDL_SCANCODE_AUDIOPLAY
@ SDL_SCANCODE_AUDIOPLAY
Definition: SDL_scancode.h:354
SDL_SCANCODE_DOWN
@ SDL_SCANCODE_DOWN
Definition: SDL_scancode.h:178
SDL_SCANCODE_RALT
@ SDL_SCANCODE_RALT
Definition: SDL_scancode.h:334
SDL_SCANCODE_J
@ SDL_SCANCODE_J
Definition: SDL_scancode.h:63
Android_StartTextInput
void Android_StartTextInput(_THIS)
SDL_SCANCODE_END
@ SDL_SCANCODE_END
Definition: SDL_scancode.h:174
SDL_VideoData::textRect
SDL_Rect textRect
Definition: SDL_androidvideo.h:37
SDL_SCANCODE_RSHIFT
@ SDL_SCANCODE_RSHIFT
Definition: SDL_scancode.h:333
SDL_SCANCODE_F1
@ SDL_SCANCODE_F1
Definition: SDL_scancode.h:153
SDL_SCANCODE_F6
@ SDL_SCANCODE_F6
Definition: SDL_scancode.h:158
SDL_SCANCODE_D
@ SDL_SCANCODE_D
Definition: SDL_scancode.h:57
SDL_SCANCODE_AUDIOPREV
@ SDL_SCANCODE_AUDIOPREV
Definition: SDL_scancode.h:352
SDL_SCANCODE_L
@ SDL_SCANCODE_L
Definition: SDL_scancode.h:65
SDL_SCANCODE_8
@ SDL_SCANCODE_8
Definition: SDL_scancode.h:88
Android_JNI_IsScreenKeyboardShown
SDL_bool Android_JNI_IsScreenKeyboardShown(void)
SDL_SCANCODE_F12
@ SDL_SCANCODE_F12
Definition: SDL_scancode.h:164
SDL_SCANCODE_MENU
@ SDL_SCANCODE_MENU
Definition: SDL_scancode.h:229
SDL_SCANCODE_HOME
@ SDL_SCANCODE_HOME
Definition: SDL_scancode.h:171
Android_IsScreenKeyboardShown
SDL_bool Android_IsScreenKeyboardShown(_THIS, SDL_Window *window)
SDL_SCANCODE_RETURN
@ SDL_SCANCODE_RETURN
Definition: SDL_scancode.h:92
SDL_SCANCODE_F10
@ SDL_SCANCODE_F10
Definition: SDL_scancode.h:162
SDL_SCANCODE_AUDIONEXT
@ SDL_SCANCODE_AUDIONEXT
Definition: SDL_scancode.h:351
SDL_SCANCODE_O
@ SDL_SCANCODE_O
Definition: SDL_scancode.h:68
SDL_VideoData
Definition: SDL_androidvideo.h:36
SDL_SCANCODE_WWW
@ SDL_SCANCODE_WWW
Definition: SDL_scancode.h:357
SDL_SCANCODE_KP_ENTER
@ SDL_SCANCODE_KP_ENTER
Definition: SDL_scancode.h:187
SDL_SCANCODE_F4
@ SDL_SCANCODE_F4
Definition: SDL_scancode.h:156
SDL_SCANCODE_AC_BOOKMARKS
@ SDL_SCANCODE_AC_BOOKMARKS
Definition: SDL_scancode.h:367