changeset 4490:06c7423f8c60

Updated iPhone keyboard code (which builds and runs on the iPad and iPhone simulator now) Updated iPhone demos (which build and run again)
author Sam Lantinga <slouken@libsdl.org>
date Wed, 07 Jul 2010 18:58:51 -0700
parents 2bb1bfeee9e2
children 2cd7bb613a83
files Xcode-iPhoneOS/Demos/DemosiPhoneOS.xcodeproj/project.pbxproj Xcode-iPhoneOS/Demos/src/fireworks.c Xcode-iPhoneOS/Demos/src/mixer.c Xcode-iPhoneOS/Demos/src/touch.c Xcode-iPhoneOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj include/SDL_config_iphoneos.h src/events/SDL_keyboard.c src/video/uikit/SDL_uikitopengles.m src/video/uikit/SDL_uikitview.h src/video/uikit/SDL_uikitview.m
diffstat 10 files changed, 55 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- a/Xcode-iPhoneOS/Demos/DemosiPhoneOS.xcodeproj/project.pbxproj	Tue Jul 06 22:26:03 2010 -0700
+++ b/Xcode-iPhoneOS/Demos/DemosiPhoneOS.xcodeproj/project.pbxproj	Wed Jul 07 18:58:51 2010 -0700
@@ -105,6 +105,13 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
+		04AB757011E563D200BE9753 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = FD1B48920E313154007AB34E /* SDLiPhoneOS.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 006E982211955059001DE610 /* testsdl.app */;
+			remoteInfo = testsdl;
+		};
 		FD1B489D0E313154007AB34E /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = FD1B48920E313154007AB34E /* SDLiPhoneOS.xcodeproj */;
@@ -318,6 +325,7 @@
 			isa = PBXGroup;
 			children = (
 				FD1B489E0E313154007AB34E /* libSDLiPhoneOS.a */,
+				04AB757111E563D200BE9753 /* testsdl.app */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -523,6 +531,13 @@
 /* End PBXProject section */
 
 /* Begin PBXReferenceProxy section */
+		04AB757111E563D200BE9753 /* testsdl.app */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.application;
+			path = testsdl.app;
+			remoteRef = 04AB757011E563D200BE9753 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
 		FD1B489E0E313154007AB34E /* libSDLiPhoneOS.a */ = {
 			isa = PBXReferenceProxy;
 			fileType = archive.ar;
@@ -731,7 +746,7 @@
 				OTHER_CFLAGS = "";
 				PREBINDING = NO;
 				PRELINK_LIBS = "";
-				SDKROOT = iphoneos2.0;
+				SDKROOT = iphoneos3.2;
 			};
 			name = Debug;
 		};
@@ -749,7 +764,7 @@
 				OTHER_CFLAGS = "";
 				PREBINDING = NO;
 				PRELINK_LIBS = "";
-				SDKROOT = iphoneos2.0;
+				SDKROOT = iphoneos3.2;
 			};
 			name = Release;
 		};
--- a/Xcode-iPhoneOS/Demos/src/fireworks.c	Tue Jul 06 22:26:03 2010 -0700
+++ b/Xcode-iPhoneOS/Demos/src/fireworks.c	Wed Jul 07 18:58:51 2010 -0700
@@ -430,9 +430,7 @@
                 done = 1;
             }
             if (event.type == SDL_MOUSEBUTTONDOWN) {
-                int which = event.button.which;
                 int x, y;
-                SDL_SelectMouse(which);
                 SDL_GetMouseState(&x, &y);
                 spawnEmitterParticle(x, y);
             }
--- a/Xcode-iPhoneOS/Demos/src/mixer.c	Tue Jul 06 22:26:03 2010 -0700
+++ b/Xcode-iPhoneOS/Demos/src/mixer.c	Wed Jul 07 18:58:51 2010 -0700
@@ -124,10 +124,9 @@
 
     int x, y, mouseIndex, i, drumIndex;
 
-    mouseIndex = event->button.which;
+    mouseIndex = 0;
     drumIndex = -1;
 
