[87081] trunk/dports/devel

ryandesign at macports.org ryandesign at macports.org
Wed Nov 9 17:19:12 PST 2011


Revision: 87081
          http://trac.macports.org/changeset/87081
Author:   ryandesign at macports.org
Date:     2011-11-09 17:19:09 -0800 (Wed, 09 Nov 2011)
Log Message:
-----------
ois: new port, version 1.3; see #31974

Added Paths:
-----------
    trunk/dports/devel/ois/
    trunk/dports/devel/ois/Portfile
    trunk/dports/devel/ois/files/
    trunk/dports/devel/ois/files/patch-Mac_XCode-2_2_OIS_xcodeproj_project.pbxproj.diff
    trunk/dports/devel/ois/files/patch-demos_OISConsole.cpp.diff
    trunk/dports/devel/ois/files/patch-includes_mac_CocoaHelpers.h.diff
    trunk/dports/devel/ois/files/patch-includes_mac_CocoaInputManager.h.diff
    trunk/dports/devel/ois/files/patch-includes_mac_CocoaJoyStick.h.diff
    trunk/dports/devel/ois/files/patch-includes_mac_CocoaKeyboard.h.diff
    trunk/dports/devel/ois/files/patch-includes_mac_CocoaMouse.h.diff
    trunk/dports/devel/ois/files/patch-includes_mac_MacHelpers.h.diff
    trunk/dports/devel/ois/files/patch-src_OISInputManager.cpp.diff
    trunk/dports/devel/ois/files/patch-src_mac_CocoaInputManager.mm.diff
    trunk/dports/devel/ois/files/patch-src_mac_CocoaJoystick.mm.diff
    trunk/dports/devel/ois/files/patch-src_mac_CocoaKeyboard.mm.diff
    trunk/dports/devel/ois/files/patch-src_mac_CocoaMouse.mm.diff
    trunk/dports/devel/ois/files/patch-src_mac_MacHIDManager.cpp.diff
    trunk/dports/devel/ois/files/patch-src_mac_MacHelpers.cpp.diff
    trunk/dports/devel/ois/files/patch-src_mac_MacInputManager.cpp.diff
    trunk/dports/devel/ois/files/patch-src_mac_MacKeyboard.cpp.diff
    trunk/dports/devel/ois/files/patch-src_mac_MacMouse.cpp.diff

Added: trunk/dports/devel/ois/Portfile
===================================================================
--- trunk/dports/devel/ois/Portfile	                        (rev 0)
+++ trunk/dports/devel/ois/Portfile	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,66 @@
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
+# $Id$
+
+PortSystem              1.0
+PortGroup               xcode 1.0
+
+name                    ois
+version                 1.3
+categories              devel
+platforms               darwin
+maintainers             nomaintainer
+license                 zlib
+
+description             An Object Oriented Input System (OIS)
+
+long_description        Object Oriented Input System (OIS) is meant \
+                        to be a cross platform, simple solution for \
+                        using all kinds of Input Devices (Keyboards, \
+                        Mice, Joysticks, etc) and feedback devices \
+                        (e.g. force feedback). Written in C++ using \
+                        Object Oriented Design pattern. \
+                        NOTE: \
+                        This version includes Cocoa 64-bit patches \
+                        based on a submission by David Rogers \
+                        (masterfalcon) to the OIS trac system. \
+                        These patches are required to use OIS + Ogre \
+                        in a 64-bit Mac OS environment.
+
+homepage                http://sourceforge.net/projects/wgois/
+master_sites            sourceforge:wgois/Source%20Release/${version}
+
+# Accommodate the funny version convention ois underscore v number dash number
+distname                ${name}_v[strsed ${version} {g/[.]/-/}]
+# However the extracted directory is ois dash v number dash number
+worksrcdir              ${name}-v[strsed ${version} {g/[.]/-/}]
+
+checksums               md5     9697fead17eac6025151cd2e1fca1518 \
+                        sha1    860f366f87e5103109e72724ce096ce8559c2d3d
+
+patchfiles              patch-Mac_XCode-2_2_OIS_xcodeproj_project.pbxproj.diff \
+                        patch-demos_OISConsole.cpp.diff \
+                        patch-includes_mac_CocoaHelpers.h.diff \
+                        patch-includes_mac_CocoaInputManager.h.diff \
+                        patch-includes_mac_CocoaJoyStick.h.diff \
+                        patch-includes_mac_CocoaKeyboard.h.diff \
+                        patch-includes_mac_CocoaMouse.h.diff \
+                        patch-includes_mac_MacHelpers.h.diff \
+                        patch-src_OISInputManager.cpp.diff \
+                        patch-src_mac_CocoaInputManager.mm.diff \
+                        patch-src_mac_CocoaJoystick.mm.diff \
+                        patch-src_mac_CocoaKeyboard.mm.diff \
+                        patch-src_mac_CocoaMouse.mm.diff \
+                        patch-src_mac_MacHIDManager.cpp.diff \
+                        patch-src_mac_MacHelpers.cpp.diff \
+                        patch-src_mac_MacInputManager.cpp.diff \
+                        patch-src_mac_MacKeyboard.cpp.diff \
+                        patch-src_mac_MacMouse.cpp.diff
+
+xcode.project           Mac/XCode-2.2/OIS.xcodeproj
+
+destroot {
+    delete ${worksrcpath}/includes/Makefile.am
+    copy ${worksrcpath}/includes/. ${destroot}${prefix}/include/OIS
+    xinstall -m 644 ${worksrcpath}/Mac/XCode-2.2/build/Release/libOIS.a \
+        ${destroot}${prefix}/lib
+}


