SDL 2.0
SDL_naclevents.c
Go to the documentation of this file.
1/*
2 Simple DirectMedia Layer
3 Copyright (C) 1997-2019 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
34static SDL_Scancode NACL_Keycodes[] = {
38 SDL_SCANCODE_CANCEL, /* DOM_VK_CANCEL 3 */
41 SDL_SCANCODE_HELP, /* DOM_VK_HELP 6 */
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
293static 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
308static SDL_Scancode
309SDL_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
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);
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: */
#define _THIS
signed int int32_t
#define SDL_strlcpy
#define SDL_Log
#define SDL_TEXTINPUTEVENT_TEXT_SIZE
Definition: SDL_events.h:238
#define SDL_RELEASED
Definition: SDL_events.h:49
#define SDL_PRESSED
Definition: SDL_events.h:50
int SDL_SendKeyboardText(const char *text)
Definition: SDL_keyboard.c:789
int SDL_SendKeyboardKey(Uint8 state, SDL_Scancode scancode)
Definition: SDL_keyboard.c:679
int SDL_SendMouseButton(SDL_Window *window, SDL_MouseID mouseID, Uint8 state, Uint8 button)
Definition: SDL_mouse.c:605
SDL_Mouse * SDL_GetMouse(void)
Definition: SDL_mouse.c:178
int SDL_SendMouseWheel(SDL_Window *window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction)
Definition: SDL_mouse.c:611
int SDL_SendMouseMotion(SDL_Window *window, SDL_MouseID mouseID, int relative, int x, int y)
Definition: SDL_mouse.c:301
#define SDL_BUTTON_MIDDLE
Definition: SDL_mouse.h:283
#define SDL_BUTTON_RIGHT
Definition: SDL_mouse.h:284
#define SDL_BUTTON_LEFT
Definition: SDL_mouse.h:282
@ SDL_MOUSEWHEEL_NORMAL
Definition: SDL_mouse.h:68
void NACL_PumpEvents(_THIS)
void NACL_SetScreenResolution(int width, int height, Uint32 format)
GLuint GLuint GLsizei GLenum type
Definition: SDL_opengl.h:1571
struct _cl_event * event
GLint location
@ SDL_PIXELFORMAT_UNKNOWN
Definition: SDL_pixels.h:173
SDL_Scancode
The SDL keyboard scancode representation.
Definition: SDL_scancode.h:44
@ SDL_SCANCODE_E
Definition: SDL_scancode.h:58
@ SDL_SCANCODE_END
Definition: SDL_scancode.h:174
@ SDL_SCANCODE_BACKSLASH
Definition: SDL_scancode.h:102
@ SDL_SCANCODE_ESCAPE
Definition: SDL_scancode.h:93
@ SDL_SCANCODE_KP_EXCLAM
Definition: SDL_scancode.h:312
@ SDL_SCANCODE_F15
Definition: SDL_scancode.h:217
@ SDL_SCANCODE_M
Definition: SDL_scancode.h:66
@ SDL_SCANCODE_F12
Definition: SDL_scancode.h:164
@ SDL_SCANCODE_X
Definition: SDL_scancode.h:77
@ SDL_SCANCODE_W
Definition: SDL_scancode.h:76
@ SDL_SCANCODE_KP_PLUS
Definition: SDL_scancode.h:186
@ SDL_SCANCODE_F4
Definition: SDL_scancode.h:156
@ SDL_SCANCODE_RIGHTBRACKET
Definition: SDL_scancode.h:101
@ SDL_SCANCODE_KP_GREATER
Definition: SDL_scancode.h:303
@ SDL_SCANCODE_LANG2
Definition: SDL_scancode.h:259
@ SDL_SCANCODE_CAPSLOCK
Definition: SDL_scancode.h:151
@ SDL_SCANCODE_B
Definition: SDL_scancode.h:55
@ SDL_SCANCODE_F2
Definition: SDL_scancode.h:154
@ SDL_SCANCODE_KP_MINUS
Definition: SDL_scancode.h:185
@ SDL_SCANCODE_F6
Definition: SDL_scancode.h:158
@ SDL_SCANCODE_NONUSBACKSLASH
Definition: SDL_scancode.h:200
@ SDL_SCANCODE_KP_0
Definition: SDL_scancode.h:197
@ SDL_SCANCODE_F11
Definition: SDL_scancode.h:163
@ SDL_SCANCODE_CANCEL
Definition: SDL_scancode.h:270
@ SDL_SCANCODE_COMMA
Definition: SDL_scancode.h:147
@ SDL_SCANCODE_KP_PERIOD
Definition: SDL_scancode.h:198
@ SDL_SCANCODE_KP_LEFTPAREN
Definition: SDL_scancode.h:287
@ SDL_SCANCODE_F24
Definition: SDL_scancode.h:226
@ SDL_SCANCODE_Y
Definition: SDL_scancode.h:78
@ SDL_SCANCODE_APOSTROPHE
Definition: SDL_scancode.h:129
@ SDL_SCANCODE_KP_COMMA
Definition: SDL_scancode.h:245
@ SDL_SCANCODE_2
Definition: SDL_scancode.h:82
@ SDL_SCANCODE_O
Definition: SDL_scancode.h:68
@ SDL_SCANCODE_RGUI
Definition: SDL_scancode.h:335
@ SDL_SCANCODE_K
Definition: SDL_scancode.h:64
@ SDL_SCANCODE_F
Definition: SDL_scancode.h:59
@ SDL_SCANCODE_DELETE
Definition: SDL_scancode.h:173
@ SDL_SCANCODE_F10
Definition: SDL_scancode.h:162
@ SDL_SCANCODE_F3
Definition: SDL_scancode.h:155
@ SDL_SCANCODE_KP_AMPERSAND
Definition: SDL_scancode.h:304
@ SDL_SCANCODE_KP_COLON
Definition: SDL_scancode.h:308
@ SDL_SCANCODE_5
Definition: SDL_scancode.h:85
@ SDL_SCANCODE_KP_RIGHTPAREN
Definition: SDL_scancode.h:288
@ SDL_SCANCODE_H
Definition: SDL_scancode.h:61
@ SDL_SCANCODE_SLASH
Definition: SDL_scancode.h:149
@ SDL_SCANCODE_F1
Definition: SDL_scancode.h:153
@ SDL_SCANCODE_F21
Definition: SDL_scancode.h:223
@ SDL_SCANCODE_KP_6
Definition: SDL_scancode.h:193
@ SDL_SCANCODE_KP_HASH
Definition: SDL_scancode.h:309
@ SDL_SCANCODE_7
Definition: SDL_scancode.h:87
@ SDL_SCANCODE_9
Definition: SDL_scancode.h:89
@ SDL_SCANCODE_KP_7
Definition: SDL_scancode.h:194
@ SDL_SCANCODE_KP_9
Definition: SDL_scancode.h:196
@ SDL_SCANCODE_VOLUMEUP
Definition: SDL_scancode.h:239
@ SDL_SCANCODE_NUMLOCKCLEAR
Definition: SDL_scancode.h:181
@ SDL_SCANCODE_PRINTSCREEN
Definition: SDL_scancode.h:166
@ SDL_SCANCODE_KP_3
Definition: SDL_scancode.h:190
@ SDL_SCANCODE_SCROLLLOCK
Definition: SDL_scancode.h:167
@ SDL_SCANCODE_RETURN
Definition: SDL_scancode.h:92
@ SDL_SCANCODE_HELP
Definition: SDL_scancode.h:228
@ SDL_SCANCODE_PAGEDOWN
Definition: SDL_scancode.h:175
@ SDL_SCANCODE_LSHIFT
Definition: SDL_scancode.h:329
@ SDL_SCANCODE_TAB
Definition: SDL_scancode.h:95
@ SDL_SCANCODE_LANG1
Definition: SDL_scancode.h:258
@ SDL_SCANCODE_3
Definition: SDL_scancode.h:83
@ SDL_SCANCODE_LCTRL
Definition: SDL_scancode.h:328
@ SDL_SCANCODE_SEMICOLON
Definition: SDL_scancode.h:128
@ SDL_SCANCODE_F16
Definition: SDL_scancode.h:218
@ SDL_SCANCODE_F22
Definition: SDL_scancode.h:224
@ SDL_SCANCODE_UNKNOWN
Definition: SDL_scancode.h:45
@ SDL_SCANCODE_LGUI
Definition: SDL_scancode.h:331
@ SDL_SCANCODE_0
Definition: SDL_scancode.h:90
@ SDL_SCANCODE_KP_LESS
Definition: SDL_scancode.h:302
@ SDL_SCANCODE_LEFTBRACKET
Definition: SDL_scancode.h:100
@ SDL_SCANCODE_F19
Definition: SDL_scancode.h:221
@ SDL_SCANCODE_V
Definition: SDL_scancode.h:75
@ SDL_SCANCODE_EXECUTE
Definition: SDL_scancode.h:227
@ SDL_SCANCODE_GRAVE
Definition: SDL_scancode.h:130
@ SDL_SCANCODE_RALT
Definition: SDL_scancode.h:334
@ SDL_SCANCODE_MUTE
Definition: SDL_scancode.h:238
@ SDL_SCANCODE_8
Definition: SDL_scancode.h:88
@ SDL_SCANCODE_I
Definition: SDL_scancode.h:62
@ SDL_SCANCODE_KP_PERCENT
Definition: SDL_scancode.h:301
@ SDL_SCANCODE_F17
Definition: SDL_scancode.h:219
@ SDL_SCANCODE_6
Definition: SDL_scancode.h:86
@ SDL_SCANCODE_S
Definition: SDL_scancode.h:72
@ SDL_SCANCODE_PAGEUP
Definition: SDL_scancode.h:172
@ SDL_SCANCODE_Z
Definition: SDL_scancode.h:79
@ SDL_SCANCODE_AUDIOPLAY
Definition: SDL_scancode.h:354
@ SDL_SCANCODE_P
Definition: SDL_scancode.h:69
@ SDL_SCANCODE_D
Definition: SDL_scancode.h:57
@ SDL_SCANCODE_F23
Definition: SDL_scancode.h:225
@ SDL_SCANCODE_PERIOD
Definition: SDL_scancode.h:148
@ SDL_SCANCODE_R
Definition: SDL_scancode.h:71
@ SDL_SCANCODE_KP_AT
Definition: SDL_scancode.h:311
@ SDL_SCANCODE_KP_1
Definition: SDL_scancode.h:188
@ SDL_SCANCODE_DOWN
Definition: SDL_scancode.h:178
@ SDL_SCANCODE_RIGHT
Definition: SDL_scancode.h:176
@ SDL_SCANCODE_F7
Definition: SDL_scancode.h:159
@ SDL_SCANCODE_MINUS
Definition: SDL_scancode.h:98
@ SDL_SCANCODE_A
Definition: SDL_scancode.h:54
@ SDL_SCANCODE_MODE
Definition: SDL_scancode.h:337
@ SDL_SCANCODE_G
Definition: SDL_scancode.h:60
@ SDL_SCANCODE_KP_2
Definition: SDL_scancode.h:189
@ SDL_SCANCODE_U
Definition: SDL_scancode.h:74
@ SDL_SCANCODE_KP_MULTIPLY
Definition: SDL_scancode.h:184
@ SDL_SCANCODE_4
Definition: SDL_scancode.h:84
@ SDL_SCANCODE_F9
Definition: SDL_scancode.h:161
@ SDL_SCANCODE_F5
Definition: SDL_scancode.h:157
@ SDL_SCANCODE_UP
Definition: SDL_scancode.h:179
@ SDL_SCANCODE_LEFT
Definition: SDL_scancode.h:177
@ SDL_SCANCODE_SELECT
Definition: SDL_scancode.h:230
@ SDL_SCANCODE_APPLICATION
Definition: SDL_scancode.h:210
@ SDL_SCANCODE_KP_4
Definition: SDL_scancode.h:191
@ SDL_SCANCODE_C
Definition: SDL_scancode.h:56
@ SDL_SCANCODE_HOME
Definition: SDL_scancode.h:171
@ SDL_SCANCODE_F14
Definition: SDL_scancode.h:216
@ SDL_SCANCODE_T
Definition: SDL_scancode.h:73
@ SDL_SCANCODE_F8
Definition: SDL_scancode.h:160
@ SDL_SCANCODE_LALT
Definition: SDL_scancode.h:330
@ SDL_SCANCODE_KP_8
Definition: SDL_scancode.h:195
@ SDL_SCANCODE_F20
Definition: SDL_scancode.h:222
@ SDL_SCANCODE_KP_5
Definition: SDL_scancode.h:192
@ SDL_SCANCODE_L
Definition: SDL_scancode.h:65
@ SDL_SCANCODE_CLEAR
Definition: SDL_scancode.h:271
@ SDL_SCANCODE_VOLUMEDOWN
Definition: SDL_scancode.h:240
@ SDL_SCANCODE_SLEEP
Definition: SDL_scancode.h:386
@ SDL_SCANCODE_KP_DIVIDE
Definition: SDL_scancode.h:183
@ SDL_SCANCODE_F18
Definition: SDL_scancode.h:220
@ SDL_SCANCODE_F13
Definition: SDL_scancode.h:215
@ SDL_SCANCODE_CURRENCYUNIT
Definition: SDL_scancode.h:285
@ SDL_SCANCODE_N
Definition: SDL_scancode.h:67
@ SDL_SCANCODE_BACKSPACE
Definition: SDL_scancode.h:94
@ SDL_SCANCODE_EQUALS
Definition: SDL_scancode.h:99
@ SDL_SCANCODE_SPACE
Definition: SDL_scancode.h:96
@ SDL_SCANCODE_INSERT
Definition: SDL_scancode.h:169
@ SDL_SCANCODE_J
Definition: SDL_scancode.h:63
@ SDL_SCANCODE_1
Definition: SDL_scancode.h:81
@ SDL_SCANCODE_Q
Definition: SDL_scancode.h:70
@ SDL_FALSE
Definition: SDL_stdinc.h:163
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:115
uint32_t Uint32
Definition: SDL_stdinc.h:203
uint8_t Uint8
Definition: SDL_stdinc.h:179
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
#define NULL
Definition: begin_code.h:167
EGLint EGLint EGLuint64KHR * modifiers
Definition: eglext.h:719
const PPB_InputEvent * ppb_input_event
Definition: SDL_naclvideo.h:50
SDL_Window * window
Definition: SDL_naclvideo.h:40
const PPB_WheelInputEvent * ppb_wheel_input_event
Definition: SDL_naclvideo.h:53
const PPB_Var * ppb_var
Definition: SDL_naclvideo.h:49
const PPB_View * ppb_view
Definition: SDL_naclvideo.h:48
const PPB_KeyboardInputEvent * ppb_keyboard_input_event
Definition: SDL_naclvideo.h:51
const PPB_MouseInputEvent * ppb_mouse_input_event
Definition: SDL_naclvideo.h:52
SDL_Texture * button
static char text[MAX_TEXT_LENGTH]
Definition: testime.c:47
SDL_Rect rect
Definition: testrelative.c:27