-    SDL_SelectMouse(mouseIndex);
     SDL_GetMouseState(&x, &y);
     /* check if we hit any of the drum buttons */
     for (i = 0; i < NUM_DRUMS; i++) {
@@ -153,7 +152,7 @@
 handleMouseButtonUp(SDL_Event * event)
 {
     int i;
-    int mouseIndex = event->button.which;
+    int mouseIndex = 0;
     /* check if this should cause any of the buttons to become unpressed */
     for (i = 0; i < NUM_DRUMS; i++) {
         if (buttons[i].touchIndex == mouseIndex) {
--- a/Xcode-iPhoneOS/Demos/src/touch.c	Tue Jul 06 22:26:03 2010 -0700
+++ b/Xcode-iPhoneOS/Demos/src/touch.c	Wed Jul 07 18:58:51 2010 -0700
@@ -106,7 +106,6 @@
             done = 1;
             break;
         case SDL_MOUSEMOTION:
-            SDL_SelectMouse(event.motion.which);        /* select 'mouse' (touch) that moved */
             state = SDL_GetMouseState(&x, &y);  /* get its location */
             SDL_GetRelativeMouseState(&dx, &dy);        /* find how much the mouse moved */
             if (state & SDL_BUTTON_LMASK) {     /* is the mouse (touch) down? */
--- a/Xcode-iPhoneOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj	Tue Jul 06 22:26:03 2010 -0700
+++ b/Xcode-iPhoneOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj	Wed Jul 07 18:58:51 2010 -0700
@@ -287,6 +287,13 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
+		0466EE6F11E565E4000198A4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = FD1B48AC0E3131CA007AB34E /* SDLiPhoneOS.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 006E982211955059001DE610 /* testsdl.app */;
+			remoteInfo = testsdl;
+		};
 		FD1B48B70E3131CA007AB34E /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = FD1B48AC0E3131CA007AB34E /* SDLiPhoneOS.xcodeproj */;
@@ -298,9 +305,7 @@
 
 /* Begin PBXFileReference section */
 		1D6058910D05DD3D006BFB54 /* testwm2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testwm2.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		56ED04F7118A8FCC00A56AA6 /* testpower-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "testpower-Info.plist"; sourceTree = "<group>"; };
 		56ED050D118A8FE400A56AA6 /* testpower.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testpower.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		56ED050F118A8FE400A56AA6 /* Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy.plist"; sourceTree = "<group>"; };
 		56ED0510118A904200A56AA6 /* testpower.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testpower.c; path = ../../test/testpower.c; sourceTree = SOURCE_ROOT; };
 		FD1B48AC0E3131CA007AB34E /* SDLiPhoneOS.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDLiPhoneOS.xcodeproj; path = ../SDL/SDLiPhoneOS.xcodeproj; sourceTree = SOURCE_ROOT; };
 		FDA8A7400E2D0F1600EA573E /* testalpha.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testalpha.c; path = ../../test/testalpha.c; sourceTree = SOURCE_ROOT; };
@@ -861,14 +866,11 @@
 		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
 			isa = PBXGroup;
 			children = (
-				56ED0510118A904200A56AA6 /* testpower.c */,
 				FD1B48AC0E3131CA007AB34E /* SDLiPhoneOS.xcodeproj */,
 				FDA8AAD60E2D339A00EA573E /* Resources */,
 				FDA8A7C30E2D10FA00EA573E /* Linked Frameworks */,
 				FDA8A73B0E2D0F0400EA573E /* src */,
 				19C28FACFE9D520D11CA2CBB /* Products */,
-				56ED04F7118A8FCC00A56AA6 /* testpower-Info.plist */,
-				56ED050F118A8FE400A56AA6 /* Info copy.plist */,
 			);
 			name = CustomTemplate;
 			sourceTree = "<group>";
@@ -877,6 +879,7 @@
 			isa = PBXGroup;
 			children = (
 				FD1B48B80E3131CA007AB34E /* libSDLiPhoneOS.a */,
+				0466EE7011E565E4000198A4 /* testsdl.app */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -910,6 +913,7 @@
 				FDA8A7540E2D0F1600EA573E /* testoverlay2.c */,
 				FDA8A7550E2D0F1600EA573E /* testpalette.c */,
 				FDA8A7560E2D0F1600EA573E /* testplatform.c */,
+				56ED0510118A904200A56AA6 /* testpower.c */,
 				FDA8A7570E2D0F1600EA573E /* testsem.c */,
 				FDA8A7580E2D0F1600EA573E /* testsprite.c */,
 				FDA8A7590E2D0F1600EA573E /* testsprite2.c */,
@@ -1502,6 +1506,13 @@
 /* End PBXProject section */
 
 /* Begin PBXReferenceProxy section */
+		0466EE7011E565E4000198A4 /* testsdl.app */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.application;
+			path = testsdl.app;
+			remoteRef = 0466EE6F11E565E4000198A4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
 		FD1B48B80E3131CA007AB34E /* libSDLiPhoneOS.a */ = {
 			isa = PBXReferenceProxy;
 			fileType = archive.ar;
@@ -2034,7 +2045,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				PREBINDING = NO;
 				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
-				SDKROOT = iphoneos2.2.1;
+				SDKROOT = iphoneos3.2;
 			};
 			name = Debug;
 		};
@@ -2049,7 +2060,7 @@
 				HEADER_SEARCH_PATHS = ../../include;
 				PREBINDING = NO;
 				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
-				SDKROOT = iphoneos2.2.1;
+				SDKROOT = iphoneos3.2;
 			};
 			name = Release;
 		};
--- a/include/SDL_config_iphoneos.h	Tue Jul 06 22:26:03 2010 -0700
+++ b/include/SDL_config_iphoneos.h	Wed Jul 07 18:58:51 2010 -0700
@@ -145,12 +145,9 @@
 #define SDL_POWER_UIKIT 1
 
 /* enable iPhone keyboard support */
-#define SDL_IPHONE_KEYBOARD 0
+#define SDL_IPHONE_KEYBOARD 1
 
-/* Enable emulation of multiple mice through multi-touch */
-#define SDL_IPHONE_MULTIPLE_MICE 1
-
-/* Set max recognized G-force from acceleromter
+/* Set max recognized G-force from accelerometer
    See src/joystick/uikit/SDLUIAccelerationDelegate.m for notes on why this is needed
  */
 #define SDL_IPHONE_MAX_GFORCE 5.0
--- a/src/events/SDL_keyboard.c	Tue Jul 06 22:26:03 2010 -0700
+++ b/src/events/SDL_keyboard.c	Wed Jul 07 18:58:51 2010 -0700
@@ -551,6 +551,10 @@
 int
 SDL_KeyboardInit(void)
 {
+    SDL_Keyboard *keyboard = &SDL_keyboard;
+
+    /* Set the default keymap */
+    SDL_memcpy(keyboard->keymap, SDL_default_keymap, sizeof(SDL_default_keymap));
     return (0);
 }
 
--- a/src/video/uikit/SDL_uikitopengles.m	Tue Jul 06 22:26:03 2010 -0700
+++ b/src/video/uikit/SDL_uikitopengles.m	Wed Jul 07 18:58:51 2010 -0700
@@ -26,6 +26,8 @@
 #include "SDL_uikitwindow.h"
 #include "jumphack.h"
 #include "SDL_sysvideo.h"
+#include "../../events/SDL_keyboard_c.h"
+#include "../../events/SDL_mouse_c.h"
 #include "SDL_loadso.h"
 #include <dlfcn.h>
 
@@ -128,6 +130,7 @@
 
 	/* Make this window the current mouse focus for touch input */
 	SDL_SetMouseFocus(window);
+	SDL_SetKeyboardFocus(window);
 
 	return view;
 }
