diff --git a/Xcode/stepmania.xcodeproj/project.pbxproj b/Xcode/stepmania.xcodeproj/project.pbxproj index 3137259517..74a261fc97 100644 --- a/Xcode/stepmania.xcodeproj/project.pbxproj +++ b/Xcode/stepmania.xcodeproj/project.pbxproj @@ -1757,6 +1757,7 @@ EEC7863F0E58208B00F559BC /* StepsDisplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC7863D0E58208B00F559BC /* StepsDisplay.cpp */; }; F4BC045409E6B578003F770B /* ScreenGameplaySyncMachine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAB55EB509A7E3D3008FDC69 /* ScreenGameplaySyncMachine.cpp */; }; F4BC045509E6B582003F770B /* ScreenGameplaySyncMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB55EB609A7E3D3008FDC69 /* ScreenGameplaySyncMachine.h */; }; + F8FFD97A19E909ED00AEAA69 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8FFD97919E909ED00AEAA69 /* Accelerate.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -3249,6 +3250,8 @@ EE9D33F414B81BE80098EB9C /* jutils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = ../extern/libjpeg/jutils.c; sourceTree = SOURCE_ROOT; }; EEC7863D0E58208B00F559BC /* StepsDisplay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StepsDisplay.cpp; path = ../src/StepsDisplay.cpp; sourceTree = ""; }; EEC7863E0E58208B00F559BC /* StepsDisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StepsDisplay.h; path = ../src/StepsDisplay.h; sourceTree = ""; }; + F8FFD97719E907BA00AEAA69 /* vecLib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vecLib.framework; path = ../../../../../System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework; sourceTree = ""; }; + F8FFD97919E909ED00AEAA69 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -3284,6 +3287,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F8FFD97A19E909ED00AEAA69 /* Accelerate.framework in Frameworks */, AA29CE3C0558741A00961A51 /* Cocoa.framework in Frameworks */, AA29CE3D0558741A00961A51 /* Carbon.framework in Frameworks */, AA29CE3E0558741A00961A51 /* IOKit.framework in Frameworks */, @@ -3506,6 +3510,8 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + F8FFD97919E909ED00AEAA69 /* Accelerate.framework */, + F8FFD97719E907BA00AEAA69 /* vecLib.framework */, 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, ); @@ -6264,7 +6270,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 0460; + LastUpgradeCheck = 0610; }; buildConfigurationList = AAC845130856A19700A9FEAB /* Build configuration list for PBXProject "stepmania" */; compatibilityVersion = "Xcode 3.2"; @@ -8317,6 +8323,10 @@ buildSettings = { COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(SYSTEM_LIBRARY_DIR)/Frameworks/Accelerate.framework/Versions/A/Frameworks", + ); FULL_NAME = "$(PRODUCT_NAME).$(WRAPPER_EXTENSION)"; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_PREFIX_HEADER = "$(SRCROOT)/../src/archutils/Darwin/StepMania.pch"; @@ -8387,8 +8397,9 @@ LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/Libraries"; LINKER_DISPLAYS_MANGLED_NAMES = YES; MACOSX_DEPLOYMENT_TARGET = 10.6; + ONLY_ACTIVE_ARCH = YES; PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; - SDKROOT = macosx10.9; + SDKROOT = macosx; SHARED_PRECOMPS_DIR = "/Library/Caches/com.apple.Xcode.$(UID)/SharedPrecompiledHeaders/$(PRODUCT_NAME)/$(CONFIGURATION)"; STRIP_INSTALLED_PRODUCT = NO; STRIP_STYLE = "non-global"; @@ -8768,7 +8779,7 @@ LINKER_DISPLAYS_MANGLED_NAMES = YES; MACOSX_DEPLOYMENT_TARGET = 10.6; PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; - SDKROOT = macosx10.9; + SDKROOT = macosx; SHARED_PRECOMPS_DIR = "/Library/Caches/com.apple.Xcode.$(UID)/SharedPrecompiledHeaders/$(PRODUCT_NAME)/$(CONFIGURATION)"; STRIP_STYLE = "non-global"; USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../extern/glew-1.5.8/include $(PROJECT_DIR)/../extern/jsoncpp/include $(PROJECT_DIR)/../extern/vorbis"; @@ -8783,6 +8794,10 @@ CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = stabs; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(SYSTEM_LIBRARY_DIR)/Frameworks/Accelerate.framework/Versions/A/Frameworks", + ); FULL_NAME = "$(PRODUCT_NAME).$(WRAPPER_EXTENSION)"; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; @@ -9005,6 +9020,10 @@ buildSettings = { COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(SYSTEM_LIBRARY_DIR)/Frameworks/Accelerate.framework/Versions/A/Frameworks", + ); FULL_NAME = "$(PRODUCT_NAME).$(WRAPPER_EXTENSION)"; GCC_PREFIX_HEADER = "$(SRCROOT)/../src/archutils/Darwin/StepMania.pch"; GCC_PREPROCESSOR_DEFINITIONS = _XOPEN_SOURCE; @@ -9072,7 +9091,7 @@ LINKER_DISPLAYS_MANGLED_NAMES = YES; MACOSX_DEPLOYMENT_TARGET = 10.6; PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; - SDKROOT = macosx10.9; + SDKROOT = macosx; SHARED_PRECOMPS_DIR = "/Library/Caches/com.apple.Xcode.$(UID)/SharedPrecompiledHeaders/$(PRODUCT_NAME)/$(CONFIGURATION)"; STRIP_STYLE = "non-global"; USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../extern/glew-1.5.8/include $(PROJECT_DIR)/../extern/jsoncpp/include $(PROJECT_DIR)/../extern/vorbis"; diff --git a/src/arch/InputHandler/InputHandler_MacOSX_HID.cpp b/src/arch/InputHandler/InputHandler_MacOSX_HID.cpp index ee7072e93e..998a94b5ff 100644 --- a/src/arch/InputHandler/InputHandler_MacOSX_HID.cpp +++ b/src/arch/InputHandler/InputHandler_MacOSX_HID.cpp @@ -25,7 +25,7 @@ void InputHandler_MacOSX_HID::QueueCallback( void *target, int result, void *ref IOHIDQueueInterface **queue = (IOHIDQueueInterface **)sender; IOHIDEventStruct event; AbsoluteTime zeroTime = { 0, 0 }; - HIDDevice *dev = This->m_vDevices[int( refcon )]; + HIDDevice *dev = This->m_vDevices[size_t( refcon )]; vector vPresses; while( (result = CALL(queue, getNextEvent, &event, zeroTime, 0)) == kIOReturnSuccess ) @@ -402,71 +402,17 @@ wchar_t InputHandler_MacOSX_HID::DeviceButtonToChar( DeviceButton button, bool b return L'\0'; } - // Find the USB key code for this DeviceButton + // Use Quartz to translate device button to char UInt8 iMacVirtualKey; if( KeyboardDevice::DeviceButtonToMacVirtualKey( button, iMacVirtualKey ) ) { - UInt32 modifiers = 0; - if( bUseCurrentKeyModifiers ) - modifiers = GetCurrentKeyModifiers(); - - // todo: handle Caps Lock -freem - - SInt16 iCurrentKeyScript = GetScriptManagerVariable( smKeyScript ); - SInt16 iCurrentKeyLayoutID = GetScriptVariable( iCurrentKeyScript, smScriptKeys ); - static SInt16 iLastKeyLayoutID = !iCurrentKeyLayoutID; // Just be different. - static UInt32 iDeadKeyState; - static UCKeyboardLayout **KeyLayout; - - if( iCurrentKeyLayoutID != iLastKeyLayoutID ) + CGEventRef event = CGEventCreateKeyboardEvent( NULL, (CGKeyCode)iMacVirtualKey, true ); + UniChar string[1]; + UniCharCount length; + CGEventKeyboardGetUnicodeString( event, 1, &length, string ); + if( length > 0 ) { - iDeadKeyState = 0; - KeyLayout = (UCKeyboardLayout **)GetResource( 'uchr', iCurrentKeyLayoutID ); - iLastKeyLayoutID = iCurrentKeyLayoutID; - } - if( KeyLayout ) - { - UInt32 keyboardType = LMGetKbdType(); - UInt32 nModifiers = bUseCurrentKeyModifiers ? GetCurrentKeyModifiers() : 0; - UniChar unicodeInputString[4]; - UniCharCount length; - OSStatus status = UCKeyTranslate( *KeyLayout, iMacVirtualKey, kUCKeyActionDown, nModifiers, - keyboardType, 0, &iDeadKeyState, ARRAYLEN(unicodeInputString), - &length, unicodeInputString ); - - if( status ) - return L'\0'; - - CFStringRef inputString = CFStringCreateWithCharacters( NULL, unicodeInputString, length ); - char utf8InputString[7]; // Max size is 6 (although really only 4 are used) + null. - - if( !CFStringGetCString(inputString, utf8InputString, 7, kCFStringEncodingUTF8) ) - { - CFRelease( inputString ); - return L'\0'; - } - - wchar_t ch = utf8_get_char( utf8InputString ); - - CFRelease( inputString ); - return ch == INVALID_CHAR ? L'\0' : ch; - - } - else - { - // Fall back on the 'KCHR' resource. - static unsigned long state = 0; - static Ptr keymap = NULL; - Ptr new_keymap; - - new_keymap = (Ptr)GetScriptManagerVariable(smKCHRCache); - if( new_keymap != keymap ) - { - keymap = new_keymap; - state = 0; - } - // XXX: Only returns ascii. é will be returned as e. - return KeyTranslate( keymap, UInt16(iMacVirtualKey)|modifiers, &state ) & 0xFF; + return string[0]; } }