Property changes on: trunk/dports/devel/ois/Portfile
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: trunk/dports/devel/ois/files/patch-Mac_XCode-2_2_OIS_xcodeproj_project.pbxproj.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-Mac_XCode-2_2_OIS_xcodeproj_project.pbxproj.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-Mac_XCode-2_2_OIS_xcodeproj_project.pbxproj.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,326 @@
+--- Mac/XCode-2.2/OIS.xcodeproj/project.pbxproj.orig	2010-12-17 04:43:21.000000000 +0100
++++ Mac/XCode-2.2/OIS.xcodeproj/project.pbxproj	2011-11-08 05:08:48.000000000 +0100
+@@ -3,7 +3,7 @@
+ 	archiveVersion = 1;
+ 	classes = {
+ 	};
+-	objectVersion = 42;
++	objectVersion = 44;
+ 	objects = {
+ 
+ /* Begin PBXAggregateTarget section */
+@@ -40,12 +40,12 @@
+ 		0043D8890C35664A007ACDF6 /* OISPrereqs.h in Headers */ = {isa = PBXBuildFile; fileRef = 0043D87C0C35664A007ACDF6 /* OISPrereqs.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 		0043D8960C3566C1007ACDF6 /* OISEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8900C3566C1007ACDF6 /* OISEffect.cpp */; };
+ 		0043D8970C3566C1007ACDF6 /* OISForceFeedback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8910C3566C1007ACDF6 /* OISForceFeedback.cpp */; };
+-		0043D8980C3566C1007ACDF6 /* OISInputManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8920C3566C1007ACDF6 /* OISInputManager.cpp */; };
++		0043D8980C3566C1007ACDF6 /* OISInputManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8920C3566C1007ACDF6 /* OISInputManager.cpp */; settings = {COMPILER_FLAGS = "-x objective-c++"; }; };
+ 		0043D8990C3566C1007ACDF6 /* OISJoyStick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8930C3566C1007ACDF6 /* OISJoyStick.cpp */; };
+ 		0043D89A0C3566C1007ACDF6 /* OISKeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8940C3566C1007ACDF6 /* OISKeyboard.cpp */; };
+ 		0043D89B0C3566C1007ACDF6 /* OISObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8950C3566C1007ACDF6 /* OISObject.cpp */; };
+ 		0043D8A00C3566C9007ACDF6 /* MacHelpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D89C0C3566C9007ACDF6 /* MacHelpers.cpp */; };
+-		0043D8A10C3566C9007ACDF6 /* MacInputManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D89D0C3566C9007ACDF6 /* MacInputManager.cpp */; };
++		0043D8A10C3566C9007ACDF6 /* MacInputManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D89D0C3566C9007ACDF6 /* MacInputManager.cpp */; settings = {COMPILER_FLAGS = "-x objective-c++"; }; };
+ 		0043D8A20C3566C9007ACDF6 /* MacKeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D89E0C3566C9007ACDF6 /* MacKeyboard.cpp */; };
+ 		0043D8A30C3566C9007ACDF6 /* MacMouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D89F0C3566C9007ACDF6 /* MacMouse.cpp */; };
+ 		0043D8C70C35680D007ACDF6 /* OIS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0043D8700C35664A007ACDF6 /* OIS.h */; };
+@@ -80,7 +80,7 @@
+ 		0043D8E40C356819007ACDF6 /* MacMouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D89F0C3566C9007ACDF6 /* MacMouse.cpp */; };
+ 		0043D8E50C356819007ACDF6 /* OISEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8900C3566C1007ACDF6 /* OISEffect.cpp */; };
+ 		0043D8E60C356819007ACDF6 /* OISForceFeedback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8910C3566C1007ACDF6 /* OISForceFeedback.cpp */; };
+-		0043D8E70C356819007ACDF6 /* OISInputManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8920C3566C1007ACDF6 /* OISInputManager.cpp */; };
++		0043D8E70C356819007ACDF6 /* OISInputManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8920C3566C1007ACDF6 /* OISInputManager.cpp */; settings = {COMPILER_FLAGS = "-x objective-c++"; }; };
+ 		0043D8E80C356819007ACDF6 /* OISJoyStick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8930C3566C1007ACDF6 /* OISJoyStick.cpp */; };
+ 		0043D8E90C356819007ACDF6 /* OISKeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8940C3566C1007ACDF6 /* OISKeyboard.cpp */; };
+ 		0043D8EA0C356819007ACDF6 /* OISObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8950C3566C1007ACDF6 /* OISObject.cpp */; };
+@@ -90,11 +90,10 @@
+ 		0043D8EE0C35681A007ACDF6 /* MacMouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D89F0C3566C9007ACDF6 /* MacMouse.cpp */; };
+ 		0043D8EF0C35681A007ACDF6 /* OISEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8900C3566C1007ACDF6 /* OISEffect.cpp */; };
+ 		0043D8F00C35681A007ACDF6 /* OISForceFeedback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8910C3566C1007ACDF6 /* OISForceFeedback.cpp */; };
+-		0043D8F10C35681A007ACDF6 /* OISInputManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8920C3566C1007ACDF6 /* OISInputManager.cpp */; };
++		0043D8F10C35681A007ACDF6 /* OISInputManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8920C3566C1007ACDF6 /* OISInputManager.cpp */; settings = {COMPILER_FLAGS = "-x objective-c++"; }; };
+ 		0043D8F20C35681A007ACDF6 /* OISJoyStick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8930C3566C1007ACDF6 /* OISJoyStick.cpp */; };
+ 		0043D8F30C35681A007ACDF6 /* OISKeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8940C3566C1007ACDF6 /* OISKeyboard.cpp */; };
+ 		0043D8F40C35681A007ACDF6 /* OISObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0043D8950C3566C1007ACDF6 /* OISObject.cpp */; };
+-		0043D8F50C356828007ACDF6 /* OIS-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0043D85F0C356509007ACDF6 /* OIS-Info.plist */; };
+ 		0043D8F70C356840007ACDF6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0043D8F60C356840007ACDF6 /* Carbon.framework */; };
+ 		0043D8F80C356840007ACDF6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0043D8F60C356840007ACDF6 /* Carbon.framework */; };
+ 		0043D8F90C356840007ACDF6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0043D8F60C356840007ACDF6 /* Carbon.framework */; };
+@@ -124,6 +123,21 @@
+ 		4AEB08FC0D73DA81007CD406 /* OISConsole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0082F2880C827BF500E926BE /* OISConsole.cpp */; };
+ 		4AEB090C0D73DABC007CD406 /* OIS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0043D85D0C356509007ACDF6 /* OIS.framework */; };
+ 		4AEB09240D73DBC8007CD406 /* OIS.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0043D85D0C356509007ACDF6 /* OIS.framework */; };
++		9C0B132B125E954800E10CB7 /* CocoaInputManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1325125E954800E10CB7 /* CocoaInputManager.mm */; };
++		9C0B132C125E954800E10CB7 /* CocoaJoyStick.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1326125E954800E10CB7 /* CocoaJoyStick.mm */; };
++		9C0B132D125E954800E10CB7 /* CocoaKeyboard.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1327125E954800E10CB7 /* CocoaKeyboard.mm */; };
++		9C0B132E125E954800E10CB7 /* CocoaMouse.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1328125E954800E10CB7 /* CocoaMouse.mm */; };
++		9C0B1331125E955000E10CB7 /* CocoaInputManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1325125E954800E10CB7 /* CocoaInputManager.mm */; };
++		9C0B1332125E955000E10CB7 /* CocoaJoyStick.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1326125E954800E10CB7 /* CocoaJoyStick.mm */; };
++		9C0B1333125E955000E10CB7 /* CocoaKeyboard.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1327125E954800E10CB7 /* CocoaKeyboard.mm */; };
++		9C0B1334125E955000E10CB7 /* CocoaMouse.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1328125E954800E10CB7 /* CocoaMouse.mm */; };
++		9C0B1337125E955000E10CB7 /* CocoaInputManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1325125E954800E10CB7 /* CocoaInputManager.mm */; };
++		9C0B1338125E955000E10CB7 /* CocoaJoyStick.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1326125E954800E10CB7 /* CocoaJoyStick.mm */; };
++		9C0B1339125E955000E10CB7 /* CocoaKeyboard.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1327125E954800E10CB7 /* CocoaKeyboard.mm */; };
++		9C0B133A125E955000E10CB7 /* CocoaMouse.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C0B1328125E954800E10CB7 /* CocoaMouse.mm */; };
++		9C7C9A0D126136E20026234E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C0B12C4125E3B3400E10CB7 /* Cocoa.framework */; };
++		9C7C9A0E126136E30026234E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C0B12C4125E3B3400E10CB7 /* Cocoa.framework */; };
++		9C7C9A0F126136E30026234E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C0B12C4125E3B3400E10CB7 /* Cocoa.framework */; };
+ /* End PBXBuildFile section */
+ 
+ /* Begin PBXContainerItemProxy section */
+@@ -222,6 +236,16 @@
+ 		4ADFD2A80CDE7BAC006031E4 /* MacHIDManager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = MacHIDManager.cpp; path = ../../src/mac/MacHIDManager.cpp; sourceTree = SOURCE_ROOT; };
+ 		4AEB08F60D73DA6D007CD406 /* ConsoleTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ConsoleTest.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 		4AEB08F80D73DA6D007CD406 /* ConsoleTest-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ConsoleTest-Info.plist"; sourceTree = "<group>"; };
++		9C0B12C4125E3B3400E10CB7 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
++		9C0B1325125E954800E10CB7 /* CocoaInputManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CocoaInputManager.mm; path = ../../src/mac/CocoaInputManager.mm; sourceTree = SOURCE_ROOT; };
++		9C0B1326125E954800E10CB7 /* CocoaJoyStick.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CocoaJoyStick.mm; path = ../../src/mac/CocoaJoyStick.mm; sourceTree = SOURCE_ROOT; };
++		9C0B1327125E954800E10CB7 /* CocoaKeyboard.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CocoaKeyboard.mm; path = ../../src/mac/CocoaKeyboard.mm; sourceTree = SOURCE_ROOT; };
++		9C0B1328125E954800E10CB7 /* CocoaMouse.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CocoaMouse.mm; path = ../../src/mac/CocoaMouse.mm; sourceTree = SOURCE_ROOT; };
++		9C0B133B125E959000E10CB7 /* CocoaHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CocoaHelpers.h; path = ../../includes/mac/CocoaHelpers.h; sourceTree = SOURCE_ROOT; };
++		9C0B133D125E959000E10CB7 /* CocoaInputManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CocoaInputManager.h; path = ../../includes/mac/CocoaInputManager.h; sourceTree = SOURCE_ROOT; };
++		9C0B133E125E959000E10CB7 /* CocoaJoyStick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CocoaJoyStick.h; path = ../../includes/mac/CocoaJoyStick.h; sourceTree = SOURCE_ROOT; };
++		9C0B133F125E959000E10CB7 /* CocoaKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CocoaKeyboard.h; path = ../../includes/mac/CocoaKeyboard.h; sourceTree = SOURCE_ROOT; };
++		9C0B1340125E959000E10CB7 /* CocoaMouse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CocoaMouse.h; path = ../../includes/mac/CocoaMouse.h; sourceTree = SOURCE_ROOT; };
+ /* End PBXFileReference section */
+ 
+ /* Begin PBXFrameworksBuildPhase section */
+@@ -231,6 +255,7 @@
+ 			files = (
+ 				0043D8F70C356840007ACDF6 /* Carbon.framework in Frameworks */,
+ 				4ADFD0130CDD94B2006031E4 /* IOKit.framework in Frameworks */,
++				9C7C9A0E126136E30026234E /* Cocoa.framework in Frameworks */,
+ 			);
+ 			runOnlyForDeploymentPostprocessing = 0;
+ 		};
+@@ -240,6 +265,7 @@
+ 			files = (
+ 				0043D8F80C356840007ACDF6 /* Carbon.framework in Frameworks */,
+ 				4ADFD0100CDD948B006031E4 /* IOKit.framework in Frameworks */,
++				9C7C9A0D126136E20026234E /* Cocoa.framework in Frameworks */,
+ 			);
+ 			runOnlyForDeploymentPostprocessing = 0;
+ 		};
+@@ -249,6 +275,7 @@
+ 			files = (
+ 				0043D8F90C356840007ACDF6 /* Carbon.framework in Frameworks */,
+ 				4ADFD0110CDD948C006031E4 /* IOKit.framework in Frameworks */,
++				9C7C9A0F126136E30026234E /* Cocoa.framework in Frameworks */,
+ 			);
+ 			runOnlyForDeploymentPostprocessing = 0;
+ 		};
+@@ -327,6 +354,7 @@
+ 			children = (
+ 				4AC4C3930CDD840500603F93 /* IOKit.framework */,
+ 				0043D8F60C356840007ACDF6 /* Carbon.framework */,
++				9C0B12C4125E3B3400E10CB7 /* Cocoa.framework */,
+ 			);
+ 			name = "External Frameworks and Libraries";
+ 			sourceTree = "<group>";
+@@ -334,6 +362,11 @@
+ 		0043D86B0C3565E0007ACDF6 /* OSX */ = {
+ 			isa = PBXGroup;
+ 			children = (
++				9C0B133B125E959000E10CB7 /* CocoaHelpers.h */,
++				9C0B133D125E959000E10CB7 /* CocoaInputManager.h */,
++				9C0B133E125E959000E10CB7 /* CocoaJoyStick.h */,
++				9C0B133F125E959000E10CB7 /* CocoaKeyboard.h */,
++				9C0B1340125E959000E10CB7 /* CocoaMouse.h */,
+ 				0043D88A0C35665B007ACDF6 /* MacPrereqs.h */,
+ 				0043D88B0C35665B007ACDF6 /* MacInputManager.h */,
+ 				0043D88C0C35665B007ACDF6 /* MacHelpers.h */,
+@@ -369,6 +402,10 @@
+ 		0043D86D0C3565F7007ACDF6 /* OSX */ = {
+ 			isa = PBXGroup;
+ 			children = (
++				9C0B1325125E954800E10CB7 /* CocoaInputManager.mm */,
++				9C0B1326125E954800E10CB7 /* CocoaJoyStick.mm */,
++				9C0B1327125E954800E10CB7 /* CocoaKeyboard.mm */,
++				9C0B1328125E954800E10CB7 /* CocoaMouse.mm */,
+ 				249631C31066333900EFD0E1 /* MacJoyStick.cpp */,
+ 				0043D89C0C3566C9007ACDF6 /* MacHelpers.cpp */,
+ 				4ADFD2A80CDE7BAC006031E4 /* MacHIDManager.cpp */,
+@@ -481,7 +518,6 @@
+ 			buildConfigurationList = 0043D8610C356509007ACDF6 /* Build configuration list for PBXNativeTarget "OIS" */;
+ 			buildPhases = (
+ 				0043D8580C356509007ACDF6 /* Headers */,
+-				0043D8590C356509007ACDF6 /* Resources */,
+ 				0043D85A0C356509007ACDF6 /* Sources */,
+ 				0043D85B0C356509007ACDF6 /* Frameworks */,
+ 			);
+@@ -568,7 +604,7 @@
+ 		0043D84E0C3564F8007ACDF6 /* Project object */ = {
+ 			isa = PBXProject;
+ 			buildConfigurationList = 0043D84F0C3564F8007ACDF6 /* Build configuration list for PBXProject "OIS" */;
+-			compatibilityVersion = "Xcode 2.4";
++			compatibilityVersion = "Xcode 3.0";
+ 			developmentRegion = English;
+ 			hasScannedForEncodings = 0;
+ 			knownRegions = (
+@@ -593,14 +629,6 @@
+ /* End PBXProject section */
+ 
+ /* Begin PBXResourcesBuildPhase section */
+-		0043D8590C356509007ACDF6 /* Resources */ = {
+-			isa = PBXResourcesBuildPhase;
+-			buildActionMask = 2147483647;
+-			files = (
+-				0043D8F50C356828007ACDF6 /* OIS-Info.plist in Resources */,
+-			);
+-			runOnlyForDeploymentPostprocessing = 0;
+-		};
+ 		4AEB08F20D73DA6D007CD406 /* Resources */ = {
+ 			isa = PBXResourcesBuildPhase;
+ 			buildActionMask = 2147483647;
+@@ -628,6 +656,10 @@
+ 				4ADFD2A90CDE7BAC006031E4 /* MacHIDManager.cpp in Sources */,
+ 				249631C71066334D00EFD0E1 /* MacJoyStick.cpp in Sources */,
+ 				4ACD7A530CEF903600D72CD9 /* OISException.cpp in Sources */,
++				9C0B132B125E954800E10CB7 /* CocoaInputManager.mm in Sources */,
++				9C0B132C125E954800E10CB7 /* CocoaJoyStick.mm in Sources */,
++				9C0B132D125E954800E10CB7 /* CocoaKeyboard.mm in Sources */,
++				9C0B132E125E954800E10CB7 /* CocoaMouse.mm in Sources */,
+ 			);
+ 			runOnlyForDeploymentPostprocessing = 0;
+ 		};
+@@ -648,6 +680,10 @@
+ 				4ADFD2AA0CDE7BAC006031E4 /* MacHIDManager.cpp in Sources */,
+ 				249631C81066335600EFD0E1 /* MacJoyStick.cpp in Sources */,
+ 				4ACD7A540CEF903600D72CD9 /* OISException.cpp in Sources */,
++				9C0B1331125E955000E10CB7 /* CocoaInputManager.mm in Sources */,
++				9C0B1332125E955000E10CB7 /* CocoaJoyStick.mm in Sources */,
++				9C0B1333125E955000E10CB7 /* CocoaKeyboard.mm in Sources */,
++				9C0B1334125E955000E10CB7 /* CocoaMouse.mm in Sources */,
+ 			);
+ 			runOnlyForDeploymentPostprocessing = 0;
+ 		};
+@@ -668,6 +704,10 @@
+ 				4ADFD2AB0CDE7BAC006031E4 /* MacHIDManager.cpp in Sources */,
+ 				249631C91066335D00EFD0E1 /* MacJoyStick.cpp in Sources */,
+ 				4ACD7A550CEF903600D72CD9 /* OISException.cpp in Sources */,
++				9C0B1337125E955000E10CB7 /* CocoaInputManager.mm in Sources */,
++				9C0B1338125E955000E10CB7 /* CocoaJoyStick.mm in Sources */,
++				9C0B1339125E955000E10CB7 /* CocoaKeyboard.mm in Sources */,
++				9C0B133A125E955000E10CB7 /* CocoaMouse.mm in Sources */,
+ 			);
+ 			runOnlyForDeploymentPostprocessing = 0;
+ 		};
+@@ -721,13 +761,13 @@
+ 		0043D8500C3564F8007ACDF6 /* Debug */ = {
+ 			isa = XCBuildConfiguration;
+ 			buildSettings = {
+-				ARCHS = (
+-					ppc,
+-					i386,
+-				);
++				ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)";
++				ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386";
+ 				COPY_PHASE_STRIP = YES;
+ 				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+-				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
++				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
++				GCC_WARN_UNUSED_VARIABLE = YES;
++				SDKROOT = macosx;
+ 				USER_HEADER_SEARCH_PATHS = ../../includes;
+ 			};
+ 			name = Debug;
+@@ -735,13 +775,12 @@
+ 		0043D8510C3564F8007ACDF6 /* Release */ = {
+ 			isa = XCBuildConfiguration;
+ 			buildSettings = {
+-				ARCHS = (
+-					ppc,
+-					i386,
+-				);
++				ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)";
++				ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386";
+ 				COPY_PHASE_STRIP = YES;
+ 				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+-				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
++				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
++				SDKROOT = macosx;
+ 				USER_HEADER_SEARCH_PATHS = ../../includes;
+ 			};
+ 			name = Release;
+@@ -751,16 +790,13 @@
+ 			buildSettings = {
+ 				COPY_PHASE_STRIP = YES;
+ 				DYLIB_COMPATIBILITY_VERSION = 1.0;
+-				DYLIB_CURRENT_VERSION = 1.0;
++				DYLIB_CURRENT_VERSION = 1.3;
+ 				FRAMEWORK_VERSION = A;
+ 				GCC_DYNAMIC_NO_PIC = NO;
+ 				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ 				GCC_MODEL_TUNING = G5;
+ 				GCC_OPTIMIZATION_LEVEL = 0;
+-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+-				GCC_VERSION = 4.0;
+ 				INFOPLIST_FILE = "OIS-Info.plist";
+ 				INSTALL_PATH = "@executable_path/../Frameworks";
+ 				OTHER_LDFLAGS = (
+@@ -769,6 +805,7 @@
+ 				);
+ 				PREBINDING = NO;
+ 				PRODUCT_NAME = OIS;
++				VALID_ARCHS = "i386 x86_64";
+ 				ZERO_LINK = YES;
+ 			};
+ 			name = Debug;
+@@ -778,14 +815,11 @@
+ 			buildSettings = {
+ 				COPY_PHASE_STRIP = YES;
+ 				DYLIB_COMPATIBILITY_VERSION = 1.0;
+-				DYLIB_CURRENT_VERSION = 1.0;
++				DYLIB_CURRENT_VERSION = 1.3;
+ 				FRAMEWORK_VERSION = A;
+ 				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ 				GCC_MODEL_TUNING = G5;
+-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+-				GCC_VERSION = 4.0;
+ 				INFOPLIST_FILE = "OIS-Info.plist";
+ 				INSTALL_PATH = "@executable_path/../Frameworks";
+ 				OTHER_LDFLAGS = (
+@@ -809,9 +843,6 @@
+ 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ 				GCC_MODEL_TUNING = G5;
+ 				GCC_OPTIMIZATION_LEVEL = 0;
+-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+-				GCC_VERSION = 4.0;
+ 				INSTALL_PATH = "@executable_path/../Frameworks";
+ 				OTHER_LDFLAGS = (
+ 					"-framework",
+@@ -832,9 +863,6 @@
+ 				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ 				GCC_MODEL_TUNING = G5;
+-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+-				GCC_VERSION = 4.0;
+ 				INSTALL_PATH = "@executable_path/../Frameworks";
+ 				OTHER_LDFLAGS = (
+ 					"-framework",
+@@ -855,9 +883,6 @@
+ 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ 				GCC_MODEL_TUNING = G5;
+ 				GCC_OPTIMIZATION_LEVEL = 0;
+-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+-				GCC_VERSION = 4.0;
+ 				INSTALL_PATH = /usr/local/lib;
+ 				OTHER_LDFLAGS = (
+ 					"-framework",
+@@ -876,9 +901,6 @@
+ 				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ 				GCC_MODEL_TUNING = G5;
+-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+-				GCC_VERSION = 4.0;
+ 				INSTALL_PATH = /usr/local/lib;
+ 				OTHER_LDFLAGS = (
+ 					"-framework",

Added: trunk/dports/devel/ois/files/patch-demos_OISConsole.cpp.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-demos_OISConsole.cpp.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-demos_OISConsole.cpp.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,11 @@
+--- demos/OISConsole.cpp	(revision 34)
++++ demos/OISConsole.cpp	(working copy)
+@@ -284,7 +284,7 @@
+ 	//For this demo, show mouse and do not grab (confine to window)
+ //	pl.insert(std::make_pair(std::string("x11_mouse_grab"), std::string("false")));
+ //	pl.insert(std::make_pair(std::string("x11_mouse_hide"), std::string("false")));
+-#elif defined OIS_APPLE_PLATFORM
++#elif defined OIS_APPLE_PLATFORM && !__LP64__
+     // create the window rect in global coords
+     ::Rect windowRect;
+     windowRect.left = 0;

Added: trunk/dports/devel/ois/files/patch-includes_mac_CocoaHelpers.h.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-includes_mac_CocoaHelpers.h.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-includes_mac_CocoaHelpers.h.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,49 @@
+--- includes/mac/CocoaHelpers.h	(revision 0)
++++ includes/mac/CocoaHelpers.h	(revision 0)
+@@ -0,0 +1,46 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++
++#ifndef OIS_CocoaHelpers_H
++#define OIS_CocoaHelpers_H
++
++#include "OISEvents.h"
++#include "OISKeyboard.h"
++#include "OISMouse.h"
++
++// This is needed for keeping an event stack for keyboard and mouse
++namespace OIS
++{
++    
++    // used in the eventStack to store the type
++    enum Mac_EventType { MAC_KEYUP = 0,
++                         MAC_KEYDOWN = 1,
++                         MAC_KEYREPEAT,
++                         MAC_MOUSEDOWN,
++                         MAC_MOUSEUP,
++                         MAC_MOUSEMOVED,
++                         MAC_MOUSESCROLL};
++    typedef enum Mac_EventType MacEventType;
++}
++
++#endif

Added: trunk/dports/devel/ois/files/patch-includes_mac_CocoaInputManager.h.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-includes_mac_CocoaInputManager.h.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-includes_mac_CocoaInputManager.h.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,101 @@
+--- includes/mac/CocoaInputManager.h	(revision 0)
++++ includes/mac/CocoaInputManager.h	(revision 0)
+@@ -0,0 +1,98 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++
++#ifndef OIS_CocoaInputManager_H
++#define OIS_CocoaInputManager_H
++
++#include "OISInputManager.h"
++#include "OISFactoryCreator.h"
++#include <Cocoa/Cocoa.h>
++
++namespace OIS
++{
++    class MacHIDManager;
++    
++    class CocoaInputManager : public InputManager, public FactoryCreator
++    {
++    public:
++        CocoaInputManager();
++        virtual ~CocoaInputManager();
++        
++		//InputManager Overrides
++		/** @copydoc InputManager::_initialize */
++		void _initialize( ParamList &paramList );
++
++		//FactoryCreator Overrides
++		/** @copydoc FactoryCreator::deviceList */
++		DeviceList freeDeviceList();
++
++		/** @copydoc FactoryCreator::totalDevices */
++		int totalDevices(Type iType);
++
++		/** @copydoc FactoryCreator::freeDevices */
++		int freeDevices(Type iType);
++
++		/** @copydoc FactoryCreator::vendorExist */
++		bool vendorExist(Type iType, const std::string & vendor);
++
++		/** @copydoc FactoryCreator::createObject */
++		Object* createObject(InputManager* creator, Type iType, bool bufferMode, const std::string & vendor = "");
++
++		/** @copydoc FactoryCreator::destroyObject */
++		void destroyObject(Object* obj);
++
++		//Internal Items
++		//! Internal method, used for flaggin keyboard as available/unavailable for creation
++		void _setKeyboardUsed(bool used) {keyboardUsed = used; }
++
++		//! Internal method, used for flaggin mouse as available/unavailable for creation
++		void _setMouseUsed(bool used) { mouseUsed = used; }
++
++        //! method for getting window
++        NSWindow * _getWindow() {return mWindow;}
++        
++    protected:        
++        void _parseConfigSettings( ParamList& paramList );
++        
++        void _enumerateDevices();
++        
++        static const std::string iName;
++        
++        // Mac stuff
++		NSWindow *mWindow;
++        
++        // settings
++        bool mHideMouse;
++        bool mUseRepeat;
++
++		//! Used to know if we used up keyboard
++		bool keyboardUsed;
++
++		//! Used to know if we used up mouse
++		bool mouseUsed;
++		
++		//! HID Manager class handling devices other than keyboard/mouse
++		MacHIDManager *mHIDManager;
++    };
++}
++#endif

Added: trunk/dports/devel/ois/files/patch-includes_mac_CocoaJoyStick.h.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-includes_mac_CocoaJoyStick.h.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-includes_mac_CocoaJoyStick.h.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,79 @@
+--- includes/mac/CocoaJoyStick.h	(revision 0)
++++ includes/mac/CocoaJoyStick.h	(revision 0)
+@@ -0,0 +1,76 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++#ifndef Cocoa_Joystick_H
++#define Cocoa_Joystick_H
++
++#include "OISJoyStick.h"
++#include "mac/MacHIDManager.h"
++
++namespace OIS
++{
++	struct AxisInfo
++	{
++		int min;
++		int max;
++		
++		AxisInfo(int min, int max)
++			: min(min), max(max) {}
++	};
++	
++	typedef struct cookie_struct 
++	{ 
++		std::map<IOHIDElementCookie, AxisInfo> axisCookies; 			
++		std::vector<IOHIDElementCookie> buttonCookies; 
++	} cookie_struct_t; 
++	
++	//class HidDeviceInfo
++	
++	class CocoaJoyStick : public JoyStick
++	{
++	public:
++		CocoaJoyStick(const std::string& vendor, bool buffered, HidInfo* info, InputManager* creator, int devID);
++		
++		virtual ~CocoaJoyStick();
++		
++		/** @copydoc Object::setBuffered */
++		virtual void setBuffered(bool buffered);
++		
++		/** @copydoc Object::capture */
++		virtual void capture();
++		
++		/** @copydoc Object::queryInterface */
++		virtual Interface* queryInterface(Interface::IType type);
++		
++		/** @copydoc Object::_initialize */
++		virtual void _initialize();
++		
++		void _enumerateCookies();
++		
++		IOHIDQueueInterface** _createQueue(unsigned int depth = 8);
++	protected:
++		HidInfo* mInfo;
++		cookie_struct_t mCookies;
++		IOHIDQueueInterface** mQueue;
++	};
++}
++#endif

Added: trunk/dports/devel/ois/files/patch-includes_mac_CocoaKeyboard.h.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-includes_mac_CocoaKeyboard.h.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-includes_mac_CocoaKeyboard.h.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,120 @@
+--- includes/mac/CocoaKeyboard.h	(revision 0)
++++ includes/mac/CocoaKeyboard.h	(revision 0)
+@@ -0,0 +1,117 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++
++#ifndef OIS_CocoaKeyboard_H
++#define OIS_CocoaKeyboard_H
++
++#include "OISKeyboard.h"
++#include "mac/CocoaHelpers.h"
++
++#include <list>
++#include <Cocoa/Cocoa.h>
++
++ at class CocoaKeyboardView;
++
++using namespace OIS;
++using namespace std;
++
++namespace OIS
++{
++    typedef class Cocoa_KeyStackEvent
++    {
++        friend class CocoaKeyboard;
++        
++    public:
++        Cocoa_KeyStackEvent( KeyEvent event, MacEventType type ) : Event(event), Type(type) {}
++        const MacEventType type()   { return Type; }
++        const KeyEvent event()      { return Event; }
++    private:
++        MacEventType Type;
++        KeyEvent Event;
++    } CocoaKeyStackEvent;
++    
++    class CocoaKeyboard : public Keyboard
++    {
++    public:
++        CocoaKeyboard( InputManager* creator, bool buffered, bool repeat );
++        virtual ~CocoaKeyboard();
++
++        // Sets buffered mode
++        virtual void setBuffered( bool buffered );
++
++        // Unbuffered keydown check
++        virtual bool isKeyDown( KeyCode key ) const;
++
++        // This will send listener events if buffered is on.
++        // Note that in the mac implementation, unbuffered input is
++        // automatically updated without calling this.
++        virtual void capture();
++
++        // Copies the current key buffer
++        virtual void copyKeyStates( char keys[256] ) const;
++
++        // Returns a description of the given key
++        virtual std::string& getAsString( KeyCode key );
++
++        virtual Interface* queryInterface( Interface::IType type ) { return 0; }
++
++        // Public but reserved for internal use:
++        virtual void _initialize();
++        
++        unsigned int & _getModifiers() { return mModifiers; }
++
++    protected:
++        CocoaKeyboardView *mResponder;
++        std::string getString;
++    };
++}
++
++typedef std::map<unsigned short, KeyCode> VirtualtoOIS_KeyMap;
++typedef std::list<OIS::CocoaKeyStackEvent> eventStack;
++
++ at interface CocoaKeyboardView : NSResponder
++{
++    CocoaKeyboard *oisKeyboardObj;
++    VirtualtoOIS_KeyMap keyConversion;
++
++    char KeyBuffer[256];
++    NSUInteger prevModMask;
++    
++    // buffered events, fifo stack
++    eventStack pendingEvents;
++    bool useRepeat;
++}
++
++- (void)setOISKeyboardObj:(CocoaKeyboard *)obj;
++- (void)populateKeyConversion;
++- (void)capture;
++- (void)injectEvent:(KeyCode)kc eventTime:(unsigned int)time eventType:(MacEventType)type;
++- (void)injectEvent:(KeyCode)kc eventTime:(unsigned int)time eventType:(MacEventType)type eventText:(unsigned int)txt;
++- (void)copyKeyStates:(char [256])keys;
++- (bool)isKeyDown:(KeyCode)key;
++- (void)setUseRepeat:(bool)repeat;
++- (VirtualtoOIS_KeyMap)keyConversionMap;
++
++ at end
++
++#endif

Added: trunk/dports/devel/ois/files/patch-includes_mac_CocoaMouse.h.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-includes_mac_CocoaMouse.h.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-includes_mac_CocoaMouse.h.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,78 @@
+--- includes/mac/CocoaMouse.h	(revision 0)
++++ includes/mac/CocoaMouse.h	(revision 0)
+@@ -0,0 +1,75 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++#ifndef OIS_CocoaMouse_H
++#define OIS_CocoaMouse_H
++
++#include "OISMouse.h"
++#include "mac/CocoaHelpers.h"
++
++#include <Cocoa/Cocoa.h>
++
++ at class CocoaMouseView;
++
++using namespace OIS;
++
++namespace OIS
++{
++	class CocoaMouse : public Mouse
++    {
++	public:
++		CocoaMouse( InputManager* creator, bool buffered );
++		virtual ~CocoaMouse();
++		
++		/** @copydoc Object::setBuffered */
++		virtual void setBuffered(bool buffered);
++
++		/** @copydoc Object::capture */
++		virtual void capture();
++
++		/** @copydoc Object::queryInterface */
++		virtual Interface* queryInterface(Interface::IType type) {return 0;}
++
++		/** @copydoc Object::_initialize */
++		virtual void _initialize();
++        
++        MouseState * getMouseStatePtr() { return &(mState); }
++
++	protected:
++        CocoaMouseView *mResponder;
++	};
++}
++
++ at interface CocoaMouseView : NSView
++{
++    CocoaMouse *oisMouseObj;
++    MouseState mTempState;
++    bool mNeedsToRegainFocus;
++    bool mMouseWarped;
++}
++
++- (void)setOISMouseObj:(CocoaMouse *)obj;
++- (void)capture;
++
++ at end
++
++#endif // OIS_CocoaMouse_H

Added: trunk/dports/devel/ois/files/patch-includes_mac_MacHelpers.h.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-includes_mac_MacHelpers.h.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-includes_mac_MacHelpers.h.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,42 @@
+--- includes/mac/MacHelpers.h	(revision 34)
++++ includes/mac/MacHelpers.h	(working copy)
+@@ -57,37 +57,18 @@
+                          MAC_MOUSEMOVED,
+                          MAC_MOUSESCROLL};
+     typedef enum Mac_EventType MacEventType;
+-    
+-    
++
+     // only used by MacKeyboard
+     typedef class Mac_KeyStackEvent
+     {
+         friend class MacKeyboard;
+-        
+-        
++
+     private:
+         Mac_KeyStackEvent( KeyEvent event, MacEventType type ) : Event(event), Type(type) {}
+         
+         MacEventType Type;
+         KeyEvent Event;
+     } MacKeyStackEvent;
+- 
+-    
+-
+-    // only used by MacMouse
+-    typedef class Mac_MouseStackEvent
+-    {
+-        friend class MacMouse;
+-        
+-    private:
+-        Mac_MouseStackEvent( MouseEvent event, MacEventType type,  MouseButtonID button) : Event(event), Type(type), Button(button) {}
+-        
+-        MacEventType Type;
+-        MouseEvent Event;
+-		MouseButtonID Button;
+-        
+-    } MacMouseStackEvent;
+-        
+ }
+ 
+ 

Added: trunk/dports/devel/ois/files/patch-src_OISInputManager.cpp.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_OISInputManager.cpp.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_OISInputManager.cpp.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,29 @@
+--- src/OISInputManager.cpp	(revision 34)
++++ src/OISInputManager.cpp	(working copy)
+@@ -35,6 +35,7 @@
+ #elif defined OIS_LINUX_PLATFORM
+ #  include "linux/LinuxInputManager.h"
+ #elif defined OIS_APPLE_PLATFORM
++#  include "mac/CocoaInputManager.h"
+ #  include "mac/MacInputManager.h"
+ #elif defined OIS_IPHONE_PLATFORM
+ #  include "iphone/iPhoneInputManager.h"
+@@ -113,7 +114,17 @@
+ #elif defined OIS_LINUX_PLATFORM
+ 	im = new LinuxInputManager();
+ #elif defined OIS_APPLE_PLATFORM
+-	im = new MacInputManager();
++	ParamList::iterator i = paramList.find("WINDOW");
++	if(i != paramList.end())
++    {
++        id obj = (id)strtoul(i->second.c_str(), 0, 10);
++        if(obj && [obj isKindOfClass:[NSWindow class]])
++            im = new CocoaInputManager();
++#ifndef __LP64__
++        else
++            im = new MacInputManager();
++#endif
++    }
+ #elif defined OIS_IPHONE_PLATFORM
+ 	im = new iPhoneInputManager();
+ #else

Added: trunk/dports/devel/ois/files/patch-src_mac_CocoaInputManager.mm.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_mac_CocoaInputManager.mm.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_mac_CocoaInputManager.mm.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,190 @@
+--- src/mac/CocoaInputManager.mm	(revision 0)
++++ src/mac/CocoaInputManager.mm	(revision 0)
+@@ -0,0 +1,187 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++
++#include "mac/CocoaInputManager.h"
++#include "mac/CocoaKeyboard.h"
++#include "mac/CocoaMouse.h"
++#include "mac/MacHIDManager.h"
++#include "OISException.h"
++
++using namespace std;
++using namespace OIS;
++
++//--------------------------------------------------------------------------------//
++CocoaInputManager::CocoaInputManager() : InputManager("Mac OS X Cocoa Input Manager")
++{
++    mHideMouse = true;
++    mUseRepeat = false;
++	mWindow = nil;
++
++	keyboardUsed = mouseUsed = false;
++
++	//Setup our internal factories
++	mFactories.push_back(this);
++
++	mHIDManager = new MacHIDManager();
++	mFactories.push_back(mHIDManager);
++}
++
++//--------------------------------------------------------------------------------//
++CocoaInputManager::~CocoaInputManager()
++{
++	delete mHIDManager;
++}
++
++//--------------------------------------------------------------------------------//
++void CocoaInputManager::_initialize( ParamList &paramList )
++{
++	_parseConfigSettings( paramList );
++    
++	//Enumerate all devices attached
++	_enumerateDevices();
++	
++	mHIDManager->initialize();
++}
++
++//--------------------------------------------------------------------------------//
++void CocoaInputManager::_parseConfigSettings( ParamList &paramList )
++{
++    // Some carbon apps are running in a window, however full screen apps
++	// do not have a window, so we need to account for that too.
++	ParamList::iterator i = paramList.find("WINDOW");
++	if(i != paramList.end())
++	{
++		mWindow = (NSWindow *)strtoul(i->second.c_str(), 0, 10);
++		if(mWindow == 0)
++		{
++			mWindow = nil;
++		}
++    }
++	else
++	{
++		// else get the main active window.. user might not have access to it through some
++		// graphics libraries, if that fails then try at the application level.
++		mWindow = [[NSApplication sharedApplication] keyWindow];
++	}
++	
++	if(mWindow == nil)
++		OIS_EXCEPT( E_General, "CocoaInputManager::_parseConfigSettings >> Unable to find a window or event target" );
++    
++    // Keyboard
++    if(paramList.find("MacAutoRepeatOn") != paramList.end())
++	{
++        if(paramList.find("MacAutoRepeatOn")->second == "true")
++		{
++            mUseRepeat = true;
++        }
++    }
++}
++
++//--------------------------------------------------------------------------------//
++void CocoaInputManager::_enumerateDevices()
++{
++}
++
++//--------------------------------------------------------------------------------//
++DeviceList CocoaInputManager::freeDeviceList()
++{
++	DeviceList ret;
++
++	if( keyboardUsed == false )
++		ret.insert(std::make_pair(OISKeyboard, mInputSystemName));
++
++	if( mouseUsed == false )
++		ret.insert(std::make_pair(OISMouse, mInputSystemName));
++
++	return ret;
++}
++
++//--------------------------------------------------------------------------------//
++int CocoaInputManager::totalDevices(Type iType)
++{
++	switch(iType)
++	{
++	case OISKeyboard: return 1;
++	case OISMouse: return 1;
++	default: return 0;
++	}
++}
++
++//--------------------------------------------------------------------------------//
++int CocoaInputManager::freeDevices(Type iType)
++{
++	switch(iType)
++	{
++	case OISKeyboard: return keyboardUsed ? 0 : 1;
++	case OISMouse: return mouseUsed ? 0 : 1;
++	default: return 0;
++	}
++}
++
++//--------------------------------------------------------------------------------//
++bool CocoaInputManager::vendorExist(Type iType, const std::string & vendor)
++{
++	if( (iType == OISKeyboard || iType == OISMouse) && vendor == mInputSystemName )
++		return true;
++
++	return false;
++}
++
++//--------------------------------------------------------------------------------//
++Object* CocoaInputManager::createObject(InputManager* creator, Type iType, bool bufferMode, 
++									  const std::string & vendor)
++{
++	Object *obj = 0;
++
++	switch(iType)
++	{
++        case OISKeyboard: 
++        {
++            if( keyboardUsed == false )
++                obj = new CocoaKeyboard(this, bufferMode, mUseRepeat);
++            break;
++        }
++        case OISMouse:
++        {
++            if( mouseUsed == false )
++                obj = new CocoaMouse(this, bufferMode);
++            break;
++        }
++        default:
++        {
++            obj = mHIDManager->createObject(creator, iType, bufferMode, vendor);
++            break;
++        }
++	}
++
++	if( obj == 0 )
++		OIS_EXCEPT(E_InputDeviceNonExistant, "No devices match requested type.");
++
++	return obj;
++}
++
++//--------------------------------------------------------------------------------//
++void CocoaInputManager::destroyObject(Object* obj)
++{
++	delete obj;
++}

Added: trunk/dports/devel/ois/files/patch-src_mac_CocoaJoystick.mm.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_mac_CocoaJoystick.mm.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_mac_CocoaJoystick.mm.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,328 @@
+--- src/mac/CocoaJoyStick.mm	(revision 0)
++++ src/mac/CocoaJoyStick.mm	(revision 0)
+@@ -0,0 +1,325 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++
++#include "mac/CocoaJoyStick.h"
++#include "mac/MacHIDManager.h"
++#include "mac/CocoaInputManager.h"
++#include "OISEvents.h"
++#include "OISException.h"
++
++#include <cassert>
++
++using namespace OIS;
++
++//--------------------------------------------------------------------------------------------------//
++CocoaJoyStick::CocoaJoyStick(const std::string &vendor, bool buffered, HidInfo* info, InputManager* creator, int devID) : 
++JoyStick(vendor, buffered, devID, creator), mInfo(info)
++{
++	
++}
++
++//--------------------------------------------------------------------------------------------------//
++CocoaJoyStick::~CocoaJoyStick()
++{
++	//TODO: check if the queue has been started first?
++	//(*mQueue)->stop(mQueue); 
++	(*mQueue)->dispose(mQueue); 
++	(*mQueue)->Release(mQueue); 
++	
++	
++	//TODO: check if the interface has been opened first?
++	(*mInfo->interface)->close(mInfo->interface);
++	(*mInfo->interface)->Release(mInfo->interface); 
++}
++
++//--------------------------------------------------------------------------------------------------//
++void CocoaJoyStick::_initialize()
++{
++	assert(mInfo && "Given HidInfo invalid");
++	assert(mInfo->interface && "Joystick interface invalid");
++	
++	//TODO: Is this necessary?
++	//Clear old state
++	mState.mAxes.clear();
++	
++	if ((*mInfo->interface)->open(mInfo->interface, 0) != KERN_SUCCESS)
++		OIS_EXCEPT(E_General, "CocoaJoyStick::_initialize() >> Could not initialize joy device!");
++	
++	mState.clear();
++	
++	_enumerateCookies();
++	
++	mState.mButtons.resize(mInfo->numButtons);
++	mState.mAxes.resize(mInfo->numAxes);
++	
++	mQueue = _createQueue();
++}
++
++class FindAxisCookie : public std::unary_function<std::pair<IOHIDElementCookie, AxisInfo>&, bool>
++{
++public:
++	FindAxisCookie(IOHIDElementCookie cookie) : m_Cookie(cookie) {}
++	bool operator()(const std::pair<IOHIDElementCookie, AxisInfo>& pair) const
++	{
++		return pair.first == m_Cookie;
++	}
++private:
++	IOHIDElementCookie m_Cookie;
++};
++
++//--------------------------------------------------------------------------------------------------//
++void CocoaJoyStick::capture()
++{
++	assert(mQueue && "Queue must be initialized before calling CocoaJoyStick::capture()");
++	
++	AbsoluteTime zeroTime = {0,0}; 
++	
++	IOHIDEventStruct event; 
++	IOReturn result = (*mQueue)->getNextEvent(mQueue, &event, zeroTime, 0); 
++	while(result == kIOReturnSuccess)
++	{
++		switch(event.type)
++		{
++			case kIOHIDElementTypeInput_Button:
++			{
++				std::vector<IOHIDElementCookie>::iterator buttonIt = std::find(mCookies.buttonCookies.begin(), mCookies.buttonCookies.end(), event.elementCookie);
++				int button = std::distance(mCookies.buttonCookies.begin(), buttonIt);
++				mState.mButtons[button] = (event.value == 1);
++				
++				if(mBuffered && mListener)
++				{
++					if(event.value == 0)
++						mListener->buttonPressed(JoyStickEvent(this, mState), button);
++					else if(event.value == 1)
++						mListener->buttonReleased(JoyStickEvent(this, mState), button);
++				}
++				break;
++			}
++			case kIOHIDElementTypeInput_Misc:
++				//TODO: It's an axis! - kind of - for gamepads - or should this be a pov?
++			case kIOHIDElementTypeInput_Axis:
++				std::map<IOHIDElementCookie, AxisInfo>::iterator axisIt = std::find_if(mCookies.axisCookies.begin(), mCookies.axisCookies.end(), FindAxisCookie(event.elementCookie));
++				int axis = std::distance(mCookies.axisCookies.begin(), axisIt);
++				
++				//Copied from LinuxJoyStickEvents.cpp, line 149
++				const AxisInfo& axisInfo = axisIt->second;
++				float proportion = (float) (event.value - axisInfo.max) / (float) (axisInfo.min - axisInfo.max);
++				mState.mAxes[axis].abs = -JoyStick::MIN_AXIS - (JoyStick::MAX_AXIS * 2 * proportion);
++				
++				if(mBuffered && mListener) mListener->axisMoved(JoyStickEvent(this, mState), axis);
++				break;
++		}
++		
++		result = (*mQueue)->getNextEvent(mQueue, &event, zeroTime, 0);
++	}
++}
++
++//--------------------------------------------------------------------------------------------------//
++void CocoaJoyStick::setBuffered(bool buffered)
++{
++	mBuffered = buffered;
++}
++
++//--------------------------------------------------------------------------------------------------//
++Interface* CocoaJoyStick::queryInterface(Interface::IType type)
++{
++	//Thought about using covariant return type here.. however,
++	//some devices may allow LED light changing, or other interface stuff
++	
++	//f( ff_device && type == Interface::ForceFeedback )
++	//return ff_device;
++	//else
++	return 0;
++}
++
++//--------------------------------------------------------------------------------------------------//
++void CocoaJoyStick::_enumerateCookies()
++{
++	assert(mInfo && "Given HidInfo invalid");
++	assert(mInfo->interface && "Joystick interface invalid");
++	
++	CFTypeRef                               object; 
++	long                                    number; 
++	IOHIDElementCookie                      cookie; 
++	long                                    usage; 
++	long                                    usagePage;
++	int										min;
++	int										max;
++
++	CFDictionaryRef                         element; 
++	
++	// Copy all elements, since we're grabbing most of the elements 
++	// for this device anyway, and thus, it's faster to iterate them 
++	// ourselves. When grabbing only one or two elements, a matching 
++	// dictionary should be passed in here instead of NULL. 
++	CFArrayRef elements; 
++	IOReturn success = reinterpret_cast<IOHIDDeviceInterface122*>(*mInfo->interface)->copyMatchingElements(mInfo->interface, NULL, &elements); 
++	
++	if (success == kIOReturnSuccess)
++	{ 
++		const CFIndex numOfElements = CFArrayGetCount(elements);
++		for (CFIndex i = 0; i < numOfElements; ++i) 
++		{ 
++			element = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(elements, i));
++			
++			//Get cookie 
++			object = (CFDictionaryGetValue(element, 
++										   CFSTR(kIOHIDElementCookieKey))); 
++			if (object == 0 || CFGetTypeID(object) != CFNumberGetTypeID()) 
++				continue; 
++			if(!CFNumberGetValue((CFNumberRef) object, kCFNumberLongType, 
++								 &number)) 
++				continue; 
++			cookie = (IOHIDElementCookie) number; 
++			
++			//Get usage 
++			object = CFDictionaryGetValue(element, 
++										  CFSTR(kIOHIDElementUsageKey)); 
++			if (object == 0 || CFGetTypeID(object) != CFNumberGetTypeID()) 
++				continue; 
++			if (!CFNumberGetValue((CFNumberRef) object, kCFNumberLongType, 
++								  &number)) 
++				continue; 
++			usage = number; 
++			
++			//Get min
++			object = CFDictionaryGetValue(element,
++										  CFSTR(kIOHIDElementMinKey)); // kIOHIDElementMinKey or kIOHIDElementScaledMinKey?, no idea ...
++			if (object == 0 || CFGetTypeID(object) != CFNumberGetTypeID())
++				continue;
++			if (!CFNumberGetValue((CFNumberRef) object, kCFNumberIntType,
++								  &number))
++				continue;
++			min = number;
++			
++			//Get max
++			object = CFDictionaryGetValue(element,
++										  CFSTR(kIOHIDElementMaxKey)); // kIOHIDElementMaxKey or kIOHIDElementScaledMaxKey?, no idea ...
++			if (object == 0 || CFGetTypeID(object) != CFNumberGetTypeID())
++				continue;
++			if (!CFNumberGetValue((CFNumberRef) object, kCFNumberIntType,
++								  &number))
++				continue;
++			max = number;			
++			
++			//Get usage page 
++			object = CFDictionaryGetValue(element, 
++										  CFSTR(kIOHIDElementUsagePageKey)); 
++			
++			if (object == 0 || CFGetTypeID(object) != CFNumberGetTypeID()) 
++				continue; 
++			
++			if (!CFNumberGetValue((CFNumberRef) object, kCFNumberLongType, 
++								  &number)) 
++				continue; 
++			
++			usagePage = number;
++			switch(usagePage)
++			{
++				case kHIDPage_GenericDesktop:
++					switch(usage)
++				{
++					case kHIDUsage_GD_Pointer:
++						break;
++					case kHIDUsage_GD_X:
++					case kHIDUsage_GD_Y:
++					case kHIDUsage_GD_Z:
++					case kHIDUsage_GD_Rx:
++					case kHIDUsage_GD_Ry:
++					case kHIDUsage_GD_Rz:
++						mCookies.axisCookies.insert(std::make_pair(cookie, AxisInfo(min, max)));
++						break;
++					case kHIDUsage_GD_Slider:
++					case kHIDUsage_GD_Dial:
++					case kHIDUsage_GD_Wheel:
++						break;
++					case kHIDUsage_GD_Hatswitch:
++						break;
++				}
++					break;
++				case kHIDPage_Button:
++					mCookies.buttonCookies.push_back(cookie);
++					break;
++			}		
++		}
++		
++		mInfo->numButtons = mCookies.buttonCookies.size();
++		mInfo->numAxes = mCookies.axisCookies.size();
++
++	} 
++	else 
++	{ 
++		OIS_EXCEPT(E_General, "JoyStick elements could not be copied: copyMatchingElements failed with error: " + success); 
++	}
++	
++}
++
++//--------------------------------------------------------------------------------------------------//
++IOHIDQueueInterface** CocoaJoyStick::_createQueue(unsigned int depth)
++{	
++	assert(mInfo && "Given HidInfo invalid");
++	assert(mInfo->interface && "Joystick interface invalid");
++	
++	IOHIDQueueInterface** queue = (*mInfo->interface)->allocQueue(mInfo->interface); 
++	
++	if (queue) 
++	{		
++		//create the queue 
++		IOReturn result = (*queue)->create(queue, 0, depth); 
++		
++		if(result == kIOReturnSuccess)
++		{		
++			//add elements to the queue
++			std::map<IOHIDElementCookie, AxisInfo>::iterator axisIt = mCookies.axisCookies.begin();
++			for(; axisIt != mCookies.axisCookies.end(); ++axisIt)
++			{
++				result = (*queue)->addElement(queue, axisIt->first, 0);
++			}
++			
++			std::vector<IOHIDElementCookie>::iterator buttonIt = mCookies.buttonCookies.begin();
++			for(; buttonIt != mCookies.buttonCookies.end(); ++buttonIt)
++			{
++				result = (*queue)->addElement(queue, (*buttonIt), 0);
++			}
++
++			//start data delivery to queue 
++			result = (*queue)->start(queue); 
++			if(result == kIOReturnSuccess)
++			{
++				return queue;
++			}
++			else
++			{
++				OIS_EXCEPT(E_General, "Queue could not be started.");
++			}
++		}
++		else
++		{
++			OIS_EXCEPT(E_General, "Queue could not be created.");
++		}
++	}
++	else
++	{
++		OIS_EXCEPT(E_General, "Queue allocation failed.");
++	}
++}

Added: trunk/dports/devel/ois/files/patch-src_mac_CocoaKeyboard.mm.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_mac_CocoaKeyboard.mm.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_mac_CocoaKeyboard.mm.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,436 @@
+--- src/mac/CocoaKeyboard.mm	(revision 0)
++++ src/mac/CocoaKeyboard.mm	(revision 0)
+@@ -0,0 +1,433 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++
++#include "mac/CocoaKeyboard.h"
++#include "mac/CocoaInputManager.h"
++#include "mac/CocoaHelpers.h"
++#include "OISException.h"
++#include "OISEvents.h"
++
++#include <Cocoa/Cocoa.h>
++
++#include <list>
++#include <string>
++#include <iostream>
++
++using namespace OIS;
++
++//-------------------------------------------------------------------//
++CocoaKeyboard::CocoaKeyboard( InputManager* creator, bool buffered, bool repeat )
++	: Keyboard(creator->inputSystemName(), buffered, 0, creator)
++{
++	CocoaInputManager *man = static_cast<CocoaInputManager*>(mCreator);
++    mResponder = [[CocoaKeyboardView alloc] init];
++    if(!mResponder)
++        OIS_EXCEPT( E_General, "CocoaKeyboardView::CocoaKeyboardView >> Error creating event responder" );
++
++    [man->_getWindow() makeFirstResponder:mResponder];
++    [mResponder setUseRepeat:repeat];
++    [mResponder setOISKeyboardObj:this];
++
++	static_cast<CocoaInputManager*>(mCreator)->_setKeyboardUsed(true);
++}
++
++//-------------------------------------------------------------------//
++CocoaKeyboard::~CocoaKeyboard()
++{
++    if (mResponder)
++    {
++        [mResponder release];
++        mResponder = nil;
++    }
++
++	// Free the input managers keyboard
++	static_cast<CocoaInputManager*>(mCreator)->_setKeyboardUsed(false);
++}
++
++//-------------------------------------------------------------------//
++void CocoaKeyboard::_initialize()
++{
++	mModifiers = 0;
++}
++
++//-------------------------------------------------------------------//
++bool CocoaKeyboard::isKeyDown( KeyCode key ) const
++{
++	return [mResponder isKeyDown:key];
++}
++
++//-------------------------------------------------------------------//
++void CocoaKeyboard::capture()
++{
++    [mResponder capture];
++}
++
++//-------------------------------------------------------------------//
++std::string& CocoaKeyboard::getAsString( KeyCode key )
++{
++	getString = "";
++    
++    CGKeyCode deviceKeycode;
++    
++    // Convert OIS KeyCode back into device keycode
++    VirtualtoOIS_KeyMap keyMap = [mResponder keyConversionMap];
++    for(VirtualtoOIS_KeyMap::iterator it = keyMap.begin(); it != keyMap.end(); ++it)
++    {
++        if(it->second == key)
++            deviceKeycode = it->first;
++    }
++
++    UniChar unicodeString[1];
++    UniCharCount actualStringLength;
++
++    CGEventSourceRef sref = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
++    CGEventRef ref = CGEventCreateKeyboardEvent(sref, deviceKeycode, true);
++    CGEventKeyboardGetUnicodeString(ref, sizeof(unicodeString) / sizeof(*unicodeString), &actualStringLength, unicodeString);
++    getString = unicodeString[0];
++
++    return getString;
++}
++
++//-------------------------------------------------------------------//
++void CocoaKeyboard::setBuffered( bool buffered )
++{
++	mBuffered = buffered;
++}
++
++//-------------------------------------------------------------------//
++void CocoaKeyboard::copyKeyStates( char keys[256] ) const
++{
++	[mResponder copyKeyStates:keys];
++}
++
++ at implementation CocoaKeyboardView
++
++- (id)init
++{
++    self = [super init];
++    if (self) {
++        [self populateKeyConversion];
++        memset( &KeyBuffer, 0, 256 );
++        prevModMask = 0;
++    }
++    return self;
++}
++
++- (BOOL)acceptsFirstResponder
++{
++    return YES;
++}
++
++- (BOOL)canBecomeKeyView
++{
++    return YES;
++}
++
++- (void)setOISKeyboardObj:(CocoaKeyboard *)obj
++{
++    oisKeyboardObj = obj;
++}
++
++- (void)capture
++{
++	// If not buffered just return, we update the unbuffered automatically
++	if ( !oisKeyboardObj->buffered() && !oisKeyboardObj->getEventCallback() )
++		return;
++
++	// Run through our event stack
++	eventStack::iterator cur_it;
++	
++	for (cur_it = pendingEvents.begin(); cur_it != pendingEvents.end(); cur_it++)
++	{
++		if ( (*cur_it).type() == MAC_KEYDOWN || (*cur_it).type() == MAC_KEYREPEAT)
++			oisKeyboardObj->getEventCallback()->keyPressed( (*cur_it).event() );
++		else if ( (*cur_it).type() == MAC_KEYUP )
++			oisKeyboardObj->getEventCallback()->keyReleased( (*cur_it).event() );
++	}
++	
++	pendingEvents.clear();
++}
++
++- (void)setUseRepeat:(bool)repeat
++{
++    useRepeat = repeat;
++}
++
++- (bool)isKeyDown:(KeyCode)key
++{
++    return KeyBuffer[key];
++}
++
++- (void)copyKeyStates:(char [256])keys
++{
++	memcpy( keys, KeyBuffer, 256 );
++}
++
++- (void)populateKeyConversion
++{
++	// Virtual Key Map to KeyCode
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x12, KC_1));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x13, KC_2));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x14, KC_3));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x15, KC_4));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x17, KC_5));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x16, KC_6));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x1A, KC_7));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x1C, KC_8));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x19, KC_9));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x1D, KC_0));
++	
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x33, KC_BACK));  // might be wrong
++	
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x1B, KC_MINUS));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x18, KC_EQUALS));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x31, KC_SPACE));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x2B, KC_COMMA));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x2F, KC_PERIOD));
++	
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x2A, KC_BACKSLASH));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x2C, KC_SLASH));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x21, KC_LBRACKET));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x1E, KC_RBRACKET));
++	
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x35, KC_ESCAPE));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x39, KC_CAPITAL));
++	
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x30, KC_TAB));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x24, KC_RETURN));  // double check return/enter
++	
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_colon, KC_COLON));	 // no colon?
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x29, KC_SEMICOLON));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x27, KC_APOSTROPHE));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x32, KC_GRAVE));
++	
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x0B, KC_B));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x00, KC_A));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x08, KC_C));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x02, KC_D));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x0E, KC_E));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x03, KC_F));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x05, KC_G));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x04, KC_H));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x22, KC_I));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x26, KC_J));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x28, KC_K));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x25, KC_L));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x2E, KC_M));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x2D, KC_N));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x1F, KC_O));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x23, KC_P));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x0C, KC_Q));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x0F, KC_R));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x01, KC_S));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x11, KC_T));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x20, KC_U));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x09, KC_V));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x0D, KC_W));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x07, KC_X));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x10, KC_Y));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x06, KC_Z));
++	
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x7A, KC_F1));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x78, KC_F2));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x63, KC_F3));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x76, KC_F4));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x60, KC_F5));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x61, KC_F6));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x62, KC_F7));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x64, KC_F8));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x65, KC_F9));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x6D, KC_F10));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x67, KC_F11));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x6F, KC_F12));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x69, KC_F13));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x6B, KC_F14));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x71, KC_F15));
++	
++	// Keypad
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x52, KC_NUMPAD0));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x53, KC_NUMPAD1));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x54, KC_NUMPAD2));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x55, KC_NUMPAD3));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x56, KC_NUMPAD4));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x57, KC_NUMPAD5));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x58, KC_NUMPAD6));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x59, KC_NUMPAD7));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x5B, KC_NUMPAD8));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x5C, KC_NUMPAD9));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x45, KC_ADD));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x4E, KC_SUBTRACT));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x41, KC_DECIMAL));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x51, KC_NUMPADEQUALS));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x4B, KC_DIVIDE));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x43, KC_MULTIPLY));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x4C, KC_NUMPADENTER));
++	
++	// Keypad with numlock off
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x73, KC_NUMPAD7));  // not sure of these
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_Up, KC_NUMPAD8)); // check on a non-laptop
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_Page_Up, KC_NUMPAD9));
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_Left, KC_NUMPAD4));
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_Begin, KC_NUMPAD5));
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_Right, KC_NUMPAD6));
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_End, KC_NUMPAD1));
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_Down, KC_NUMPAD2));
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_Page_Down, KC_NUMPAD3));
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_Insert, KC_NUMPAD0));
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_KP_Delete, KC_DECIMAL));
++	
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x7E, KC_UP));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x7D, KC_DOWN));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x7B, KC_LEFT));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x7C, KC_RIGHT));
++	
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x74, KC_PGUP));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x79, KC_PGDOWN));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x73, KC_HOME));
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x77, KC_END));
++	
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_Print, KC_SYSRQ));		// ??
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_Scroll_Lock, KC_SCROLL)); // ??
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_Pause, KC_PAUSE));		// ??
++	
++	
++	//keyConversion.insert(VirtualtoOIS_KeyMap::value_type(XK_Insert, KC_INSERT));	  // ??
++	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x75, KC_DELETE)); // del under help key?
++}
++
++- (void)injectEvent:(KeyCode)kc eventTime:(unsigned int)time eventType:(MacEventType)type
++{
++    [self injectEvent:kc eventTime:time eventType:type eventText:0];
++}
++
++- (void)injectEvent:(KeyCode)kc eventTime:(unsigned int)time eventType:(MacEventType)type eventText:(unsigned int)txt
++{
++	// set to 1 if this is either a keydown or repeat
++	KeyBuffer[kc] = ( type == MAC_KEYUP ) ? 0 : 1;
++	
++	if ( oisKeyboardObj->buffered() && oisKeyboardObj->getEventCallback() )
++		pendingEvents.push_back( CocoaKeyStackEvent( KeyEvent(oisKeyboardObj, kc, txt), type) );
++}
++
++#pragma mark Key Event overrides
++- (void)keyDown:(NSEvent *)theEvent
++{
++	unsigned short virtualKey = [theEvent keyCode];
++	unsigned int time = (unsigned int)[theEvent timestamp];
++	KeyCode kc = keyConversion[virtualKey];
++    
++	// Record what kind of text we should pass the KeyEvent
++	unichar text[10];
++	char macChar;
++	if (oisKeyboardObj->getTextTranslation() == OIS::Keyboard::Unicode)
++	{
++		// Get string size
++		NSUInteger stringsize = [[theEvent charactersIgnoringModifiers] length];
++        [[theEvent charactersIgnoringModifiers] getCharacters:text range:NSMakeRange(0, stringsize)];
++//		NSLog(@"Characters: %ls", text);
++//		std::cout << "String length: " << stringsize << std::endl;
++
++		if(stringsize > 0)
++		{
++			// For each unicode char, send an event
++			for ( unsigned int i = 0; i < stringsize; i++ )
++			{
++                [self injectEvent:kc eventTime:time eventType:MAC_KEYDOWN eventText:(unsigned int)text[i]];
++			}
++		}
++	} 
++	else if (oisKeyboardObj->getTextTranslation() == OIS::Keyboard::Ascii)
++	{
++        macChar = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
++		[self injectEvent:kc eventTime:time eventType:MAC_KEYDOWN eventText:(unsigned int)macChar];
++	}
++	else
++	{
++		[self injectEvent:kc eventTime:time eventType:MAC_KEYDOWN];
++	}
++}
++
++- (void)keyUp:(NSEvent *)theEvent
++{
++    unsigned short virtualKey = [theEvent keyCode];
++
++	KeyCode kc = keyConversion[virtualKey];
++    [self injectEvent:kc eventTime:[theEvent timestamp] eventType:MAC_KEYUP];
++}
++
++- (void)flagsChanged:(NSEvent *)theEvent
++{
++	NSUInteger mods = [theEvent modifierFlags];
++	
++	// Find the changed bit
++	NSUInteger change = prevModMask ^ mods;
++	MacEventType newstate = ((change & prevModMask) > 0) ? MAC_KEYUP : MAC_KEYDOWN;
++	unsigned int time = (unsigned int)[theEvent timestamp];
++	
++	//cout << "preMask: " << hex << prevModMask << endl;
++	//cout << "ModMask: " << hex << mods << endl;
++	//cout << "Change:  " << hex << (change & prevModMask) << endl << endl;
++	
++	// TODO test modifiers on a full keyboard to check if different mask for left/right
++	switch (change)
++	{
++		case (NSShiftKeyMask): // shift
++			oisKeyboardObj->_getModifiers() &= (newstate == MAC_KEYDOWN) ? OIS::Keyboard::Shift : ~OIS::Keyboard::Shift;
++            [self injectEvent:KC_LSHIFT eventTime:time eventType:newstate];
++			break;
++			
++		case (NSAlternateKeyMask): // option (alt)
++			oisKeyboardObj->_getModifiers() &= (newstate == MAC_KEYDOWN) ? OIS::Keyboard::Alt : -OIS::Keyboard::Alt;
++            [self injectEvent:KC_LMENU eventTime:time eventType:newstate];
++			break;
++			
++		case (NSControlKeyMask): // Ctrl
++			oisKeyboardObj->_getModifiers() += (newstate == MAC_KEYDOWN) ? OIS::Keyboard::Ctrl : -OIS::Keyboard::Ctrl;
++            [self injectEvent:KC_LCONTROL eventTime:time eventType:newstate];
++			break;
++            
++		case (NSCommandKeyMask): // apple
++            [self injectEvent:KC_LWIN eventTime:time eventType:newstate];
++			break;
++            
++		case (NSFunctionKeyMask): // fn key
++            [self injectEvent:KC_APPS eventTime:time eventType:newstate];
++			break;
++
++		case (NSAlphaShiftKeyMask): // caps lock
++            [self injectEvent:KC_CAPITAL eventTime:time eventType:newstate];
++			break;
++	}
++    
++    if([theEvent keyCode] == NSClearLineFunctionKey) // numlock
++        [self injectEvent:KC_NUMLOCK eventTime:time eventType:newstate];
++	
++	prevModMask = mods;
++}
++
++- (VirtualtoOIS_KeyMap)keyConversionMap
++{
++    return keyConversion;
++}
++
++ at end