--- a/src/video/uikit/SDL_uikitview.h	Tue Jul 06 22:26:03 2010 -0700
+++ b/src/video/uikit/SDL_uikitview.h	Wed Jul 07 18:58:51 2010 -0700
@@ -22,8 +22,6 @@
 
 #import <UIKit/UIKit.h>
 #include "SDL_stdinc.h"
-#include "SDL_mouse.h"
-#include "SDL_mouse_c.h"
 #include "SDL_events.h"
 
 #if SDL_IPHONE_MULTIPLE_MICE
--- a/src/video/uikit/SDL_uikitview.m	Tue Jul 06 22:26:03 2010 -0700
+++ b/src/video/uikit/SDL_uikitview.m	Wed Jul 07 18:58:51 2010 -0700
@@ -22,8 +22,10 @@
 
 #import "SDL_uikitview.h"
 
+#include "../../events/SDL_keyboard_c.h"
+#include "../../events/SDL_mouse_c.h"
+
 #if SDL_IPHONE_KEYBOARD
-#import "SDL_keyboard_c.h"
 #import "keyinfotable.h"
 #import "SDL_uikitappdelegate.h"
 #import "SDL_uikitwindow.h"
@@ -33,7 +35,6 @@
 
 - (void)dealloc {
 #if SDL_IPHONE_KEYBOARD
-	SDL_DelKeyboard(0);
 	[textField release];
 #endif
 	[super dealloc];
@@ -225,15 +226,6 @@
 	keyboardVisible = NO;
 	/* add the UITextField (hidden) to our view */
 	[self addSubview: textField];
-	
-	/* create our SDL_Keyboard */
-	SDL_Keyboard keyboard;
-	SDL_zero(keyboard);
-	SDL_AddKeyboard(&keyboard, 0);
-	SDLKey keymap[SDL_NUM_SCANCODES];
-	SDL_GetDefaultKeymap(keymap);
-	SDL_SetKeymap(0, 0, keymap, SDL_NUM_SCANCODES);
-	
 }
 
 /* reveal onscreen virtual keyboard */
@@ -253,8 +245,8 @@
 	
 	if ([string length] == 0) {
 		/* it wants to replace text with nothing, ie a delete */
-		SDL_SendKeyboardKey( 0, SDL_PRESSED, SDL_SCANCODE_DELETE);
-		SDL_SendKeyboardKey( 0, SDL_RELEASED, SDL_SCANCODE_DELETE);
+		SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_DELETE);
+		SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_DELETE);
 	}
 	else {
 		/* go through all the characters in the string we've been sent
@@ -280,14 +272,14 @@
 			
 			if (mod & KMOD_SHIFT) {
 				/* If character uses shift, press shift down */
-				SDL_SendKeyboardKey( 0, SDL_PRESSED, SDL_SCANCODE_LSHIFT);
+				SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_LSHIFT);
 			}
 			/* send a keydown and keyup even for the character */
-			SDL_SendKeyboardKey( 0, SDL_PRESSED, code);
-			SDL_SendKeyboardKey( 0, SDL_RELEASED, code);
+			SDL_SendKeyboardKey(SDL_PRESSED, code);
+			SDL_SendKeyboardKey(SDL_RELEASED, code);
 			if (mod & KMOD_SHIFT) {
 				/* If character uses shift, press shift back up */
-				SDL_SendKeyboardKey( 0, SDL_RELEASED, SDL_SCANCODE_LSHIFT);
+				SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LSHIFT);
 			}			
 		}
 	}