SDL  2.0
SDL_naclevents.c
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2020 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_NACL
24 
25 #include "SDL.h"
26 #include "../../events/SDL_sysevents.h"
27 #include "../../events/SDL_events_c.h"
28 #include "SDL_naclevents_c.h"
29 #include "SDL_naclvideo.h"
30 #include "ppapi_simple/ps_event.h"
31 
32 /* Ref: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent */
33 
34 static SDL_Scancode NACL_Keycodes[] = {
35  SDL_SCANCODE_UNKNOWN, /* 0 */
36  SDL_SCANCODE_UNKNOWN, /* 1 */
37  SDL_SCANCODE_UNKNOWN, /* 2 */
38  SDL_SCANCODE_CANCEL, /* DOM_VK_CANCEL 3 */
39  SDL_SCANCODE_UNKNOWN, /* 4 */
40  SDL_SCANCODE_UNKNOWN, /* 5 */
41  SDL_SCANCODE_HELP, /* DOM_VK_HELP 6 */
42  SDL_SCANCODE_UNKNOWN, /* 7 */
43  SDL_SCANCODE_BACKSPACE, /* DOM_VK_BACK_SPACE 8 */
44  SDL_SCANCODE_TAB, /* DOM_VK_TAB 9 */
45  SDL_SCANCODE_UNKNOWN, /* 10 */
46  SDL_SCANCODE_UNKNOWN, /* 11 */
47  SDL_SCANCODE_CLEAR, /* DOM_VK_CLEAR 12 */
48  SDL_SCANCODE_RETURN, /* DOM_VK_RETURN 13 */
49  SDL_SCANCODE_RETURN, /* DOM_VK_ENTER 14 */
50  SDL_SCANCODE_UNKNOWN, /* 15 */
51  SDL_SCANCODE_LSHIFT, /* DOM_VK_SHIFT 16 */
52  SDL_SCANCODE_LCTRL, /* DOM_VK_CONTROL 17 */
53  SDL_SCANCODE_LALT, /* DOM_VK_ALT 18 */
54  SDL_SCANCODE_UNKNOWN, /* DOM_VK_PAUSE 19 */
55  SDL_SCANCODE_CAPSLOCK, /* DOM_VK_CAPS_LOCK 20 */
56  SDL_SCANCODE_LANG1, /* DOM_VK_KANA DOM_VK_HANGUL 21 */
57  SDL_SCANCODE_UNKNOWN, /* DOM_VK_EISU 22 */
58  SDL_SCANCODE_UNKNOWN, /* DOM_VK_JUNJA 23 */
59  SDL_SCANCODE_UNKNOWN, /* DOM_VK_FINAL 24 */
60  SDL_SCANCODE_LANG2, /* DOM_VK_HANJA DOM_VK_KANJI 25 */
61  SDL_SCANCODE_UNKNOWN, /* 26 */
62  SDL_SCANCODE_ESCAPE, /* DOM_VK_ESCAPE 27 */
63  SDL_SCANCODE_UNKNOWN, /* DOM_VK_CONVERT 28 */
64  SDL_SCANCODE_UNKNOWN, /* DOM_VK_NONCONVERT 29 */
65  SDL_SCANCODE_UNKNOWN, /* DOM_VK_ACCEPT 30 */
66  SDL_SCANCODE_MODE, /* DOM_VK_MODECHANGE 31 */
67  SDL_SCANCODE_SPACE, /* DOM_VK_SPACE 32 */
68  SDL_SCANCODE_PAGEUP, /* DOM_VK_PAGE_UP 33 */
69  SDL_SCANCODE_PAGEDOWN, /* DOM_VK_PAGE_DOWN 34 */
70  SDL_SCANCODE_END, /* DOM_VK_END 35 */
71  SDL_SCANCODE_HOME, /* DOM_VK_HOME 36 */
72  SDL_SCANCODE_LEFT, /* DOM_VK_LEFT 37 */
73  SDL_SCANCODE_UP, /* DOM_VK_UP 38 */
74  SDL_SCANCODE_RIGHT, /* DOM_VK_RIGHT 39 */
75  SDL_SCANCODE_DOWN, /* DOM_VK_DOWN 40 */
76  SDL_SCANCODE_SELECT, /* DOM_VK_SELECT 41 */
77  SDL_SCANCODE_UNKNOWN, /* DOM_VK_PRINT 42 */
78  SDL_SCANCODE_EXECUTE, /* DOM_VK_EXECUTE 43 */
79  SDL_SCANCODE_PRINTSCREEN, /* DOM_VK_PRINTSCREEN 44 */
80  SDL_SCANCODE_INSERT, /* DOM_VK_INSERT 45 */
81  SDL_SCANCODE_DELETE, /* DOM_VK_DELETE 46 */
82  SDL_SCANCODE_UNKNOWN, /* 47 */
83  SDL_SCANCODE_0, /* DOM_VK_0 48 */
84  SDL_SCANCODE_1, /* DOM_VK_1 49 */
85  SDL_SCANCODE_2, /* DOM_VK_2 50 */
86  SDL_SCANCODE_3, /* DOM_VK_3 51 */
87  SDL_SCANCODE_4, /* DOM_VK_4 52 */
88  SDL_SCANCODE_5, /* DOM_VK_5 53 */
89  SDL_SCANCODE_6, /* DOM_VK_6 54 */
90  SDL_SCANCODE_7, /* DOM_VK_7 55 */
91  SDL_SCANCODE_8, /* DOM_VK_8 56 */
92  SDL_SCANCODE_9, /* DOM_VK_9 57 */
93  SDL_SCANCODE_KP_COLON, /* DOM_VK_COLON 58 */
94  SDL_SCANCODE_SEMICOLON, /* DOM_VK_SEMICOLON 59 */
95  SDL_SCANCODE_KP_LESS, /* DOM_VK_LESS_THAN 60 */
96  SDL_SCANCODE_EQUALS, /* DOM_VK_EQUALS 61 */
97  SDL_SCANCODE_KP_GREATER, /* DOM_VK_GREATER_THAN 62 */
98  SDL_SCANCODE_UNKNOWN, /* DOM_VK_QUESTION_MARK 63 */
99  SDL_SCANCODE_KP_AT, /* DOM_VK_AT 64 */
100  SDL_SCANCODE_A, /* DOM_VK_A 65 */
101  SDL_SCANCODE_B, /* DOM_VK_B 66 */
102  SDL_SCANCODE_C, /* DOM_VK_C 67 */
103  SDL_SCANCODE_D, /* DOM_VK_D 68 */
104  SDL_SCANCODE_E, /* DOM_VK_E 69 */
105  SDL_SCANCODE_F, /* DOM_VK_F 70 */
106  SDL_SCANCODE_G, /* DOM_VK_G 71 */
107  SDL_SCANCODE_H, /* DOM_VK_H 72 */
108  SDL_SCANCODE_I, /* DOM_VK_I 73 */
109  SDL_SCANCODE_J, /* DOM_VK_J 74 */
110  SDL_SCANCODE_K, /* DOM_VK_K 75 */
111  SDL_SCANCODE_L, /* DOM_VK_L 76 */
112  SDL_SCANCODE_M, /* DOM_VK_M 77 */
113  SDL_SCANCODE_N, /* DOM_VK_N 78 */
114  SDL_SCANCODE_O, /* DOM_VK_O 79 */
115  SDL_SCANCODE_P, /* DOM_VK_P 80 */
116  SDL_SCANCODE_Q, /* DOM_VK_Q 81 */
117  SDL_SCANCODE_R, /* DOM_VK_R 82 */
118  SDL_SCANCODE_S, /* DOM_VK_S 83 */
119  SDL_SCANCODE_T, /* DOM_VK_T 84 */
120  SDL_SCANCODE_U, /* DOM_VK_U 85 */
121  SDL_SCANCODE_V, /* DOM_VK_V 86 */
122  SDL_SCANCODE_W, /* DOM_VK_W 87 */
123  SDL_SCANCODE_X, /* DOM_VK_X 88 */
124  SDL_SCANCODE_Y, /* DOM_VK_Y 89 */
125  SDL_SCANCODE_Z, /* DOM_VK_Z 90 */
126  SDL_SCANCODE_LGUI, /* DOM_VK_WIN 91 */
127  SDL_SCANCODE_UNKNOWN, /* 92 */
128  SDL_SCANCODE_APPLICATION, /* DOM_VK_CONTEXT_MENU 93 */
129  SDL_SCANCODE_UNKNOWN, /* 94 */
130  SDL_SCANCODE_SLEEP, /* DOM_VK_SLEEP 95 */
131  SDL_SCANCODE_KP_0, /* DOM_VK_NUMPAD0 96 */
132  SDL_SCANCODE_KP_1, /* DOM_VK_NUMPAD1 97 */
133  SDL_SCANCODE_KP_2, /* DOM_VK_NUMPAD2 98 */
134  SDL_SCANCODE_KP_3, /* DOM_VK_NUMPAD3 99 */
135  SDL_SCANCODE_KP_4, /* DOM_VK_NUMPAD4 100 */
136  SDL_SCANCODE_KP_5, /* DOM_VK_NUMPAD5 101 */
137  SDL_SCANCODE_KP_6, /* DOM_VK_NUMPAD6 102 */
138  SDL_SCANCODE_KP_7, /* DOM_VK_NUMPAD7 103 */
139  SDL_SCANCODE_KP_8, /* DOM_VK_NUMPAD8 104 */
140  SDL_SCANCODE_KP_9, /* DOM_VK_NUMPAD9 105 */
141  SDL_SCANCODE_KP_MULTIPLY, /* DOM_VK_MULTIPLY 106 */
142  SDL_SCANCODE_KP_PLUS, /* DOM_VK_ADD 107 */
143  SDL_SCANCODE_KP_COMMA, /* DOM_VK_SEPARATOR 108 */
144  SDL_SCANCODE_KP_MINUS, /* DOM_VK_SUBTRACT 109 */
145  SDL_SCANCODE_KP_PERIOD, /* DOM_VK_DECIMAL 110 */
146  SDL_SCANCODE_KP_DIVIDE, /* DOM_VK_DIVIDE 111 */
147  SDL_SCANCODE_F1, /* DOM_VK_F1 112 */
148  SDL_SCANCODE_F2, /* DOM_VK_F2 113 */
149  SDL_SCANCODE_F3, /* DOM_VK_F3 114 */
150  SDL_SCANCODE_F4, /* DOM_VK_F4 115 */
151  SDL_SCANCODE_F5, /* DOM_VK_F5 116 */
152  SDL_SCANCODE_F6, /* DOM_VK_F6 117 */
153  SDL_SCANCODE_F7, /* DOM_VK_F7 118 */
154  SDL_SCANCODE_F8, /* DOM_VK_F8 119 */
155  SDL_SCANCODE_F9, /* DOM_VK_F9 120 */
156  SDL_SCANCODE_F10, /* DOM_VK_F10 121 */
157  SDL_SCANCODE_F11, /* DOM_VK_F11 122 */
158  SDL_SCANCODE_F12, /* DOM_VK_F12 123 */
159  SDL_SCANCODE_F13, /* DOM_VK_F13 124 */
160  SDL_SCANCODE_F14, /* DOM_VK_F14 125 */
161  SDL_SCANCODE_F15, /* DOM_VK_F15 126 */
162  SDL_SCANCODE_F16, /* DOM_VK_F16 127 */
163  SDL_SCANCODE_F17, /* DOM_VK_F17 128 */
164  SDL_SCANCODE_F18, /* DOM_VK_F18 129 */
165  SDL_SCANCODE_F19, /* DOM_VK_F19 130 */
166  SDL_SCANCODE_F20, /* DOM_VK_F20 131 */
167  SDL_SCANCODE_F21, /* DOM_VK_F21 132 */
168  SDL_SCANCODE_F22, /* DOM_VK_F22 133 */
169  SDL_SCANCODE_F23, /* DOM_VK_F23 134 */
170  SDL_SCANCODE_F24, /* DOM_VK_F24 135 */
171  SDL_SCANCODE_UNKNOWN, /* 136 */
172  SDL_SCANCODE_UNKNOWN, /* 137 */
173  SDL_SCANCODE_UNKNOWN, /* 138 */
174  SDL_SCANCODE_UNKNOWN, /* 139 */
175  SDL_SCANCODE_UNKNOWN, /* 140 */
176  SDL_SCANCODE_UNKNOWN, /* 141 */
177  SDL_SCANCODE_UNKNOWN, /* 142 */
178  SDL_SCANCODE_UNKNOWN, /* 143 */
179  SDL_SCANCODE_NUMLOCKCLEAR, /* DOM_VK_NUM_LOCK 144 */
180  SDL_SCANCODE_SCROLLLOCK, /* DOM_VK_SCROLL_LOCK 145 */
181  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_FJ_JISHO 146 */
182  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_FJ_MASSHOU 147 */
183  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_FJ_TOUROKU 148 */
184  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_FJ_LOYA 149 */
185  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_FJ_ROYA 150 */
186  SDL_SCANCODE_UNKNOWN, /* 151 */
187  SDL_SCANCODE_UNKNOWN, /* 152 */
188  SDL_SCANCODE_UNKNOWN, /* 153 */
189  SDL_SCANCODE_UNKNOWN, /* 154 */
190  SDL_SCANCODE_UNKNOWN, /* 155 */
191  SDL_SCANCODE_UNKNOWN, /* 156 */
192  SDL_SCANCODE_UNKNOWN, /* 157 */
193  SDL_SCANCODE_UNKNOWN, /* 158 */
194  SDL_SCANCODE_UNKNOWN, /* 159 */
195  SDL_SCANCODE_GRAVE, /* DOM_VK_CIRCUMFLEX 160 */
196  SDL_SCANCODE_KP_EXCLAM, /* DOM_VK_EXCLAMATION 161 */
197  SDL_SCANCODE_UNKNOWN, /* DOM_VK_DOUBLE_QUOTE 162 */
198  SDL_SCANCODE_KP_HASH, /* DOM_VK_HASH 163 */
199  SDL_SCANCODE_CURRENCYUNIT, /* DOM_VK_DOLLAR 164 */
200  SDL_SCANCODE_KP_PERCENT, /* DOM_VK_PERCENT 165 */
201  SDL_SCANCODE_KP_AMPERSAND, /* DOM_VK_AMPERSAND 166 */
202  SDL_SCANCODE_UNKNOWN, /* DOM_VK_UNDERSCORE 167 */
203  SDL_SCANCODE_KP_LEFTPAREN, /* DOM_VK_OPEN_PAREN 168 */
204  SDL_SCANCODE_KP_RIGHTPAREN, /* DOM_VK_CLOSE_PAREN 169 */
205  SDL_SCANCODE_KP_MULTIPLY, /* DOM_VK_ASTERISK 170 */
206  SDL_SCANCODE_KP_PLUS, /* DOM_VK_PLUS 171 */
207  SDL_SCANCODE_KP_PLUS, /* DOM_VK_PIPE 172 */
208  SDL_SCANCODE_MINUS, /* DOM_VK_HYPHEN_MINUS 173 */
209  SDL_SCANCODE_UNKNOWN, /* DOM_VK_OPEN_CURLY_BRACKET 174 */
210  SDL_SCANCODE_UNKNOWN, /* DOM_VK_CLOSE_CURLY_BRACKET 175 */
211  SDL_SCANCODE_NONUSBACKSLASH, /* DOM_VK_TILDE 176 */
212  SDL_SCANCODE_UNKNOWN, /* 177 */
213  SDL_SCANCODE_UNKNOWN, /* 178 */
214  SDL_SCANCODE_UNKNOWN, /* 179 */
215  SDL_SCANCODE_UNKNOWN, /* 180 */
216  SDL_SCANCODE_MUTE, /* DOM_VK_VOLUME_MUTE 181 */
217  SDL_SCANCODE_VOLUMEDOWN, /* DOM_VK_VOLUME_DOWN 182 */
218  SDL_SCANCODE_VOLUMEUP, /* DOM_VK_VOLUME_UP 183 */
219  SDL_SCANCODE_UNKNOWN, /* 184 */
220  SDL_SCANCODE_UNKNOWN, /* 185 */
221  SDL_SCANCODE_UNKNOWN, /* 186 */
222  SDL_SCANCODE_UNKNOWN, /* 187 */
223  SDL_SCANCODE_COMMA, /* DOM_VK_COMMA 188 */
224  SDL_SCANCODE_UNKNOWN, /* 189 */
225  SDL_SCANCODE_PERIOD, /* DOM_VK_PERIOD 190 */
226  SDL_SCANCODE_SLASH, /* DOM_VK_SLASH 191 */
227  SDL_SCANCODE_UNKNOWN, /* DOM_VK_BACK_QUOTE 192 */
228  SDL_SCANCODE_UNKNOWN, /* 193 */
229  SDL_SCANCODE_UNKNOWN, /* 194 */
230  SDL_SCANCODE_UNKNOWN, /* 195 */
231  SDL_SCANCODE_UNKNOWN, /* 196 */
232  SDL_SCANCODE_UNKNOWN, /* 197 */
233  SDL_SCANCODE_UNKNOWN, /* 198 */
234  SDL_SCANCODE_UNKNOWN, /* 199 */
235  SDL_SCANCODE_UNKNOWN, /* 200 */
236  SDL_SCANCODE_UNKNOWN, /* 201 */
237  SDL_SCANCODE_UNKNOWN, /* 202 */
238  SDL_SCANCODE_UNKNOWN, /* 203 */
239  SDL_SCANCODE_UNKNOWN, /* 204 */
240  SDL_SCANCODE_UNKNOWN, /* 205 */
241  SDL_SCANCODE_UNKNOWN, /* 206 */
242  SDL_SCANCODE_UNKNOWN, /* 207 */
243  SDL_SCANCODE_UNKNOWN, /* 208 */
244  SDL_SCANCODE_UNKNOWN, /* 209 */
245  SDL_SCANCODE_UNKNOWN, /* 210 */
246  SDL_SCANCODE_UNKNOWN, /* 211 */
247  SDL_SCANCODE_UNKNOWN, /* 212 */
248  SDL_SCANCODE_UNKNOWN, /* 213 */
249  SDL_SCANCODE_UNKNOWN, /* 214 */
250  SDL_SCANCODE_UNKNOWN, /* 215 */
251  SDL_SCANCODE_UNKNOWN, /* 216 */
252  SDL_SCANCODE_UNKNOWN, /* 217 */
253  SDL_SCANCODE_UNKNOWN, /* 218 */
254  SDL_SCANCODE_LEFTBRACKET, /* DOM_VK_OPEN_BRACKET 219 */
255  SDL_SCANCODE_BACKSLASH, /* DOM_VK_BACK_SLASH 220 */
256  SDL_SCANCODE_RIGHTBRACKET, /* DOM_VK_CLOSE_BRACKET 221 */
257  SDL_SCANCODE_APOSTROPHE, /* DOM_VK_QUOTE 222 */
258  SDL_SCANCODE_UNKNOWN, /* 223 */
259  SDL_SCANCODE_RGUI, /* DOM_VK_META 224 */
260  SDL_SCANCODE_RALT, /* DOM_VK_ALTGR 225 */
261  SDL_SCANCODE_UNKNOWN, /* 226 */
262  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_ICO_HELP 227 */
263  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_ICO_00 228 */
264  SDL_SCANCODE_UNKNOWN, /* 229 */
265  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_ICO_CLEAR 230 */
266  SDL_SCANCODE_UNKNOWN, /* 231 */
267  SDL_SCANCODE_UNKNOWN, /* 232 */
268  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_RESET 233 */
269  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_JUMP 234 */
270  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_PA1 235 */
271  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_PA2 236 */
272  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_PA3 237 */
273  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_WSCTRL 238 */
274  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_CUSEL 239 */
275  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_ATTN 240 */
276  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_FINISH 241 */
277  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_COPY 242 */
278  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_AUTO 243 */
279  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_ENLW 244 */
280  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_BACKTAB 245 */
281  SDL_SCANCODE_UNKNOWN, /* DOM_VK_ATTN 246 */
282  SDL_SCANCODE_UNKNOWN, /* DOM_VK_CRSEL 247 */
283  SDL_SCANCODE_UNKNOWN, /* DOM_VK_EXSEL 248 */
284  SDL_SCANCODE_UNKNOWN, /* DOM_VK_EREOF 249 */
285  SDL_SCANCODE_AUDIOPLAY, /* DOM_VK_PLAY 250 */
286  SDL_SCANCODE_UNKNOWN, /* DOM_VK_ZOOM 251 */
287  SDL_SCANCODE_UNKNOWN, /* 252 */
288  SDL_SCANCODE_UNKNOWN, /* DOM_VK_PA1 253 */
289  SDL_SCANCODE_UNKNOWN, /* DOM_VK_WIN_OEM_CLEAR 254 */
290  SDL_SCANCODE_UNKNOWN, /* 255 */
291 };
292 
293 static Uint8 SDL_NACL_translate_mouse_button(int32_t button) {
294  switch (button) {
295  case PP_INPUTEVENT_MOUSEBUTTON_LEFT:
296  return SDL_BUTTON_LEFT;
297  case PP_INPUTEVENT_MOUSEBUTTON_MIDDLE:
298  return SDL_BUTTON_MIDDLE;
299  case PP_INPUTEVENT_MOUSEBUTTON_RIGHT:
300  return SDL_BUTTON_RIGHT;
301 
302  case PP_INPUTEVENT_MOUSEBUTTON_NONE:
303  default:
304  return 0;
305  }
306 }
307 
308 static SDL_Scancode
309 SDL_NACL_translate_keycode(int keycode)
310 {
312 
313  if (keycode < SDL_arraysize(NACL_Keycodes)) {
314  scancode = NACL_Keycodes[keycode];
315  }
316  if (scancode == SDL_SCANCODE_UNKNOWN) {
317  SDL_Log("The key you just pressed is not recognized by SDL. To help get this fixed, please report this to the SDL forums/mailing list <https://discourse.libsdl.org/> NACL KeyCode %d", keycode);
318  }
319  return scancode;
320 }
321 
322 void NACL_PumpEvents(_THIS) {
323  PSEvent* ps_event;
324  PP_Resource event;
325  PP_InputEvent_Type type;
326  PP_InputEvent_Modifier modifiers;
327  struct PP_Rect rect;
328  struct PP_FloatPoint fp;
329  struct PP_Point location;
330  struct PP_Var var;
331  const char *str;
333  Uint32 str_len;
334  SDL_VideoData *driverdata = (SDL_VideoData *) _this->driverdata;
335  SDL_Mouse *mouse = SDL_GetMouse();
336 
337  if (driverdata->window) {
338  while ((ps_event = PSEventTryAcquire()) != NULL) {
339  event = ps_event->as_resource;
340  switch(ps_event->type) {
341  /* From DidChangeView, contains a view resource */
342  case PSE_INSTANCE_DIDCHANGEVIEW:
343  driverdata->ppb_view->GetRect(event, &rect);
344  NACL_SetScreenResolution(rect.size.width, rect.size.height, SDL_PIXELFORMAT_UNKNOWN);
345  // FIXME: Rebuild context? See life.c UpdateContext
346  break;
347 
348  /* From HandleInputEvent, contains an input resource. */
349  case PSE_INSTANCE_HANDLEINPUT:
350  type = driverdata->ppb_input_event->GetType(event);
351  modifiers = driverdata->ppb_input_event->GetModifiers(event);
352  switch(type) {
353  case PP_INPUTEVENT_TYPE_MOUSEDOWN:
354  SDL_SendMouseButton(mouse->focus, mouse->mouseID, SDL_PRESSED, SDL_NACL_translate_mouse_button(driverdata->ppb_mouse_input_event->GetButton(event)));
355  break;
356  case PP_INPUTEVENT_TYPE_MOUSEUP:
357  SDL_SendMouseButton(mouse->focus, mouse->mouseID, SDL_RELEASED, SDL_NACL_translate_mouse_button(driverdata->ppb_mouse_input_event->GetButton(event)));
358  break;
359  case PP_INPUTEVENT_TYPE_WHEEL:
360  /* FIXME: GetTicks provides high resolution scroll events */
361  fp = driverdata->ppb_wheel_input_event->GetDelta(event);
362  SDL_SendMouseWheel(mouse->focus, mouse->mouseID, fp.x, fp.y, SDL_MOUSEWHEEL_NORMAL);
363  break;
364 
365  case PP_INPUTEVENT_TYPE_MOUSEENTER:
366  case PP_INPUTEVENT_TYPE_MOUSELEAVE:
367  /* FIXME: Mouse Focus */
368  break;
369 
370 
371  case PP_INPUTEVENT_TYPE_MOUSEMOVE:
372  location = driverdata->ppb_mouse_input_event->GetPosition(event);
373  SDL_SendMouseMotion(mouse->focus, mouse->mouseID, SDL_FALSE, location.x, location.y);
374  break;
375 
376  case PP_INPUTEVENT_TYPE_TOUCHSTART:
377  case PP_INPUTEVENT_TYPE_TOUCHMOVE:
378  case PP_INPUTEVENT_TYPE_TOUCHEND:
379  case PP_INPUTEVENT_TYPE_TOUCHCANCEL:
380  /* FIXME: Touch events */
381  break;
382 
383  case PP_INPUTEVENT_TYPE_KEYDOWN:
384  SDL_SendKeyboardKey(SDL_PRESSED, SDL_NACL_translate_keycode(driverdata->ppb_keyboard_input_event->GetKeyCode(event)));
385  break;
386 
387  case PP_INPUTEVENT_TYPE_KEYUP:
388  SDL_SendKeyboardKey(SDL_RELEASED, SDL_NACL_translate_keycode(driverdata->ppb_keyboard_input_event->GetKeyCode(event)));
389  break;
390 
391  case PP_INPUTEVENT_TYPE_CHAR:
392  var = driverdata->ppb_keyboard_input_event->GetCharacterText(event);
393  str = driverdata->ppb_var->VarToUtf8(var, &str_len);
394  /* str is not null terminated! */
395  if ( str_len >= SDL_arraysize(text) ) {
396  str_len = SDL_arraysize(text) - 1;
397  }
398  SDL_strlcpy(text, str, str_len );
399  text[str_len] = '\0';
400 
402  /* FIXME: Do we have to handle ref counting? driverdata->ppb_var->Release(var);*/
403  break;
404 
405  default:
406  break;
407  }
408  break;
409 
410 
411  /* From HandleMessage, contains a PP_Var. */
412  case PSE_INSTANCE_HANDLEMESSAGE:
413  break;
414 
415  /* From DidChangeFocus, contains a PP_Bool with the current focus state. */
416  case PSE_INSTANCE_DIDCHANGEFOCUS:
417  break;
418 
419  /* When the 3D context is lost, no resource. */
420  case PSE_GRAPHICS3D_GRAPHICS3DCONTEXTLOST:
421  break;
422 
423  /* When the mouse lock is lost. */
424  case PSE_MOUSELOCK_MOUSELOCKLOST:
425  break;
426 
427  default:
428  break;
429  }
430 
431  PSEventRelease(ps_event);
432  }
433  }
434 }
435 
436 #endif /* SDL_VIDEO_DRIVER_NACL */
437 
438 /* vi: set ts=4 sw=4 expandtab: */
SDL.h
SDL_SCANCODE_KP_2
@ SDL_SCANCODE_KP_2
Definition: SDL_scancode.h:189
SDL_GetMouse
SDL_Mouse * SDL_GetMouse(void)
Definition: SDL_mouse.c:170
SDL_naclevents_c.h
SDL_SCANCODE_3
@ SDL_SCANCODE_3
Definition: SDL_scancode.h:83
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:179
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_KP_MINUS
@ SDL_SCANCODE_KP_MINUS
Definition: SDL_scancode.h:185
SDL_SCANCODE_KP_AMPERSAND
@ SDL_SCANCODE_KP_AMPERSAND
Definition: SDL_scancode.h:304
SDL_SCANCODE_6
@ SDL_SCANCODE_6
Definition: SDL_scancode.h:86
SDL_strlcpy
#define SDL_strlcpy
Definition: SDL_dynapi_overrides.h:394
SDL_VideoDevice::driverdata
void * driverdata
Definition: SDL_sysvideo.h:389
SDL_SCANCODE_LEFT
@ SDL_SCANCODE_LEFT
Definition: SDL_scancode.h:177
SDL_SCANCODE_PERIOD
@ SDL_SCANCODE_PERIOD
Definition: SDL_scancode.h:148
SDL_SCANCODE_F17
@ SDL_SCANCODE_F17
Definition: SDL_scancode.h:219
SDL_SCANCODE_F13
@ SDL_SCANCODE_F13
Definition: SDL_scancode.h:215
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
location
GLint location
Definition: SDL_opengl_glext.h:682
SDL_SCANCODE_K
@ SDL_SCANCODE_K
Definition: SDL_scancode.h:64
SDL_naclvideo.h
NULL
#define NULL
Definition: begin_code.h:167
SDL_SCANCODE_KP_PERIOD
@ SDL_SCANCODE_KP_PERIOD
Definition: SDL_scancode.h:198
SDL_VideoData::ppb_mouse_input_event
const PPB_MouseInputEvent * ppb_mouse_input_event
Definition: SDL_naclvideo.h:52
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_BUTTON_RIGHT
#define SDL_BUTTON_RIGHT
Definition: SDL_mouse.h:284
modifiers
EGLint EGLint EGLuint64KHR * modifiers
Definition: eglext.h:719
SDL_SCANCODE_U
@ SDL_SCANCODE_U
Definition: SDL_scancode.h:74
SDL_SCANCODE_VOLUMEDOWN
@ SDL_SCANCODE_VOLUMEDOWN
Definition: SDL_scancode.h:240
SDL_SCANCODE_F15
@ SDL_SCANCODE_F15
Definition: SDL_scancode.h:217
SDL_Scancode
SDL_Scancode
The SDL keyboard scancode representation.
Definition: SDL_scancode.h:44
SDL_SCANCODE_KP_8
@ SDL_SCANCODE_KP_8
Definition: SDL_scancode.h:195
SDL_VideoData::ppb_view
const PPB_View * ppb_view
Definition: SDL_naclvideo.h:48
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_LANG1
@ SDL_SCANCODE_LANG1
Definition: SDL_scancode.h:258
SDL_SCANCODE_UP
@ SDL_SCANCODE_UP
Definition: SDL_scancode.h:179
SDL_SCANCODE_KP_5
@ SDL_SCANCODE_KP_5
Definition: SDL_scancode.h:192
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:203
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_EQUALS
@ SDL_SCANCODE_EQUALS
Definition: SDL_scancode.h:99
SDL_VideoData::ppb_input_event
const PPB_InputEvent * ppb_input_event
Definition: SDL_naclvideo.h:50
NACL_PumpEvents
void NACL_PumpEvents(_THIS)
SDL_SCANCODE_KP_AT
@ SDL_SCANCODE_KP_AT
Definition: SDL_scancode.h:311
SDL_SCANCODE_CANCEL
@ SDL_SCANCODE_CANCEL
Definition: SDL_scancode.h:270
SDL_SCANCODE_VOLUMEUP
@ SDL_SCANCODE_VOLUMEUP
Definition: SDL_scancode.h:239
SDL_SCANCODE_F3
@ SDL_SCANCODE_F3
Definition: SDL_scancode.h:155
SDL_SCANCODE_EXECUTE
@ SDL_SCANCODE_EXECUTE
Definition: SDL_scancode.h:227
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_SCANCODE_F18
@ SDL_SCANCODE_F18
Definition: SDL_scancode.h:220
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
NACL_SetScreenResolution
void NACL_SetScreenResolution(int width, int height, Uint32 format)
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_SendKeyboardText
int SDL_SendKeyboardText(const char *text)
Definition: SDL_keyboard.c:789
SDL_SCANCODE_F5
@ SDL_SCANCODE_F5
Definition: SDL_scancode.h:157
SDL_PRESSED
#define SDL_PRESSED
Definition: SDL_events.h:50
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
event
struct _cl_event * event
Definition: SDL_opengl_glext.h:2652
SDL_SCANCODE_KP_HASH
@ SDL_SCANCODE_KP_HASH
Definition: SDL_scancode.h:309
SDL_SCANCODE_F16
@ SDL_SCANCODE_F16
Definition: SDL_scancode.h:218
SDL_VideoData::ppb_keyboard_input_event
const PPB_KeyboardInputEvent * ppb_keyboard_input_event
Definition: SDL_naclvideo.h:51
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_BUTTON_LEFT
#define SDL_BUTTON_LEFT
Definition: SDL_mouse.h:282
SDL_SCANCODE_SPACE
@ SDL_SCANCODE_SPACE
Definition: SDL_scancode.h:96
SDL_SCANCODE_9
@ SDL_SCANCODE_9
Definition: SDL_scancode.h:89
SDL_SCANCODE_KP_EXCLAM
@ SDL_SCANCODE_KP_EXCLAM
Definition: SDL_scancode.h:312
SDL_SCANCODE_V
@ SDL_SCANCODE_V
Definition: SDL_scancode.h:75
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:31
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
int32_t
signed int int32_t
Definition: SDL_config_windows.h:62
SDL_SCANCODE_F24
@ SDL_SCANCODE_F24
Definition: SDL_scancode.h:226
SDL_SCANCODE_C
@ SDL_SCANCODE_C
Definition: SDL_scancode.h:56
SDL_SCANCODE_LANG2
@ SDL_SCANCODE_LANG2
Definition: SDL_scancode.h:259
SDL_SCANCODE_A
@ SDL_SCANCODE_A
Definition: SDL_scancode.h:54
SDL_SCANCODE_F21
@ SDL_SCANCODE_F21
Definition: SDL_scancode.h:223
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_SendMouseMotion
int SDL_SendMouseMotion(SDL_Window *window, SDL_MouseID mouseID, int relative, int x, int y)
Definition: SDL_mouse.c:293
SDL_BUTTON_MIDDLE
#define SDL_BUTTON_MIDDLE
Definition: SDL_mouse.h:283
SDL_SCANCODE_KP_PERCENT
@ SDL_SCANCODE_KP_PERCENT
Definition: SDL_scancode.h:301
SDL_SCANCODE_0
@ SDL_SCANCODE_0
Definition: SDL_scancode.h:90
SDL_SCANCODE_ESCAPE
@ SDL_SCANCODE_ESCAPE
Definition: SDL_scancode.h:93
SDL_SCANCODE_F14
@ SDL_SCANCODE_F14
Definition: SDL_scancode.h:216
SDL_SCANCODE_KP_9
@ SDL_SCANCODE_KP_9
Definition: SDL_scancode.h:196
SDL_SCANCODE_F20
@ SDL_SCANCODE_F20
Definition: SDL_scancode.h:222
SDL_SCANCODE_F11
@ SDL_SCANCODE_F11
Definition: SDL_scancode.h:163
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
text
static char text[MAX_TEXT_LENGTH]
Definition: testime.c:47
SDL_SCANCODE_KP_DIVIDE
@ SDL_SCANCODE_KP_DIVIDE
Definition: SDL_scancode.h:183
SDL_Mouse
Definition: SDL_mouse_c.h:44
SDL_SCANCODE_KP_LESS
@ SDL_SCANCODE_KP_LESS
Definition: SDL_scancode.h:302
SDL_SCANCODE_CURRENCYUNIT
@ SDL_SCANCODE_CURRENCYUNIT
Definition: SDL_scancode.h:285
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_COLON
@ SDL_SCANCODE_KP_COLON
Definition: SDL_scancode.h:308
SDL_VideoData::window
SDL_Window * window
Definition: SDL_naclvideo.h:40
SDL_SCANCODE_KP_COMMA
@ SDL_SCANCODE_KP_COMMA
Definition: SDL_scancode.h:245
SDL_SCANCODE_UNKNOWN
@ SDL_SCANCODE_UNKNOWN
Definition: SDL_scancode.h:45
SDL_SendMouseWheel
int SDL_SendMouseWheel(SDL_Window *window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction)
Definition: SDL_mouse.c:600
SDL_SCANCODE_LSHIFT
@ SDL_SCANCODE_LSHIFT
Definition: SDL_scancode.h:329
SDL_SCANCODE_LEFTBRACKET
@ SDL_SCANCODE_LEFTBRACKET
Definition: SDL_scancode.h:100
SDL_SCANCODE_CLEAR
@ SDL_SCANCODE_CLEAR
Definition: SDL_scancode.h:271
SDL_arraysize
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:115
SDL_VideoData::ppb_var
const PPB_Var * ppb_var
Definition: SDL_naclvideo.h:49
SDL_SCANCODE_DELETE
@ SDL_SCANCODE_DELETE
Definition: SDL_scancode.h:173
SDL_VideoData::ppb_wheel_input_event
const PPB_WheelInputEvent * ppb_wheel_input_event
Definition: SDL_naclvideo.h:53
SDL_SCANCODE_F8
@ SDL_SCANCODE_F8
Definition: SDL_scancode.h:160
SDL_SCANCODE_NONUSBACKSLASH
@ SDL_SCANCODE_NONUSBACKSLASH
Definition: SDL_scancode.h:200
SDL_SCANCODE_F
@ SDL_SCANCODE_F
Definition: SDL_scancode.h:59
SDL_TEXTINPUTEVENT_TEXT_SIZE
#define SDL_TEXTINPUTEVENT_TEXT_SIZE
Definition: SDL_events.h:238
SDL_SCANCODE_COMMA
@ SDL_SCANCODE_COMMA
Definition: SDL_scancode.h:147
SDL_SCANCODE_APPLICATION
@ SDL_SCANCODE_APPLICATION
Definition: SDL_scancode.h:210
SDL_SCANCODE_X
@ SDL_SCANCODE_X
Definition: SDL_scancode.h:77
SDL_SCANCODE_F2
@ SDL_SCANCODE_F2
Definition: SDL_scancode.h:154
SDL_SCANCODE_B
@ SDL_SCANCODE_B
Definition: SDL_scancode.h:55
SDL_SCANCODE_2
@ SDL_SCANCODE_2
Definition: SDL_scancode.h:82
SDL_SCANCODE_M
@ SDL_SCANCODE_M
Definition: SDL_scancode.h:66
SDL_SCANCODE_PAGEUP
@ SDL_SCANCODE_PAGEUP
Definition: SDL_scancode.h:172
SDL_PIXELFORMAT_UNKNOWN
@ SDL_PIXELFORMAT_UNKNOWN
Definition: SDL_pixels.h:173
SDL_SCANCODE_NUMLOCKCLEAR
@ SDL_SCANCODE_NUMLOCKCLEAR
Definition: SDL_scancode.h:181
SDL_SCANCODE_APOSTROPHE
@ SDL_SCANCODE_APOSTROPHE
Definition: SDL_scancode.h:129
SDL_SCANCODE_MODE
@ SDL_SCANCODE_MODE
Definition: SDL_scancode.h:337
SDL_SCANCODE_F23
@ SDL_SCANCODE_F23
Definition: SDL_scancode.h:225
SDL_SCANCODE_Q
@ SDL_SCANCODE_Q
Definition: SDL_scancode.h:70
SDL_SCANCODE_LGUI
@ SDL_SCANCODE_LGUI
Definition: SDL_scancode.h:331
SDL_SCANCODE_G
@ SDL_SCANCODE_G
Definition: SDL_scancode.h:60
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_MOUSEWHEEL_NORMAL
@ SDL_MOUSEWHEEL_NORMAL
Definition: SDL_mouse.h:68
SDL_FALSE
@ SDL_FALSE
Definition: SDL_stdinc.h:163
SDL_SCANCODE_F19
@ SDL_SCANCODE_F19
Definition: SDL_scancode.h:221
SDL_SCANCODE_INSERT
@ SDL_SCANCODE_INSERT
Definition: SDL_scancode.h:169
SDL_SCANCODE_F22
@ SDL_SCANCODE_F22
Definition: SDL_scancode.h:224
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
SDL_SCANCODE_END
@ SDL_SCANCODE_END
Definition: SDL_scancode.h:174
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_L
@ SDL_SCANCODE_L
Definition: SDL_scancode.h:65
SDL_SCANCODE_8
@ SDL_SCANCODE_8
Definition: SDL_scancode.h:88
type
GLuint GLuint GLsizei GLenum type
Definition: SDL_opengl.h:1571
button
SDL_Texture * button
Definition: testgamecontroller.c:67
SDL_SCANCODE_F12
@ SDL_SCANCODE_F12
Definition: SDL_scancode.h:164
SDL_SCANCODE_HOME
@ SDL_SCANCODE_HOME
Definition: SDL_scancode.h:171
SDL_SCANCODE_RETURN
@ SDL_SCANCODE_RETURN
Definition: SDL_scancode.h:92
SDL_SendMouseButton
int SDL_SendMouseButton(SDL_Window *window, SDL_MouseID mouseID, Uint8 state, Uint8 button)
Definition: SDL_mouse.c:594
SDL_SCANCODE_F10
@ SDL_SCANCODE_F10
Definition: SDL_scancode.h:162
SDL_SCANCODE_O
@ SDL_SCANCODE_O
Definition: SDL_scancode.h:68
SDL_VideoData
Definition: SDL_androidvideo.h:37
SDL_SCANCODE_KP_GREATER
@ SDL_SCANCODE_KP_GREATER
Definition: SDL_scancode.h:303
SDL_SCANCODE_F4
@ SDL_SCANCODE_F4
Definition: SDL_scancode.h:156