Added: trunk/dports/devel/ois/files/patch-src_mac_CocoaMouse.mm.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_mac_CocoaMouse.mm.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_mac_CocoaMouse.mm.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,387 @@
+--- src/mac/CocoaMouse.mm	(revision 0)
++++ src/mac/CocoaMouse.mm	(revision 0)
+@@ -0,0 +1,384 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++#include "mac/CocoaMouse.h"
++#include "mac/CocoaInputManager.h"
++#include "mac/CocoaHelpers.h"
++#include "OISException.h"
++#include "OISEvents.h"
++
++using namespace OIS;
++
++//-------------------------------------------------------------------//
++CocoaMouse::CocoaMouse( InputManager* creator, bool buffered )
++	: Mouse(creator->inputSystemName(), buffered, 0, creator)
++{
++    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
++
++	CocoaInputManager *man = static_cast<CocoaInputManager*>(mCreator);
++    mResponder = [[CocoaMouseView alloc] initWithFrame:[[man->_getWindow() contentView] frame]];
++    if(!mResponder)
++        OIS_EXCEPT( E_General, "CocoaMouseView::CocoaMouseView >> Error creating event responder" );
++    
++    [[man->_getWindow() contentView] addSubview:mResponder];
++    [mResponder setOISMouseObj:this];
++    
++	static_cast<CocoaInputManager*>(mCreator)->_setMouseUsed(true);
++
++    [pool drain];
++}
++
++CocoaMouse::~CocoaMouse()
++{
++	// Restore Mouse
++//	CGAssociateMouseAndMouseCursorPosition(true);
++	CGDisplayShowCursor(kCGDirectMainDisplay);
++
++    if (mResponder)
++    {
++        [mResponder release];
++        mResponder = nil;
++    }
++    
++	static_cast<CocoaInputManager*>(mCreator)->_setMouseUsed(false);
++}
++
++void CocoaMouse::_initialize()
++{
++	mState.clear();
++	CGAssociateMouseAndMouseCursorPosition(false);
++}
++
++void CocoaMouse::setBuffered( bool buffered )
++{
++	mBuffered = buffered;
++}
++
++void CocoaMouse::capture()
++{
++    [mResponder capture];
++}
++
++ at implementation CocoaMouseView
++
++- (id)initWithFrame:(NSRect)frame
++{
++    self = [super initWithFrame:frame];
++    if (self) {
++        mTempState.clear();
++        mMouseWarped = false;
++        mNeedsToRegainFocus = false;
++        
++        // Hide OS Mouse
++        CGDisplayHideCursor(kCGDirectMainDisplay);
++
++        NSRect clipRect = NSMakeRect(0.0f, 0.0f, 0.0f, 0.0f);
++        clipRect = [[[self window] contentView] frame];
++
++        CGPoint warpPoint;
++		warpPoint.x = (((frame.origin.x + frame.size.width) - frame.origin.x) / 2) + frame.origin.x;
++		warpPoint.y = (((frame.origin.y + frame.size.height) - frame.origin.y) / 2) - frame.origin.y;
++//        warpPoint = CGPointMake(clipRect.size.height, clipRect.size.width);
++        CGDisplayMoveCursorToPoint(kCGDirectMainDisplay, warpPoint);
++
++        // Use NSTrackingArea to track mouse move events
++        NSTrackingAreaOptions trackingOptions = 
++            NSTrackingMouseMoved | NSTrackingEnabledDuringMouseDrag | 
++            NSTrackingMouseEnteredAndExited | NSTrackingActiveInActiveApp;
++        
++        NSDictionary *trackerData = [NSDictionary dictionaryWithObjectsAndKeys:
++                                     [NSNumber numberWithInt:0], @"OISMouseTrackingKey", nil];
++        NSTrackingArea *trackingArea = [[NSTrackingArea alloc]
++                                        initWithRect:[self frame]// in our case track the entire view
++                                        options:trackingOptions
++                                        owner:self
++                                        userInfo:trackerData];
++        [self addTrackingArea:trackingArea];
++        [[self window] setAcceptsMouseMovedEvents:YES];
++        [trackingArea release];
++    }
++    return self;
++}
++
++- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
++{
++    return YES;
++}
++
++- (void)setOISMouseObj:(CocoaMouse *)obj
++{
++    oisMouseObj = obj;
++}
++
++- (void)capture
++{
++	MouseState *state = oisMouseObj->getMouseStatePtr();
++    state->X.rel = 0;
++    state->Y.rel = 0;
++    state->Z.rel = 0;
++    
++	if(mTempState.X.rel || mTempState.Y.rel || mTempState.Z.rel)
++	{
++//		NSLog(@"%i %i %i", mTempState.X.rel, mTempState.Y.rel, mTempState.Z.rel);
++        
++		// Set new relative motion values
++		state->X.rel = mTempState.X.rel;
++		state->Y.rel = mTempState.Y.rel;
++		state->Z.rel = mTempState.Z.rel;
++		
++		// Update absolute position
++		state->X.abs += mTempState.X.rel;
++		state->Y.abs += mTempState.Y.rel;
++		
++		if(state->X.abs > state->width)
++			state->X.abs = state->width;
++		else if(state->X.abs < 0)
++			state->X.abs = 0;
++        
++		if(state->Y.abs > state->height)
++			state->Y.abs = state->height;
++		else if(state->Y.abs < 0)
++			state->Y.abs = 0;
++        
++		state->Z.abs += mTempState.Z.rel;
++		
++		//Fire off event
++        if ( oisMouseObj->buffered() && oisMouseObj->getEventCallback() )
++			oisMouseObj->getEventCallback()->mouseMoved(MouseEvent(oisMouseObj, *state));
++	}
++    
++	mTempState.clear();
++}
++
++#pragma mark Left Mouse Event overrides
++- (void)mouseDown:(NSEvent *)theEvent
++{
++    int mouseButton = MB_Left;
++    NSEventType type = [theEvent type];
++    MouseState *state = oisMouseObj->getMouseStatePtr();
++
++    if(mNeedsToRegainFocus)
++        return;
++
++    if((type == NSLeftMouseDown) && ([theEvent modifierFlags] & NSAlternateKeyMask))
++    {
++        mouseButton = MB_Middle;
++    }
++    else if((type == NSLeftMouseDown) && ([theEvent modifierFlags] & NSControlKeyMask))
++    {
++        mouseButton = MB_Right;
++    }
++    else if(type == NSLeftMouseDown)
++    {
++        mouseButton = MB_Left;
++    }
++    state->buttons |= 1 << mouseButton;
++    if ( oisMouseObj->buffered() && oisMouseObj->getEventCallback() )
++        oisMouseObj->getEventCallback()->mousePressed( MouseEvent( oisMouseObj, *state ), (MouseButtonID)mouseButton );
++}
++
++- (void)mouseUp:(NSEvent *)theEvent {
++    int mouseButton = MB_Left;
++    NSEventType type = [theEvent type];
++    MouseState *state = oisMouseObj->getMouseStatePtr();
++
++    if((type == NSLeftMouseUp) && ([theEvent modifierFlags] & NSAlternateKeyMask))
++    {
++        mouseButton = MB_Middle;
++    }
++    else if((type == NSLeftMouseUp) && ([theEvent modifierFlags] & NSControlKeyMask))
++    {
++        mouseButton = MB_Right;
++    }
++    else if(type == NSLeftMouseUp)
++    {
++        mouseButton = MB_Left;
++    }
++    state->buttons &= ~(1 << mouseButton);
++
++    if ( oisMouseObj->buffered() && oisMouseObj->getEventCallback() )
++        oisMouseObj->getEventCallback()->mouseReleased( MouseEvent( oisMouseObj, *state ), (MouseButtonID)mouseButton );
++}
++
++
++- (void)mouseDragged:(NSEvent *)theEvent
++{
++    CGPoint delta = CGPointMake([theEvent deltaX], [theEvent deltaY]);
++    if(mNeedsToRegainFocus)
++        return;
++    
++    // Relative positioning
++    if(!mMouseWarped)
++    {
++        mTempState.X.rel += delta.x;
++        mTempState.Y.rel += delta.y;
++    }
++    
++    mMouseWarped = false;
++}
++
++#pragma mark Right Mouse Event overrides
++- (void)rightMouseDown:(NSEvent *)theEvent
++{
++    int mouseButton = MB_Right;
++    NSEventType type = [theEvent type];
++    MouseState *state = oisMouseObj->getMouseStatePtr();
++    
++    if(mNeedsToRegainFocus)
++        return;
++    
++    if(type == NSRightMouseDown)
++    {	
++        state->buttons |= 1 << mouseButton;
++    }
++
++    if ( oisMouseObj->buffered() && oisMouseObj->getEventCallback() )
++        oisMouseObj->getEventCallback()->mousePressed( MouseEvent( oisMouseObj, *state ), (MouseButtonID)mouseButton );
++}
++
++- (void)rightMouseUp:(NSEvent *)theEvent {
++    int mouseButton = MB_Right;
++    NSEventType type = [theEvent type];
++    MouseState *state = oisMouseObj->getMouseStatePtr();
++    
++    if(type == NSRightMouseUp)
++    {	
++        state->buttons &= ~(1 << mouseButton);
++    }
++
++    if ( oisMouseObj->buffered() && oisMouseObj->getEventCallback() )
++        oisMouseObj->getEventCallback()->mouseReleased( MouseEvent( oisMouseObj, *state ), (MouseButtonID)mouseButton );
++}
++
++- (void)rightMouseDragged:(NSEvent *)theEvent
++{
++    CGPoint delta = CGPointMake([theEvent deltaX], [theEvent deltaY]);
++    if(mNeedsToRegainFocus)
++        return;
++    
++    // Relative positioning
++    if(!mMouseWarped)
++    {
++        mTempState.X.rel += delta.x;
++        mTempState.Y.rel += delta.y;
++    }
++    
++    mMouseWarped = false;
++}
++
++#pragma mark Other Mouse Event overrides
++- (void)otherMouseDown:(NSEvent *)theEvent
++{
++    int mouseButton = MB_Middle;
++    NSEventType type = [theEvent type];
++    MouseState *state = oisMouseObj->getMouseStatePtr();
++    
++    if(mNeedsToRegainFocus)
++        return;
++    
++    if(type == NSOtherMouseDown)
++    {
++        state->buttons |= 1 << mouseButton;
++    }
++
++    if ( oisMouseObj->buffered() && oisMouseObj->getEventCallback() )
++        oisMouseObj->getEventCallback()->mousePressed( MouseEvent( oisMouseObj, *state ), (MouseButtonID)mouseButton );
++}
++
++- (void)otherMouseUp:(NSEvent *)theEvent {
++    int mouseButton = MB_Middle;
++    NSEventType type = [theEvent type];
++    MouseState *state = oisMouseObj->getMouseStatePtr();
++    
++    if(type == NSOtherMouseUp)
++    {
++        state->buttons &= ~(1 << mouseButton);
++    }
++
++    if ( oisMouseObj->buffered() && oisMouseObj->getEventCallback() )
++        oisMouseObj->getEventCallback()->mouseReleased( MouseEvent( oisMouseObj, *state ), (MouseButtonID)mouseButton );
++}
++
++- (void)otherMouseDragged:(NSEvent *)theEvent
++{
++    CGPoint delta = CGPointMake([theEvent deltaX], [theEvent deltaY]);
++    if(mNeedsToRegainFocus)
++        return;
++    
++    // Relative positioning
++    if(!mMouseWarped)
++    {
++        mTempState.X.rel += delta.x;
++        mTempState.Y.rel += delta.y;
++    }
++    
++    mMouseWarped = false;
++}
++
++- (void)scrollWheel:(NSEvent *)theEvent
++{
++    if([theEvent deltaY] != 0.0)
++        mTempState.Z.rel += ([theEvent deltaY] * 60);
++}
++
++- (void)mouseMoved:(NSEvent *)theEvent
++{
++    CGPoint delta = CGPointMake([theEvent deltaX], [theEvent deltaY]);
++    if(mNeedsToRegainFocus)
++        return;
++    
++    // Relative positioning
++    if(!mMouseWarped)
++    {
++        mTempState.X.rel += delta.x;
++        mTempState.Y.rel += delta.y;
++    }
++    
++    mMouseWarped = false;
++}
++
++- (void)mouseEntered:(NSEvent *)theEvent
++{
++	CGDisplayHideCursor(kCGDirectMainDisplay);
++	CGAssociateMouseAndMouseCursorPosition(false);
++    if(!mMouseWarped)
++    {
++        NSPoint pos = [[self window] mouseLocationOutsideOfEventStream];
++        NSRect frame = [[[self window] contentView] frame];
++
++        // Clear the previous mouse state
++        MouseState *state = oisMouseObj->getMouseStatePtr();
++        state->clear();
++
++        // Cocoa's coordinate system has the origin in the bottom left so we need to transform the height
++        mTempState.X.rel = pos.x;
++        mTempState.Y.rel = frame.size.height - pos.y;
++    }
++}
++
++- (void)mouseExited:(NSEvent *)theEvent
++{
++	CGDisplayShowCursor(kCGDirectMainDisplay);
++	CGAssociateMouseAndMouseCursorPosition(true);
++}
++
++ at end

