diff --git a/project/jni/sdl-1.2/src/video/android/SDL_androidinput-queue-fast.c b/project/jni/sdl-1.2/src/video/android/SDL_androidinput-queue-fast.c index 3cd01444b..b5649def4 100644 --- a/project/jni/sdl-1.2/src/video/android/SDL_androidinput-queue-fast.c +++ b/project/jni/sdl-1.2/src/video/android/SDL_androidinput-queue-fast.c @@ -165,6 +165,8 @@ extern void SDL_ANDROID_MainThreadPushKeyboardKey(int pressed, SDL_scancode key) } keysym.scancode = key; + if ( key < SDLK_LAST ) + keysym.scancode = SDL_android_keysym_to_scancode[key]; keysym.sym = key; keysym.mod = KMOD_NONE; keysym.unicode = 0; diff --git a/project/jni/sdl-1.2/src/video/android/SDL_androidinput.h b/project/jni/sdl-1.2/src/video/android/SDL_androidinput.h index ea59b47a0..47112659a 100644 --- a/project/jni/sdl-1.2/src/video/android/SDL_androidinput.h +++ b/project/jni/sdl-1.2/src/video/android/SDL_androidinput.h @@ -239,6 +239,7 @@ extern void SDL_ANDROID_MainThreadPushAppActive(int active); // Internal input queue stuff extern SDLKey SDL_android_keymap[]; +extern unsigned char SDL_android_keysym_to_scancode[SDLK_LAST]; extern SDL_Joystick *SDL_ANDROID_CurrentJoysticks[]; extern int SDL_ANDROID_isMouseUsed; extern int SDL_ANDROID_currentMouseX, SDL_ANDROID_currentMouseY, SDL_ANDROID_currentMouseButtons; diff --git a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c index 4035ebab5..442217554 100644 --- a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c +++ b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c @@ -490,6 +490,7 @@ SDL_Surface *ANDROID_SetVideoMode(_THIS, SDL_Surface *current, SDL_CurrentVideoSurface = current; UpdateScreenUnderFingerRect(0,0); + SDL_ANDROID_ShowScreenUnderFingerRect.w = SDL_ANDROID_ShowScreenUnderFingerRect.h = 0; /* We're done */ return(current); diff --git a/project/jni/sdl-1.2/src/video/android/keymap.c b/project/jni/sdl-1.2/src/video/android/keymap.c index 5996f0c32..a41bec6c8 100644 --- a/project/jni/sdl-1.2/src/video/android/keymap.c +++ b/project/jni/sdl-1.2/src/video/android/keymap.c @@ -239,5 +239,330 @@ void SDL_android_init_keymap(SDLKey *SDL_android_keymap) keymap[KEYCODE_BUTTON_14] = SDL_KEY(N); keymap[KEYCODE_BUTTON_15] = SDL_KEY(O); keymap[KEYCODE_BUTTON_16] = SDL_KEY(P); - } + +unsigned char SDL_android_keysym_to_scancode[SDLK_LAST] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 22, + 23, + 0, + 0, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 0, + 65, + 0, + 0, + 0, + 0, + 0, + 0, + 48, + 0, + 0, + 0, + 0, + 59, + 20, + 60, + 61, + 19, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 0, + 47, + 0, + 21, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 51, + 35, + 0, + 0, + 49, + 38, + 56, + 54, + 40, + 26, + 41, + 42, + 43, + 31, + 44, + 45, + 46, + 58, + 57, + 32, + 33, + 24, + 27, + 39, + 28, + 30, + 55, + 25, + 53, + 29, + 52, + 0, + 0, + 0, + 0, + 119, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 90, + 87, + 88, + 89, + 83, + 84, + 85, + 79, + 80, + 81, + 91, + 106, + 63, + 82, + 86, + 104, + 0, + 111, + 116, + 114, + 113, + 118, + 110, + 115, + 112, + 117, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 95, + 96, + 0, + 0, + 0, + 0, + 0, + 0, + 77, + 66, + 78, + 62, + 50, + 105, + 37, + 108, + 64, + 0, + 0, + 133, + 134, + 0, + 0, + 0, + 107, + 0, + 0, + 135, + 0, + 0, + 0, +}; diff --git a/project/jni/sdl-1.2/src/video/android/unicodestuff.h b/project/jni/sdl-1.2/src/video/android/unicodestuff.h index 3ef7971e1..2c730b829 100644 --- a/project/jni/sdl-1.2/src/video/android/unicodestuff.h +++ b/project/jni/sdl-1.2/src/video/android/unicodestuff.h @@ -41,11 +41,13 @@ static inline SDL_keysym asciiToKeysym(int ascii, int unicode) { SDL_keysym keysym; keysym.scancode = ascii; + if ( ascii < SDLK_LAST ) + keysym.scancode = SDL_android_keysym_to_scancode[ascii]; keysym.sym = ascii; keysym.mod = KMOD_NONE; keysym.unicode = 0; #if SDL_VERSION_ATLEAST(1,3,0) - keysym.sym = SDL_GetScancodeFromKey(ascii); + keysym.scancode = SDL_GetScancodeFromKey(ascii); #else if ( SDL_TranslateUNICODE ) #endif