From ede9b2fdfdc87c6ccccbd03e16e3ce8ded122527 Mon Sep 17 00:00:00 2001 From: pelya Date: Mon, 19 Sep 2011 16:11:22 +0300 Subject: [PATCH] Fixes for SDL 1.3, the keycodes and invoking from background are broken --- project/jni/application/Android.mk | 6 +- .../alienblaster/AndroidAppSettings.cfg | 1 + .../ballfield/AndroidAppSettings.cfg | 4 +- .../jni/application/ballfield/ballfield.cpp | 5 +- project/jni/application/src | 2 +- .../src/video/android/SDL_androidinput.c | 28 +-- .../src/video/android/SDL_androidinput.h | 9 + .../sdl-1.3/src/video/android/javakeycodes.h | 224 +++++++++--------- 8 files changed, 144 insertions(+), 135 deletions(-) diff --git a/project/jni/application/Android.mk b/project/jni/application/Android.mk index b63615f21..61a63ee0f 100644 --- a/project/jni/application/Android.mk +++ b/project/jni/application/Android.mk @@ -22,9 +22,9 @@ LOCAL_SRC_FILES += $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wil LOCAL_CFLAGS := LOCAL_C_INCLUDES := -ifeq ($(CRYSTAX_TOOLCHAIN)$(NDK_R5_TOOLCHAIN),) -LOCAL_C_INCLUDES += $(LOCAL_PATH)/../stlport/stlport -endif +#ifeq ($(CRYSTAX_TOOLCHAIN)$(NDK_R5_TOOLCHAIN),) +#LOCAL_C_INCLUDES += $(LOCAL_PATH)/../stlport/stlport +#endif ifneq ($(CRYSTAX_R5_TOOLCHAIN),) LOCAL_C_INCLUDES += $(NDK_PATH)/sources/crystax/include endif diff --git a/project/jni/application/alienblaster/AndroidAppSettings.cfg b/project/jni/application/alienblaster/AndroidAppSettings.cfg index 2277bb2ec..3a509e0b5 100644 --- a/project/jni/application/alienblaster/AndroidAppSettings.cfg +++ b/project/jni/application/alienblaster/AndroidAppSettings.cfg @@ -16,6 +16,7 @@ SdlVideoResizeKeepAspect=n CompatibilityHacks= AppUsesMouse=n AppNeedsTwoButtonMouse=n +ForceRelativeMouseMode=n AppNeedsArrowKeys=y AppNeedsTextInput=y AppUsesJoystick=n diff --git a/project/jni/application/ballfield/AndroidAppSettings.cfg b/project/jni/application/ballfield/AndroidAppSettings.cfg index 719db78f2..050ad141d 100644 --- a/project/jni/application/ballfield/AndroidAppSettings.cfg +++ b/project/jni/application/ballfield/AndroidAppSettings.cfg @@ -1,6 +1,6 @@ # The application settings for Android libSDL port AppSettingVersion=17 -LibSdlVersion=1.2 +LibSdlVersion=1.3 AppName="Ballfield" AppFullName=net.olofson.ballfield ScreenOrientation=h @@ -23,7 +23,7 @@ AppUsesJoystick=n AppHandlesJoystickSensitivity=n AppUsesMultitouch=n NonBlockingSwapBuffers=y -RedefinedKeys="SPACE" +RedefinedKeys="SPACE RETURN NO_REMAP NO_REMAP SPACE ESCAPE" AppTouchscreenKeyboardKeysAmount=0 AppTouchscreenKeyboardKeysAmountAutoFire=0 RedefinedKeysScreenKb="1 2 3 4 5 6 1 2 3 4" diff --git a/project/jni/application/ballfield/ballfield.cpp b/project/jni/application/ballfield/ballfield.cpp index b7d01d6ec..038aa8ad5 100644 --- a/project/jni/application/ballfield/ballfield.cpp +++ b/project/jni/application/ballfield/ballfield.cpp @@ -593,10 +593,9 @@ int main(int argc, char* argv[]) { if(evt.type == SDL_KEYUP || evt.type == SDL_KEYDOWN) { - Uint8 *keys = SDL_GetKeyState(&i); - if(keys[SDLK_ESCAPE]) + if(evt.key.keysym.sym == SDLK_ESCAPE) return 0; - __android_log_print(ANDROID_LOG_INFO, "Ballfield", "SDL key event: evt %s state %s key %d RETURN %d mod %d unicode %d", evt.type == SDL_KEYUP ? "UP " : "DOWN" , evt.key.state == SDL_PRESSED ? "PRESSED " : "RELEASED", (int)evt.key.keysym.sym, int(evt.key.keysym.sym == SDLK_RETURN), (int)evt.key.keysym.mod, (int)evt.key.keysym.unicode); + __android_log_print(ANDROID_LOG_INFO, "Ballfield", "SDL key event: evt %s state %s key %d scancode %d mod %d unicode %d", evt.type == SDL_KEYUP ? "UP " : "DOWN" , evt.key.state == SDL_PRESSED ? "PRESSED " : "RELEASED", (int)evt.key.keysym.sym, (int)evt.key.keysym.scancode, (int)evt.key.keysym.mod, (int)evt.key.keysym.unicode); } if(evt.type == SDL_VIDEORESIZE) __android_log_print(ANDROID_LOG_INFO, "Ballfield", "SDL resize event: %d x %d", evt.resize.w, evt.resize.h); diff --git a/project/jni/application/src b/project/jni/application/src index 706424f94..104f796a6 120000 --- a/project/jni/application/src +++ b/project/jni/application/src @@ -1 +1 @@ -sc2 \ No newline at end of file +ballfield \ No newline at end of file diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c index a6ca16779..c88bc6789 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c @@ -1863,7 +1863,7 @@ JAVA_EXPORT_NAME(Settings_nativeInitKeymap) ( JNIEnv* env, jobject thiz ) keymap[KEYCODE_CAMERA] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_6)); keymap[KEYCODE_FOCUS] = SDL_KEY(SDL_KEY_VAL(SDL_ANDROID_KEYCODE_6)); - keymap[KEYCODE_CALL] = LSHIFT; + keymap[KEYCODE_CALL] = SDL_KEY(TAB); keymap[KEYCODE_0] = SDL_KEY(0); keymap[KEYCODE_1] = SDL_KEY(1); @@ -1986,9 +1986,9 @@ JAVA_EXPORT_NAME(Settings_nativeInitKeymap) ( JNIEnv* env, jobject thiz ) keymap[KEYCODE_SCROLL_LOCK] = SDL_KEY(SCROLLLOCK); keymap[KEYCODE_META_LEFT] = SDL_KEY(LEFT); keymap[KEYCODE_META_RIGHT] = SDL_KEY(RIGHT); - keymap[KEYCODE_FUNCTION] = SDL_KEY(RMETA); + keymap[KEYCODE_FUNCTION] = SDL_KEY(RGUI); keymap[KEYCODE_SYSRQ] = SDL_KEY(SYSREQ); - keymap[KEYCODE_BREAK] = SDL_KEY(BREAK); + keymap[KEYCODE_BREAK] = SDL_KEY(PAUSE); keymap[KEYCODE_MOVE_HOME] = SDL_KEY(HOME); keymap[KEYCODE_MOVE_END] = SDL_KEY(END); keymap[KEYCODE_INSERT] = SDL_KEY(INSERT); @@ -2010,17 +2010,17 @@ JAVA_EXPORT_NAME(Settings_nativeInitKeymap) ( JNIEnv* env, jobject thiz ) keymap[KEYCODE_F10] = SDL_KEY(F10); keymap[KEYCODE_F11] = SDL_KEY(F11); keymap[KEYCODE_F12] = SDL_KEY(F12); - keymap[KEYCODE_NUM_LOCK] = SDL_KEY(NUMLOCK); - keymap[KEYCODE_NUMPAD_0] = SDL_KEY(KP0); - keymap[KEYCODE_NUMPAD_1] = SDL_KEY(KP1); - keymap[KEYCODE_NUMPAD_2] = SDL_KEY(KP2); - keymap[KEYCODE_NUMPAD_3] = SDL_KEY(KP3); - keymap[KEYCODE_NUMPAD_4] = SDL_KEY(KP4); - keymap[KEYCODE_NUMPAD_5] = SDL_KEY(KP5); - keymap[KEYCODE_NUMPAD_6] = SDL_KEY(KP6); - keymap[KEYCODE_NUMPAD_7] = SDL_KEY(KP7); - keymap[KEYCODE_NUMPAD_8] = SDL_KEY(KP8); - keymap[KEYCODE_NUMPAD_9] = SDL_KEY(KP9); + keymap[KEYCODE_NUM_LOCK] = SDL_KEY(NUMLOCKCLEAR); + keymap[KEYCODE_NUMPAD_0] = SDL_KEY(KP_0); + keymap[KEYCODE_NUMPAD_1] = SDL_KEY(KP_1); + keymap[KEYCODE_NUMPAD_2] = SDL_KEY(KP_2); + keymap[KEYCODE_NUMPAD_3] = SDL_KEY(KP_3); + keymap[KEYCODE_NUMPAD_4] = SDL_KEY(KP_4); + keymap[KEYCODE_NUMPAD_5] = SDL_KEY(KP_5); + keymap[KEYCODE_NUMPAD_6] = SDL_KEY(KP_6); + keymap[KEYCODE_NUMPAD_7] = SDL_KEY(KP_7); + keymap[KEYCODE_NUMPAD_8] = SDL_KEY(KP_8); + keymap[KEYCODE_NUMPAD_9] = SDL_KEY(KP_9); keymap[KEYCODE_NUMPAD_DIVIDE] = SDL_KEY(KP_DIVIDE); keymap[KEYCODE_NUMPAD_MULTIPLY] = SDL_KEY(KP_MULTIPLY); keymap[KEYCODE_NUMPAD_SUBTRACT] = SDL_KEY(KP_MINUS); diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.h b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.h index c013e8657..9bfe60677 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.h +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.h @@ -54,6 +54,7 @@ // Special key to signal that key should be handled by Java internally, such as Volume Up/Down keys #define SDLK_NO_REMAP 512 +#define SDL_SCANCODE_NO_REMAP SDLK_NO_REMAP #if SDL_VERSION_ATLEAST(1,3,0) @@ -80,6 +81,8 @@ #define GRAVE DOLLAR #define APOSTROPHE QUOTE #define LGUI LMETA +#define RGUI RMETA +#define SCROLLLOCK SCROLLOCK // Overkill haha #define A a #define B b @@ -144,6 +147,12 @@ extern int SDL_ANDROID_isTouchscreenKeyboardUsed; #ifndef SDL_ANDROID_KEYCODE_7 #define SDL_ANDROID_KEYCODE_7 SDL_ANDROID_KEYCODE_1 #endif +#ifndef SDL_ANDROID_KEYCODE_8 +#define SDL_ANDROID_KEYCODE_8 LALT +#endif +#ifndef SDL_ANDROID_KEYCODE_9 +#define SDL_ANDROID_KEYCODE_9 RALT +#endif // Touchscreen keyboard keys + zoom and rotate keycodes #ifndef SDL_ANDROID_SCREENKB_KEYCODE_0 diff --git a/project/jni/sdl-1.3/src/video/android/javakeycodes.h b/project/jni/sdl-1.3/src/video/android/javakeycodes.h index fdf76ba98..4c07fc397 100644 --- a/project/jni/sdl-1.3/src/video/android/javakeycodes.h +++ b/project/jni/sdl-1.3/src/video/android/javakeycodes.h @@ -96,118 +96,118 @@ KEYCODE_MEDIA_PREVIOUS = 88, KEYCODE_MEDIA_REWIND = 89, KEYCODE_MEDIA_FAST_FORWARD = 90, KEYCODE_MUTE = 91, -KEYCODE_PAGE_UP = 92; -KEYCODE_PAGE_DOWN = 93; -KEYCODE_PICTSYMBOLS = 94; -KEYCODE_SWITCH_CHARSET = 95; -KEYCODE_BUTTON_A = 96; -KEYCODE_BUTTON_B = 97; -KEYCODE_BUTTON_C = 98; -KEYCODE_BUTTON_X = 99; -KEYCODE_BUTTON_Y = 100; -KEYCODE_BUTTON_Z = 101; -KEYCODE_BUTTON_L1 = 102; -KEYCODE_BUTTON_R1 = 103; -KEYCODE_BUTTON_L2 = 104; -KEYCODE_BUTTON_R2 = 105; -KEYCODE_BUTTON_THUMBL = 106; -KEYCODE_BUTTON_THUMBR = 107; -KEYCODE_BUTTON_START = 108; -KEYCODE_BUTTON_SELECT = 109; -KEYCODE_BUTTON_MODE = 110; -KEYCODE_ESCAPE = 111; -KEYCODE_FORWARD_DEL = 112; -KEYCODE_CTRL_LEFT = 113; -KEYCODE_CTRL_RIGHT = 114; -KEYCODE_CAPS_LOCK = 115; -KEYCODE_SCROLL_LOCK = 116; -KEYCODE_META_LEFT = 117; -KEYCODE_META_RIGHT = 118; -KEYCODE_FUNCTION = 119; -KEYCODE_SYSRQ = 120; -KEYCODE_BREAK = 121; -KEYCODE_MOVE_HOME = 122; -KEYCODE_MOVE_END = 123; -KEYCODE_INSERT = 124; -KEYCODE_FORWARD = 125; -KEYCODE_MEDIA_PLAY = 126; -KEYCODE_MEDIA_PAUSE = 127; -KEYCODE_MEDIA_CLOSE = 128; -KEYCODE_MEDIA_EJECT = 129; -KEYCODE_MEDIA_RECORD = 130; -KEYCODE_F1 = 131; -KEYCODE_F2 = 132; -KEYCODE_F3 = 133; -KEYCODE_F4 = 134; -KEYCODE_F5 = 135; -KEYCODE_F6 = 136; -KEYCODE_F7 = 137; -KEYCODE_F8 = 138; -KEYCODE_F9 = 139; -KEYCODE_F10 = 140; -KEYCODE_F11 = 141; -KEYCODE_F12 = 142; -KEYCODE_NUM_LOCK = 143; -KEYCODE_NUMPAD_0 = 144; -KEYCODE_NUMPAD_1 = 145; -KEYCODE_NUMPAD_2 = 146; -KEYCODE_NUMPAD_3 = 147; -KEYCODE_NUMPAD_4 = 148; -KEYCODE_NUMPAD_5 = 149; -KEYCODE_NUMPAD_6 = 150; -KEYCODE_NUMPAD_7 = 151; -KEYCODE_NUMPAD_8 = 152; -KEYCODE_NUMPAD_9 = 153; -KEYCODE_NUMPAD_DIVIDE = 154; -KEYCODE_NUMPAD_MULTIPLY = 155; -KEYCODE_NUMPAD_SUBTRACT = 156; -KEYCODE_NUMPAD_ADD = 157; -KEYCODE_NUMPAD_DOT = 158; -KEYCODE_NUMPAD_COMMA = 159; -KEYCODE_NUMPAD_ENTER = 160; -KEYCODE_NUMPAD_EQUALS = 161; -KEYCODE_NUMPAD_LEFT_PAREN = 162 -KEYCODE_NUMPAD_RIGHT_PAREN = 16 -KEYCODE_VOLUME_MUTE = 164; -KEYCODE_INFO = 165; -KEYCODE_CHANNEL_UP = 166; -KEYCODE_CHANNEL_DOWN = 167; -KEYCODE_ZOOM_IN = 168; -KEYCODE_ZOOM_OUT = 169; -KEYCODE_TV = 170; -KEYCODE_WINDOW = 171; -KEYCODE_GUIDE = 172; -KEYCODE_DVR = 173; -KEYCODE_BOOKMARK = 174; -KEYCODE_CAPTIONS = 175; -KEYCODE_SETTINGS = 176; -KEYCODE_TV_POWER = 177; -KEYCODE_TV_INPUT = 178; -KEYCODE_STB_POWER = 179; -KEYCODE_STB_INPUT = 180; -KEYCODE_AVR_POWER = 181; -KEYCODE_AVR_INPUT = 182; -KEYCODE_PROG_RED = 183; -KEYCODE_PROG_GREEN = 184; -KEYCODE_PROG_YELLOW = 185; -KEYCODE_PROG_BLUE = 186; -KEYCODE_APP_SWITCH = 187; -KEYCODE_BUTTON_1 = 188; -KEYCODE_BUTTON_2 = 189; -KEYCODE_BUTTON_3 = 190; -KEYCODE_BUTTON_4 = 191; -KEYCODE_BUTTON_5 = 192; -KEYCODE_BUTTON_6 = 193; -KEYCODE_BUTTON_7 = 194; -KEYCODE_BUTTON_8 = 195; -KEYCODE_BUTTON_9 = 196; -KEYCODE_BUTTON_10 = 197; -KEYCODE_BUTTON_11 = 198; -KEYCODE_BUTTON_12 = 199; -KEYCODE_BUTTON_13 = 200; -KEYCODE_BUTTON_14 = 201; -KEYCODE_BUTTON_15 = 202; -KEYCODE_BUTTON_16 = 203; +KEYCODE_PAGE_UP = 92, +KEYCODE_PAGE_DOWN = 93, +KEYCODE_PICTSYMBOLS = 94, +KEYCODE_SWITCH_CHARSET = 95, +KEYCODE_BUTTON_A = 96, +KEYCODE_BUTTON_B = 97, +KEYCODE_BUTTON_C = 98, +KEYCODE_BUTTON_X = 99, +KEYCODE_BUTTON_Y = 100, +KEYCODE_BUTTON_Z = 101, +KEYCODE_BUTTON_L1 = 102, +KEYCODE_BUTTON_R1 = 103, +KEYCODE_BUTTON_L2 = 104, +KEYCODE_BUTTON_R2 = 105, +KEYCODE_BUTTON_THUMBL = 106, +KEYCODE_BUTTON_THUMBR = 107, +KEYCODE_BUTTON_START = 108, +KEYCODE_BUTTON_SELECT = 109, +KEYCODE_BUTTON_MODE = 110, +KEYCODE_ESCAPE = 111, +KEYCODE_FORWARD_DEL = 112, +KEYCODE_CTRL_LEFT = 113, +KEYCODE_CTRL_RIGHT = 114, +KEYCODE_CAPS_LOCK = 115, +KEYCODE_SCROLL_LOCK = 116, +KEYCODE_META_LEFT = 117, +KEYCODE_META_RIGHT = 118, +KEYCODE_FUNCTION = 119, +KEYCODE_SYSRQ = 120, +KEYCODE_BREAK = 121, +KEYCODE_MOVE_HOME = 122, +KEYCODE_MOVE_END = 123, +KEYCODE_INSERT = 124, +KEYCODE_FORWARD = 125, +KEYCODE_MEDIA_PLAY = 126, +KEYCODE_MEDIA_PAUSE = 127, +KEYCODE_MEDIA_CLOSE = 128, +KEYCODE_MEDIA_EJECT = 129, +KEYCODE_MEDIA_RECORD = 130, +KEYCODE_F1 = 131, +KEYCODE_F2 = 132, +KEYCODE_F3 = 133, +KEYCODE_F4 = 134, +KEYCODE_F5 = 135, +KEYCODE_F6 = 136, +KEYCODE_F7 = 137, +KEYCODE_F8 = 138, +KEYCODE_F9 = 139, +KEYCODE_F10 = 140, +KEYCODE_F11 = 141, +KEYCODE_F12 = 142, +KEYCODE_NUM_LOCK = 143, +KEYCODE_NUMPAD_0 = 144, +KEYCODE_NUMPAD_1 = 145, +KEYCODE_NUMPAD_2 = 146, +KEYCODE_NUMPAD_3 = 147, +KEYCODE_NUMPAD_4 = 148, +KEYCODE_NUMPAD_5 = 149, +KEYCODE_NUMPAD_6 = 150, +KEYCODE_NUMPAD_7 = 151, +KEYCODE_NUMPAD_8 = 152, +KEYCODE_NUMPAD_9 = 153, +KEYCODE_NUMPAD_DIVIDE = 154, +KEYCODE_NUMPAD_MULTIPLY = 155, +KEYCODE_NUMPAD_SUBTRACT = 156, +KEYCODE_NUMPAD_ADD = 157, +KEYCODE_NUMPAD_DOT = 158, +KEYCODE_NUMPAD_COMMA = 159, +KEYCODE_NUMPAD_ENTER = 160, +KEYCODE_NUMPAD_EQUALS = 161, +KEYCODE_NUMPAD_LEFT_PAREN = 162, +KEYCODE_NUMPAD_RIGHT_PAREN = 163, +KEYCODE_VOLUME_MUTE = 164, +KEYCODE_INFO = 165, +KEYCODE_CHANNEL_UP = 166, +KEYCODE_CHANNEL_DOWN = 167, +KEYCODE_ZOOM_IN = 168, +KEYCODE_ZOOM_OUT = 169, +KEYCODE_TV = 170, +KEYCODE_WINDOW = 171, +KEYCODE_GUIDE = 172, +KEYCODE_DVR = 173, +KEYCODE_BOOKMARK = 174, +KEYCODE_CAPTIONS = 175, +KEYCODE_SETTINGS = 176, +KEYCODE_TV_POWER = 177, +KEYCODE_TV_INPUT = 178, +KEYCODE_STB_POWER = 179, +KEYCODE_STB_INPUT = 180, +KEYCODE_AVR_POWER = 181, +KEYCODE_AVR_INPUT = 182, +KEYCODE_PROG_RED = 183, +KEYCODE_PROG_GREEN = 184, +KEYCODE_PROG_YELLOW = 185, +KEYCODE_PROG_BLUE = 186, +KEYCODE_APP_SWITCH = 187, +KEYCODE_BUTTON_1 = 188, +KEYCODE_BUTTON_2 = 189, +KEYCODE_BUTTON_3 = 190, +KEYCODE_BUTTON_4 = 191, +KEYCODE_BUTTON_5 = 192, +KEYCODE_BUTTON_6 = 193, +KEYCODE_BUTTON_7 = 194, +KEYCODE_BUTTON_8 = 195, +KEYCODE_BUTTON_9 = 196, +KEYCODE_BUTTON_10 = 197, +KEYCODE_BUTTON_11 = 198, +KEYCODE_BUTTON_12 = 199, +KEYCODE_BUTTON_13 = 200, +KEYCODE_BUTTON_14 = 201, +KEYCODE_BUTTON_15 = 202, +KEYCODE_BUTTON_16 = 203, KEYCODE_LAST = 255 // Android 2.3 added several new gaming keys, Android 3.1 added even more - plz keep in sync with Keycodes.java };