Added: trunk/dports/devel/ois/files/patch-src_mac_MacHIDManager.cpp.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_mac_MacHIDManager.cpp.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_mac_MacHIDManager.cpp.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,55 @@
+--- src/mac/MacHIDManager.cpp	(revision 34)
++++ src/mac/MacHIDManager.cpp	(working copy)
+@@ -1,21 +1,21 @@
+ /*
+  The zlib/libpng License
+  
+- Copyright (c) 2006 Phillip Castaneda
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
+  
+  This software is provided 'as-is', without any express or implied warranty. In no event will
+  the authors be held liable for any damages arising from the use of this software.
+  
+- Permission is granted to anyone to use this software for any purpose, including commercial 
++ Permission is granted to anyone to use this software for any purpose, including commercial
+  applications, and to alter it and redistribute it freely, subject to the following
+  restrictions:
+  
+- 1. The origin of this software must not be misrepresented; you must not claim that 
+- you wrote the original software. If you use this software in a product, 
+- an acknowledgment in the product documentation would be appreciated but is 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
+  not required.
+  
+- 2. Altered source versions must be plainly marked as such, and must not be 
++ 2. Altered source versions must be plainly marked as such, and must not be
+  misrepresented as being the original software.
+  
+  3. This notice may not be removed or altered from any source distribution.
+@@ -403,16 +403,17 @@
+ 	{
+ 		if((*it)->inUse == false && (*it)->type == iType && (vendor == "" || (*it)->combinedKey == vendor))
+ 		{
++            int totalDevs = totalDevices(iType);
++            int freeDevs = freeDevices(iType);
++            int devID = totalDevs - freeDevs;
+ 			switch(iType)
+ 			{
+ 				case OISJoyStick:
+-					int totalDevs = totalDevices(iType);
+-					int freeDevs = freeDevices(iType);
+-					int devID = totalDevs - freeDevs;
+-					
+-					obj = new MacJoyStick((*it)->combinedKey, bufferMode, *it, creator, devID);
+-					(*it)->inUse = true;
+-					return obj;
++                {
++                    obj = new MacJoyStick((*it)->combinedKey, bufferMode, *it, creator, devID);
++                    (*it)->inUse = true;
++                    return obj;
++                }
+ 				case OISTablet:
+ 					//Create MacTablet
+ 					break;

Added: trunk/dports/devel/ois/files/patch-src_mac_MacHelpers.cpp.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_mac_MacHelpers.cpp.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_mac_MacHelpers.cpp.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,45 @@
+--- src/mac/MacHelpers.cpp	(revision 34)
++++ src/mac/MacHelpers.cpp	(working copy)
+@@ -1,26 +1,28 @@
+ /*
+  The zlib/libpng License
+  
+- Copyright (c) 2006 Chris Snyder 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
+  
+  This software is provided 'as-is', without any express or implied warranty. In no event will
+  the authors be held liable for any damages arising from the use of this software.
+  
+- Permission is granted to anyone to use this software for any purpose, including commercial 
++ Permission is granted to anyone to use this software for any purpose, including commercial
+  applications, and to alter it and redistribute it freely, subject to the following
+  restrictions:
+  
+- 1. The origin of this software must not be misrepresented; you must not claim that 
+- you wrote the original software. If you use this software in a product, 
+- an acknowledgment in the product documentation would be appreciated but is 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
+  not required.
+  
+- 2. Altered source versions must be plainly marked as such, and must not be 
++ 2. Altered source versions must be plainly marked as such, and must not be
+  misrepresented as being the original software.
+  
+  3. This notice may not be removed or altered from any source distribution.
+-*/
++ */
+ 
++#ifndef __LP64__
++
+ #include "mac/MacHelpers.h"
+ #include "mac/MacKeyboard.h"
+ #include "mac/MacMouse.h"
+@@ -156,3 +158,5 @@
+     else
+         OIS_EXCEPT(E_General, "MouseWrapper >> Being called by something other than our event handler!");
+ }
++
++#endif
+\ No newline at end of file

