diff options
author | Franklin Wei <git@fwei.tk> | 2018-02-07 20:04:46 -0500 |
---|---|---|
committer | Franklin Wei <git@fwei.tk> | 2018-03-12 20:52:01 -0400 |
commit | 6039eb05ba6d82ef56f2868c96654c552d117bf9 (patch) | |
tree | 9db7016bcbf66cfdf7b9bc998d84c6eaff9c8378 /apps/plugins/sdl/src/video/symbian/EKA2/SDL_epocevents.cpp | |
parent | ef373c03b96b0be08babca581d9f10bccfd4931f (diff) | |
download | rockbox-6039eb05ba6d82ef56f2868c96654c552d117bf9.tar.gz rockbox-6039eb05ba6d82ef56f2868c96654c552d117bf9.zip |
sdl: remove non-rockbox drivers
We never use any of these other drivers, so having them around just takes
up space.
Change-Id: Iced812162df1fef3fd55522b7e700acb6c3bcd41
Diffstat (limited to 'apps/plugins/sdl/src/video/symbian/EKA2/SDL_epocevents.cpp')
-rw-r--r-- | apps/plugins/sdl/src/video/symbian/EKA2/SDL_epocevents.cpp | 521 |
1 files changed, 0 insertions, 521 deletions
diff --git a/apps/plugins/sdl/src/video/symbian/EKA2/SDL_epocevents.cpp b/apps/plugins/sdl/src/video/symbian/EKA2/SDL_epocevents.cpp deleted file mode 100644 index 2452daed6f..0000000000 --- a/apps/plugins/sdl/src/video/symbian/EKA2/SDL_epocevents.cpp +++ /dev/null | |||
@@ -1,521 +0,0 @@ | |||
1 | #include "epoc_sdl.h" | ||
2 | |||
3 | #include <stdio.h> | ||
4 | #undef NULL | ||
5 | extern "C" { | ||
6 | //#define DEBUG_TRACE_ENABLED | ||
7 | #include "SDL_error.h" | ||
8 | #include "SDL_video.h" | ||
9 | #include "SDL_keysym.h" | ||
10 | #include "SDL_keyboard.h" | ||
11 | #include "SDL_events_c.h" | ||
12 | #include "SDL_timer.h" | ||
13 | } /* extern "C" */ | ||
14 | |||
15 | #include "SDL_epocvideo.h" | ||
16 | #include "SDL_epocevents_c.h" | ||
17 | |||
18 | #include "sdlepocapi.h" | ||
19 | |||
20 | #include <eikenv.h> | ||
21 | |||
22 | #include<bautils.h> | ||
23 | |||
24 | |||
25 | extern "C" | ||
26 | { | ||
27 | static SDL_keysym *TranslateKey(_THIS, int scancode, SDL_keysym *keysym); | ||
28 | } | ||
29 | |||
30 | //extern "C" { | ||
31 | /* The translation tables from a console scancode to a SDL keysym */ | ||
32 | static SDLKey keymap[MAX_SCANCODE]; | ||
33 | static SDL_keysym *TranslateKey(_THIS, int scancode, SDL_keysym *keysym); | ||
34 | void DisableKeyBlocking(_THIS); | ||
35 | //} /* extern "C" */ | ||
36 | |||
37 | SDLKey* KeyMap() | ||
38 | { | ||
39 | return keymap; | ||
40 | } | ||
41 | |||
42 | TBool isCursorVisible = EFalse; | ||
43 | |||
44 | void ResetKeyMap() | ||
45 | { | ||
46 | int i; | ||
47 | |||
48 | /* Initialize the key translation table */ | ||
49 | for ( i=0; i<SDL_TABLESIZE(keymap); ++i ) | ||
50 | keymap[i] = SDLK_UNKNOWN; | ||
51 | |||
52 | |||
53 | /* Numbers */ | ||
54 | for ( i = 0; i<32; ++i ){ | ||
55 | keymap[' ' + i] = (SDLKey)(SDLK_SPACE+i); | ||
56 | } | ||
57 | /* e.g. Alphabet keys */ | ||
58 | for ( i = 0; i<32; ++i ){ | ||
59 | keymap['A' + i] = (SDLKey)(SDLK_a+i); | ||
60 | } | ||
61 | |||
62 | keymap[EStdKeyBackspace] = SDLK_BACKSPACE; | ||
63 | keymap[EStdKeyTab] = SDLK_TAB; | ||
64 | keymap[EStdKeyEnter] = SDLK_RETURN; | ||
65 | keymap[EStdKeyEscape] = SDLK_ESCAPE; | ||
66 | keymap[EStdKeySpace] = SDLK_SPACE; | ||
67 | keymap[EStdKeyPause] = SDLK_PAUSE; | ||
68 | keymap[EStdKeyHome] = SDLK_HOME; | ||
69 | keymap[EStdKeyEnd] = SDLK_END; | ||
70 | keymap[EStdKeyPageUp] = SDLK_PAGEUP; | ||
71 | keymap[EStdKeyPageDown] = SDLK_PAGEDOWN; | ||
72 | keymap[EStdKeyDelete] = SDLK_DELETE; | ||
73 | keymap[EStdKeyUpArrow] = SDLK_UP; | ||
74 | keymap[EStdKeyDownArrow] = SDLK_DOWN; | ||
75 | keymap[EStdKeyLeftArrow] = SDLK_LEFT; | ||
76 | keymap[EStdKeyRightArrow] = SDLK_RIGHT; | ||
77 | keymap[EStdKeyCapsLock] = SDLK_CAPSLOCK; | ||
78 | keymap[EStdKeyLeftShift] = SDLK_LSHIFT; | ||
79 | keymap[EStdKeyRightShift] = SDLK_RSHIFT; | ||
80 | keymap[EStdKeyLeftAlt] = SDLK_LALT; | ||
81 | keymap[EStdKeyRightAlt] = SDLK_RALT; | ||
82 | keymap[EStdKeyLeftCtrl] = SDLK_LCTRL; | ||
83 | keymap[EStdKeyRightCtrl] = SDLK_RCTRL; | ||
84 | keymap[EStdKeyLeftFunc] = SDLK_LMETA; | ||
85 | keymap[EStdKeyRightFunc] = SDLK_RMETA; | ||
86 | keymap[EStdKeyInsert] = SDLK_INSERT; | ||
87 | keymap[EStdKeyComma] = SDLK_COMMA; | ||
88 | keymap[EStdKeyFullStop] = SDLK_PERIOD; | ||
89 | keymap[EStdKeyForwardSlash] = SDLK_SLASH; | ||
90 | keymap[EStdKeyBackSlash] = SDLK_BACKSLASH; | ||
91 | keymap[EStdKeySemiColon] = SDLK_SEMICOLON; | ||
92 | keymap[EStdKeySingleQuote] = SDLK_QUOTE; | ||
93 | keymap[EStdKeyHash] = SDLK_HASH; | ||
94 | keymap[EStdKeySquareBracketLeft] = SDLK_LEFTBRACKET; | ||
95 | keymap[EStdKeySquareBracketRight] = SDLK_RIGHTBRACKET; | ||
96 | keymap[EStdKeyMinus] = SDLK_MINUS; | ||
97 | keymap[EStdKeyEquals] = SDLK_EQUALS; | ||
98 | |||
99 | keymap[EStdKeyF1] = SDLK_F1; | ||
100 | keymap[EStdKeyF2] = SDLK_F2; | ||
101 | keymap[EStdKeyF3] = SDLK_F3; | ||
102 | keymap[EStdKeyF4] = SDLK_F4; | ||
103 | keymap[EStdKeyF5] = SDLK_F5; | ||
104 | keymap[EStdKeyF6] = SDLK_F6; | ||
105 | keymap[EStdKeyF7] = SDLK_F7; | ||
106 | keymap[EStdKeyF8] = SDLK_F8; | ||
107 | |||
108 | keymap[EStdKeyF9] = SDLK_F9; | ||
109 | keymap[EStdKeyF10] = SDLK_F10; | ||
110 | keymap[EStdKeyF11] = SDLK_F11; | ||
111 | keymap[EStdKeyF12] = SDLK_F12; | ||
112 | |||
113 | |||
114 | keymap[EStdKeyXXX] = SDLK_RETURN; /* "fire" key */ | ||
115 | |||
116 | keymap[EStdKeyDevice3] = SDLK_RETURN; /* "fire" key */ | ||
117 | keymap[EStdKeyNkpAsterisk] = SDLK_ASTERISK; | ||
118 | keymap[EStdKeyYes] = SDLK_HOME; /* "call" key */ | ||
119 | keymap[EStdKeyNo] = SDLK_END; /* "end call" key */ | ||
120 | keymap[EStdKeyDevice0] = SDLK_SPACE; /* right menu key */ | ||
121 | keymap[EStdKeyDevice1] = SDLK_ESCAPE; /* left menu key */ | ||
122 | keymap[EStdKeyDevice2] = SDLK_POWER; /* power key */ | ||
123 | |||
124 | keymap[EStdKeyMenu] = SDLK_MENU; // menu key | ||
125 | keymap[EStdKeyDevice6] = SDLK_LEFT; // Rocker (joystick) left | ||
126 | keymap[EStdKeyDevice7] = SDLK_RIGHT; // Rocker (joystick) right | ||
127 | keymap[EStdKeyDevice8] = SDLK_UP; // Rocker (joystick) up | ||
128 | keymap[EStdKeyDevice9] = SDLK_DOWN; // Rocker (joystick) down | ||
129 | keymap[EStdKeyLeftFunc] = SDLK_LALT; //chr? | ||
130 | keymap[EStdKeyRightFunc] = SDLK_RALT; | ||
131 | keymap[EStdKeyDeviceA] = SDLK_RETURN; /* "fire" key */ | ||
132 | |||
133 | |||
134 | |||
135 | |||
136 | |||
137 | /////////////////////////////////////////////////////////// | ||
138 | /* | ||
139 | RFs fs; | ||
140 | if(KErrNone == fs.Connect()) | ||
141 | { | ||
142 | RArray<TInt> array; | ||
143 | TRAPD(err, ReadL(fs, array)); | ||
144 | if(err == KErrNone && array.Count() > 0) | ||
145 | { | ||
146 | |||
147 | SDLKey temp[MAX_SCANCODE]; | ||
148 | Mem::Copy(temp, keymap, MAX_SCANCODE * sizeof(SDLKey)); | ||
149 | |||
150 | for(TInt k = 0; k < array.Count(); k+= 2) | ||
151 | { | ||
152 | const TInt oldval = array[k]; | ||
153 | const TInt newval = array[k + 1]; | ||
154 | if(oldval >= 0 && oldval < MAX_SCANCODE && newval >= 0 && newval < MAX_SCANCODE) | ||
155 | { | ||
156 | keymap[oldval] = temp[newval]; | ||
157 | } | ||
158 | } | ||
159 | } | ||
160 | array.Close(); | ||
161 | } | ||
162 | |||
163 | fs.Close();*/ | ||
164 | /////////////////////////////////////////////////////////// | ||
165 | |||
166 | |||
167 | keymap[EStdKeyNumLock] = SDLK_NUMLOCK; | ||
168 | keymap[EStdKeyScrollLock] = SDLK_SCROLLOCK; | ||
169 | |||
170 | keymap[EStdKeyNkpForwardSlash] = SDLK_KP_DIVIDE; | ||
171 | keymap[EStdKeyNkpAsterisk] = SDLK_KP_MULTIPLY; | ||
172 | keymap[EStdKeyNkpMinus] = SDLK_KP_MINUS; | ||
173 | keymap[EStdKeyNkpPlus] = SDLK_KP_PLUS; | ||
174 | keymap[EStdKeyNkpEnter] = SDLK_KP_ENTER; | ||
175 | keymap[EStdKeyNkp1] = SDLK_KP1; | ||
176 | keymap[EStdKeyNkp2] = SDLK_KP2; | ||
177 | keymap[EStdKeyNkp3] = SDLK_KP3; | ||
178 | keymap[EStdKeyNkp4] = SDLK_KP4; | ||
179 | keymap[EStdKeyNkp5] = SDLK_KP5; | ||
180 | keymap[EStdKeyNkp6] = SDLK_KP6; | ||
181 | keymap[EStdKeyNkp7] = SDLK_KP7; | ||
182 | keymap[EStdKeyNkp8] = SDLK_KP8; | ||
183 | keymap[EStdKeyNkp9] = SDLK_KP9; | ||
184 | keymap[EStdKeyNkp0] = SDLK_KP0; | ||
185 | keymap[EStdKeyNkpFullStop] = SDLK_KP_PERIOD; | ||
186 | /* | ||
187 | keymap[EStdKeyMenu] = SDLK_MENU; should be, but not yet | ||
188 | keymap[EStdKeyBacklightOn] = | ||
189 | keymap[EStdKeyBacklightOff] = | ||
190 | keymap[EStdKeyBacklightToggle] = | ||
191 | keymap[EStdKeyIncContrast] = | ||
192 | keymap[EStdKeyDecContrast] = | ||
193 | keymap[EStdKeySliderDown] = | ||
194 | keymap[EStdKeySliderUp] = | ||
195 | keymap[EStdKeyDictaphonePlay] = | ||
196 | keymap[EStdKeyDictaphoneStop] = | ||
197 | keymap[EStdKeyDictaphoneRecord] = | ||
198 | keymap[EStdKeyHelp] = | ||
199 | keymap[EStdKeyOff] = | ||
200 | keymap[EStdKeyDial] = | ||
201 | keymap[EStdKeyIncVolume] = | ||
202 | keymap[EStdKeyDecVolume] = | ||
203 | keymap[EStdKeyDevice0] = | ||
204 | keymap[EStdKeyDevice1] = | ||
205 | keymap[EStdKeyDevice2] = | ||
206 | keymap[EStdKeyDevice3] = | ||
207 | keymap[EStdKeyDevice4] = | ||
208 | keymap[EStdKeyDevice5] = | ||
209 | keymap[EStdKeyDevice6] = | ||
210 | keymap[EStdKeyDevice7] = | ||
211 | keymap[EStdKeyDevice8] = | ||
212 | keymap[EStdKeyDevice9] = | ||
213 | keymap[EStdKeyDeviceA] = | ||
214 | keymap[EStdKeyDeviceB] = | ||
215 | keymap[EStdKeyDeviceC] = | ||
216 | keymap[EStdKeyDeviceD] = | ||
217 | keymap[EStdKeyDeviceE] = | ||
218 | keymap[EStdKeyDeviceF] = | ||
219 | keymap[EStdKeyApplication0] = | ||
220 | keymap[EStdKeyApplication1] = | ||
221 | keymap[EStdKeyApplication2] = | ||
222 | keymap[EStdKeyApplication3] = | ||
223 | keymap[EStdKeyApplication4] = | ||
224 | keymap[EStdKeyApplication5] = | ||
225 | keymap[EStdKeyApplication6] = | ||
226 | keymap[EStdKeyApplication7] = | ||
227 | keymap[EStdKeyApplication8] = | ||
228 | keymap[EStdKeyApplication9] = | ||
229 | keymap[EStdKeyApplicationA] = | ||
230 | keymap[EStdKeyApplicationB] = | ||
231 | keymap[EStdKeyApplicationC] = | ||
232 | keymap[EStdKeyApplicationD] = | ||
233 | keymap[EStdKeyApplicationE] = | ||
234 | keymap[EStdKeyApplicationF] = | ||
235 | keymap[EStdKeyYes] = | ||
236 | keymap[EStdKeyNo] = | ||
237 | keymap[EStdKeyIncBrightness] = | ||
238 | keymap[EStdKeyDecBrightness] = | ||
239 | keymap[EStdKeyCaseOpen] = | ||
240 | keymap[EStdKeyCaseClose] = */ | ||
241 | |||
242 | |||
243 | |||
244 | } | ||
245 | |||
246 | |||
247 | int EPOC_HandleWsEvent(_THIS, const TWsEvent& aWsEvent) | ||
248 | { | ||
249 | int posted = 0; | ||
250 | SDL_keysym keysym; | ||
251 | |||
252 | // SDL_TRACE1("hws %d", aWsEvent.Type()); | ||
253 | |||
254 | switch (aWsEvent.Type()) | ||
255 | { | ||
256 | case EEventPointer: /* Mouse pointer events */ | ||
257 | { | ||
258 | /* const TPointerCursorMode mode = EpocSdlEnv::PointerMode(); | ||
259 | |||
260 | |||
261 | if(mode == EPointerCursorNone) | ||
262 | { | ||
263 | return 0; //TODO: Find out why events are get despite of cursor should be off | ||
264 | } | ||
265 | */ | ||
266 | const TPointerEvent* pointerEvent = aWsEvent.Pointer(); | ||
267 | const TPoint mousePos = EpocSdlEnv::WindowCoordinates(pointerEvent->iPosition); | ||
268 | |||
269 | /*!! TODO Pointer do not yet work properly | ||
270 | //SDL_TRACE1("SDL: EPOC_HandleWsEvent, pointerEvent->iType=%d", pointerEvent->iType); //!! | ||
271 | |||
272 | if (Private->EPOC_ShrinkedHeight) { | ||
273 | mousePos.iY <<= 1; // Scale y coordinate to shrinked screen height | ||
274 | } | ||
275 | if (Private->EPOC_ShrinkedWidth) { | ||
276 | mousePos.iX <<= 1; // Scale x coordinate to shrinked screen width | ||
277 | } | ||
278 | */ | ||
279 | |||
280 | posted += SDL_PrivateMouseMotion(0, 0, mousePos.iX, mousePos.iY); /* Absolute position on screen */ | ||
281 | |||
282 | switch (pointerEvent->iType) | ||
283 | { | ||
284 | case TPointerEvent::EButton1Down: | ||
285 | posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_LEFT, 0, 0); | ||
286 | break; | ||
287 | case TPointerEvent::EButton1Up: | ||
288 | posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); | ||
289 | break; | ||
290 | case TPointerEvent::EButton2Down: | ||
291 | posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_RIGHT, 0, 0); | ||
292 | break; | ||
293 | case TPointerEvent::EButton2Up: | ||
294 | posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_RIGHT, 0, 0); | ||
295 | break; | ||
296 | case TPointerEvent::EButton3Down: | ||
297 | posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_MIDDLE, 0, 0); | ||
298 | break; | ||
299 | case TPointerEvent::EButton3Up: | ||
300 | posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_MIDDLE, 0, 0); | ||
301 | break; | ||
302 | } // switch | ||
303 | break; | ||
304 | } | ||
305 | |||
306 | case EEventKeyDown: /* Key events */ | ||
307 | { | ||
308 | #ifdef SYMBIAN_CRYSTAL | ||
309 | // special case: 9300/9500 rocker down, simulate left mouse button | ||
310 | if (aWsEvent.Key()->iScanCode == EStdKeyDeviceA) | ||
311 | { | ||
312 | const TPointerCursorMode mode = Private->EPOC_WsSession.PointerCursorMode(); | ||
313 | if(mode != EPointerCursorNone) | ||
314 | posted += SDL_PrivateMouseButton(SDL_PRESSED, SDL_BUTTON_LEFT, 0, 0); | ||
315 | } | ||
316 | #endif | ||
317 | (void*)TranslateKey(_this, aWsEvent.Key()->iScanCode, &keysym); | ||
318 | |||
319 | #ifndef DISABLE_JOYSTICK | ||
320 | /* Special handling */ | ||
321 | switch((int)keysym.sym) { | ||
322 | case SDLK_CAPSLOCK: | ||
323 | if (!isCursorVisible) { | ||
324 | /* Enable virtual cursor */ | ||
325 | HAL::Set(HAL::EMouseState, HAL::EMouseState_Visible); | ||
326 | } | ||
327 | else { | ||
328 | /* Disable virtual cursor */ | ||
329 | HAL::Set(HAL::EMouseState, HAL::EMouseState_Invisible); | ||
330 | } | ||
331 | isCursorVisible = !isCursorVisible; | ||
332 | break; | ||
333 | } | ||
334 | #endif | ||
335 | posted += SDL_PrivateKeyboard(SDL_PRESSED, &keysym); | ||
336 | break; | ||
337 | } | ||
338 | |||
339 | case EEventKeyUp: /* Key events */ | ||
340 | { | ||
341 | #ifdef SYMBIAN_CRYSTAL | ||
342 | // special case: 9300/9500 rocker up, simulate left mouse button | ||
343 | if (aWsEvent.Key()->iScanCode == EStdKeyDeviceA) | ||
344 | { | ||
345 | posted += SDL_PrivateMouseButton(SDL_RELEASED, SDL_BUTTON_LEFT, 0, 0); | ||
346 | } | ||
347 | #endif | ||
348 | posted += SDL_PrivateKeyboard(SDL_RELEASED, TranslateKey(_this, aWsEvent.Key()->iScanCode, &keysym)); | ||
349 | break; | ||
350 | } | ||
351 | |||
352 | case EEventFocusGained: /* SDL window got focus */ | ||
353 | { | ||
354 | Private->iIsWindowFocused = ETrue; | ||
355 | posted += SDL_PrivateAppActive(1, SDL_APPINPUTFOCUS|SDL_APPMOUSEFOCUS); | ||
356 | /* Draw window background and screen buffer */ | ||
357 | DisableKeyBlocking(_this); //Markus: guess why:-) | ||
358 | |||
359 | //RedrawWindowL(_this); | ||
360 | break; | ||
361 | } | ||
362 | |||
363 | case EEventFocusLost: /* SDL window lost focus */ | ||
364 | { | ||
365 | |||
366 | Private->iIsWindowFocused = EFalse; | ||
367 | |||
368 | posted += SDL_PrivateAppActive(0, SDL_APPINPUTFOCUS|SDL_APPMOUSEFOCUS); | ||
369 | |||
370 | |||
371 | break; | ||
372 | } | ||
373 | |||
374 | case EEventModifiersChanged: | ||
375 | { | ||
376 | TModifiersChangedEvent* modEvent = aWsEvent.ModifiersChanged(); | ||
377 | TUint modstate = KMOD_NONE; | ||
378 | if (modEvent->iModifiers == EModifierLeftShift) | ||
379 | modstate |= KMOD_LSHIFT; | ||
380 | if (modEvent->iModifiers == EModifierRightShift) | ||
381 | modstate |= KMOD_RSHIFT; | ||
382 | if (modEvent->iModifiers == EModifierLeftCtrl) | ||
383 | modstate |= KMOD_LCTRL; | ||
384 | if (modEvent->iModifiers == EModifierRightCtrl) | ||
385 | modstate |= KMOD_RCTRL; | ||
386 | if (modEvent->iModifiers == EModifierLeftAlt) | ||
387 | modstate |= KMOD_LALT; | ||
388 | if (modEvent->iModifiers == EModifierRightAlt) | ||
389 | modstate |= KMOD_RALT; | ||
390 | if (modEvent->iModifiers == EModifierLeftFunc) | ||
391 | modstate |= KMOD_LMETA; | ||
392 | if (modEvent->iModifiers == EModifierRightFunc) | ||
393 | modstate |= KMOD_RMETA; | ||
394 | if (modEvent->iModifiers == EModifierCapsLock) | ||
395 | modstate |= KMOD_CAPS; | ||
396 | SDL_SetModState(STATIC_CAST(SDLMod,(modstate | KMOD_LSHIFT))); | ||
397 | break; | ||
398 | } | ||
399 | case EEventScreenDeviceChanged: | ||
400 | { | ||
401 | EpocSdlEnv::WaitDeviceChange(); | ||
402 | } | ||
403 | break; | ||
404 | default: | ||
405 | break; | ||
406 | } | ||
407 | |||
408 | return posted; | ||
409 | } | ||
410 | |||
411 | extern "C" { | ||
412 | |||
413 | void EPOC_PumpEvents(_THIS) | ||
414 | { | ||
415 | MEventQueue& events = EpocSdlEnv::EventQueue(); | ||
416 | while(events.HasData()) | ||
417 | { | ||
418 | events.Lock(); | ||
419 | |||
420 | //there have to be a copy, so we can release | ||
421 | //lock immediately. HandleWsEvent may cause | ||
422 | //deadlock otherwise. | ||
423 | |||
424 | const TWsEvent event = events.Shift(); | ||
425 | events.Unlock(); | ||
426 | // const TWsEvent& event = events.Top(); | ||
427 | EPOC_HandleWsEvent(_this, event); | ||
428 | // events.Shift(); | ||
429 | } | ||
430 | } | ||
431 | |||
432 | |||
433 | |||
434 | void EPOC_InitOSKeymap(_THIS) | ||
435 | { | ||
436 | ResetKeyMap(); | ||
437 | EpocSdlEnv::ObserverEvent(MSDLObserver::EEventKeyMapInit ,0); | ||
438 | } | ||
439 | |||
440 | static SDL_keysym *TranslateKey(_THIS, int scancode, SDL_keysym *keysym) | ||
441 | { | ||
442 | // char debug[256]; | ||
443 | //SDL_TRACE1("SDL: TranslateKey, scancode=%d", scancode); //!! | ||
444 | |||
445 | /* Set the keysym information */ | ||
446 | |||
447 | keysym->scancode = scancode; | ||
448 | |||
449 | if ((scancode >= MAX_SCANCODE) && | ||
450 | ((scancode - ENonCharacterKeyBase + 0x0081) >= MAX_SCANCODE)) { | ||
451 | SDL_SetError("Too big scancode"); | ||
452 | keysym->scancode = SDLK_UNKNOWN; | ||
453 | keysym->mod = KMOD_NONE; | ||
454 | return keysym; | ||
455 | } | ||
456 | |||
457 | keysym->mod = SDL_GetModState(); | ||
458 | |||
459 | /* Handle function keys: F1, F2, F3 ... */ | ||
460 | if (keysym->mod & KMOD_META) { | ||
461 | if (scancode >= 'A' && scancode < ('A' + 24)) { /* first 32 alphabet keys */ | ||
462 | switch(scancode) { | ||
463 | case 'Q': scancode = EStdKeyF1; break; | ||
464 | case 'W': scancode = EStdKeyF2; break; | ||
465 | case 'E': scancode = EStdKeyF3; break; | ||
466 | case 'R': scancode = EStdKeyF4; break; | ||
467 | case 'T': scancode = EStdKeyF5; break; | ||
468 | case 'Y': scancode = EStdKeyF6; break; | ||
469 | case 'U': scancode = EStdKeyF7; break; | ||
470 | case 'I': scancode = EStdKeyF8; break; | ||
471 | case 'A': scancode = EStdKeyF9; break; | ||
472 | case 'S': scancode = EStdKeyF10; break; | ||
473 | case 'D': scancode = EStdKeyF11; break; | ||
474 | case 'F': scancode = EStdKeyF12; break; | ||
475 | } | ||
476 | keysym->sym = keymap[scancode]; | ||
477 | } | ||
478 | } | ||
479 | |||
480 | if (scancode >= ENonCharacterKeyBase) { | ||
481 | // Non character keys | ||
482 | keysym->sym = keymap[scancode - | ||
483 | ENonCharacterKeyBase + 0x0081]; // !!hard coded | ||
484 | } else { | ||
485 | keysym->sym = keymap[scancode]; | ||
486 | } | ||
487 | |||
488 | /* Remap the arrow keys if the device is rotated */ | ||
489 | /* | ||
490 | if (Private->EPOC_ScreenOrientation == CFbsBitGc::EGraphicsOrientationRotated270) { | ||
491 | switch(keysym->sym) { | ||
492 | case SDLK_UP: keysym->sym = SDLK_LEFT; break; | ||
493 | case SDLK_DOWN: keysym->sym = SDLK_RIGHT; break; | ||
494 | case SDLK_LEFT: keysym->sym = SDLK_DOWN; break; | ||
495 | case SDLK_RIGHT:keysym->sym = SDLK_UP; break; | ||
496 | } | ||
497 | } | ||
498 | */ | ||
499 | /* If UNICODE is on, get the UNICODE value for the key */ | ||
500 | keysym->unicode = 0; | ||
501 | |||
502 | #if 0 // !!TODO:unicode | ||
503 | |||
504 | if ( SDL_TranslateUNICODE ) | ||
505 | { | ||
506 | /* Populate the unicode field with the ASCII value */ | ||
507 | keysym->unicode = scancode; | ||
508 | } | ||
509 | #endif | ||
510 | |||
511 | //!! | ||
512 | //sprintf(debug, "SDL: TranslateKey: keysym->scancode=%d, keysym->sym=%d, keysym->mod=%d", | ||
513 | // keysym->scancode, keysym->sym, keysym->mod); | ||
514 | //SDL_TRACE(debug); //!! | ||
515 | |||
516 | return(keysym); | ||
517 | } | ||
518 | |||
519 | } /* extern "C" */ | ||
520 | |||
521 | |||