Added: trunk/dports/devel/ois/files/patch-src_mac_MacInputManager.cpp.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_mac_MacInputManager.cpp.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_mac_MacInputManager.cpp.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,52 @@
+--- src/mac/MacInputManager.cpp	(revision 34)
++++ src/mac/MacInputManager.cpp	(working copy)
+@@ -1,25 +1,28 @@
+ /*
+  The zlib/libpng License
+  
+- Copyright (c) 2006 Chris Snyder 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
+  
+  This software is provided 'as-is', without any express or implied warranty. In no event will
+  the authors be held liable for any damages arising from the use of this software.
+  
+- Permission is granted to anyone to use this software for any purpose, including commercial 
++ Permission is granted to anyone to use this software for any purpose, including commercial
+  applications, and to alter it and redistribute it freely, subject to the following
+  restrictions:
+  
+- 1. The origin of this software must not be misrepresented; you must not claim that 
+- you wrote the original software. If you use this software in a product, 
+- an acknowledgment in the product documentation would be appreciated but is 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
+  not required.
+  
+- 2. Altered source versions must be plainly marked as such, and must not be 
++ 2. Altered source versions must be plainly marked as such, and must not be
+  misrepresented as being the original software.
+  
+  3. This notice may not be removed or altered from any source distribution.
+-*/
++ */
++
++#ifndef __LP64__
++
+ #include "mac/MacInputManager.h"
+ #include "mac/MacKeyboard.h"
+ #include "mac/MacMouse.h"
+@@ -34,7 +37,7 @@
+ using namespace OIS;
+ 
+ //--------------------------------------------------------------------------------//
+-MacInputManager::MacInputManager() : InputManager("Mac OSX Input Manager")
++MacInputManager::MacInputManager() : InputManager("Mac OS X Input Manager")
+ {
+     mHideMouse = true;
+     mUseRepeat = false;
+@@ -204,3 +207,4 @@
+ {
+ 	delete obj;
+ }
++#endif

Added: trunk/dports/devel/ois/files/patch-src_mac_MacKeyboard.cpp.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_mac_MacKeyboard.cpp.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_mac_MacKeyboard.cpp.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,95 @@
+--- src/mac/MacKeyboard.cpp	(revision 34)
++++ src/mac/MacKeyboard.cpp	(working copy)
+@@ -1,26 +1,28 @@
+ /*
+  The zlib/libpng License
+  
+- Copyright (c) 2006 Chris Snyder 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
+  
+  This software is provided 'as-is', without any express or implied warranty. In no event will
+  the authors be held liable for any damages arising from the use of this software.
+  
+- Permission is granted to anyone to use this software for any purpose, including commercial 
++ Permission is granted to anyone to use this software for any purpose, including commercial
+  applications, and to alter it and redistribute it freely, subject to the following
+  restrictions:
+  
+- 1. The origin of this software must not be misrepresented; you must not claim that 
+- you wrote the original software. If you use this software in a product, 
+- an acknowledgment in the product documentation would be appreciated but is 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
+  not required.
+  
+- 2. Altered source versions must be plainly marked as such, and must not be 
++ 2. Altered source versions must be plainly marked as such, and must not be
+  misrepresented as being the original software.
+  
+  3. This notice may not be removed or altered from any source distribution.
+-*/
++ */
+ 
++#ifndef __LP64__
++
+ #include "mac/MacKeyboard.h"
+ #include "mac/MacInputManager.h"
+ #include "mac/MacHelpers.h"
+@@ -141,11 +143,7 @@
+ 	// if not buffered just return, we update the unbuffered automatically
+ 	if ( !mBuffered || !mListener )
+ 		return;
+-	
+-	//If the mListener returns false, that means that we are probably deleted...
+-	//send no more events and just leave as the this pointer is invalid now...
+-	bool ret = true;
+-	
++
+ 	// run through our event stack
+ 	eventStack::iterator cur_it;
+ 	
+@@ -165,8 +163,24 @@
+ //-------------------------------------------------------------------//
+ std::string& MacKeyboard::getAsString( KeyCode key )
+ {
+-	getString = "";
+-	
++    CGKeyCode deviceKeycode;
++    
++    // Convert OIS KeyCode back into device keycode
++    for(VirtualtoOIS_KeyMap::iterator it = keyConversion.begin(); it != keyConversion.end(); ++it)
++    {
++        if(it->second == key)
++            deviceKeycode = it->first;
++    }
++    
++    UniChar unicodeString[1];
++    UniCharCount actualStringLength = 0;
++    
++    CGEventSourceRef sref = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
++    CGEventRef ref = CGEventCreateKeyboardEvent(sref, deviceKeycode, true);
++    CGEventKeyboardGetUnicodeString(ref, sizeof(unicodeString) / sizeof(*unicodeString), &actualStringLength, unicodeString);
++//    NSLog([NSString stringWithFormat:@"%C\n", unicodeString[0]]);
++    getString = unicodeString[0];
++
+ 	return getString;
+ }
+ 
+@@ -206,7 +220,7 @@
+ 		//status = GetEventParameter( theEvent, 'kuni', typeUnicodeText, NULL, 0, &stringsize, NULL);
+ 		//status = GetEventParameter( theEvent, 'kuni', typeUnicodeText, NULL, sizeof(UniChar)*10, NULL, &text );
+ 		status = GetEventParameter( theEvent, 'kuni', typeUnicodeText, NULL, sizeof(UniChar) * 10, &stringsize, &text );
+-		std::cout << "String length: " << stringsize << std::endl;
++//		std::cout << "String length: " << stringsize << std::endl;
+ 		
+ 		//wstring unitext;
+ 		//for (int i=0;i<10;i++) unitext += (wchar_t)text[i];
+@@ -462,6 +476,4 @@
+ 	keyConversion.insert(VirtualtoOIS_KeyMap::value_type(0x75, KC_DELETE)); // del under help key?
+ }
+ 
+-
+-
+-
++#endif

Added: trunk/dports/devel/ois/files/patch-src_mac_MacMouse.cpp.diff
===================================================================
--- trunk/dports/devel/ois/files/patch-src_mac_MacMouse.cpp.diff	                        (rev 0)
+++ trunk/dports/devel/ois/files/patch-src_mac_MacMouse.cpp.diff	2011-11-10 01:19:09 UTC (rev 87081)
@@ -0,0 +1,44 @@
+--- src/mac/MacMouse.cpp	(revision 34)
++++ src/mac/MacMouse.cpp	(working copy)
+@@ -1,3 +1,28 @@
++/*
++ The zlib/libpng License
++ 
++ Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
++ 
++ This software is provided 'as-is', without any express or implied warranty. In no event will
++ the authors be held liable for any damages arising from the use of this software.
++ 
++ Permission is granted to anyone to use this software for any purpose, including commercial
++ applications, and to alter it and redistribute it freely, subject to the following
++ restrictions:
++ 
++ 1. The origin of this software must not be misrepresented; you must not claim that
++ you wrote the original software. If you use this software in a product,
++ an acknowledgment in the product documentation would be appreciated but is
++ not required.
++ 
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 
++ 3. This notice may not be removed or altered from any source distribution.
++ */
++
++#ifndef __LP64__
++
+ #include "mac/MacMouse.h"
+ #include "mac/MacInputManager.h"
+ #include "mac/MacHelpers.h"
+@@ -165,7 +190,6 @@
+ 
+ void MacMouse::_mouseCallback( EventRef theEvent )
+ {
+-	OSStatus result = eventNotHandledErr;
+     UInt32 kind = GetEventKind (theEvent);
+ 
+ 	switch(kind)
+@@ -344,3 +368,4 @@
+ 			break;
+ 	}    
+ }
++#endif
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20111109/f204c281/attachment-0001.html>


More information about the macports-changes mailing list