Generalize and share mapping menu (main, status, dock) behavior.
[enjoyable.git] / Enjoyable.xcodeproj / project.pbxproj
index 3f1997c..3d6cb56 100644 (file)
        objects = {
 
 /* Begin PBXBuildFile section */
-               1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
-               8B7E476C15C314A200C588FA /* TargetMouseBtn.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7E476B15C314A200C588FA /* TargetMouseBtn.m */; };
-               8BD9B54315C230FF00929C5D /* TargetMouseMove.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD9B54215C230FE00929C5D /* TargetMouseMove.m */; };
-               8BEFAD9C15C46BFF00823AEC /* TargetMouseScroll.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BEFAD9B15C46BFF00823AEC /* TargetMouseScroll.m */; };
-               8BEFADA015C476DC00823AEC /* TargetToggleMouseScope.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BEFAD9F15C476DC00823AEC /* TargetToggleMouseScope.m */; };
-               8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
-               8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
                8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
-               D549CA4C0FBB441B00BC8203 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = D549CA4B0FBB441B00BC8203 /* Credits.rtf */; };
-               D5617A360FAEB74000928B3A /* ConfigsController.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617A350FAEB74000928B3A /* ConfigsController.m */; };
-               D5617A390FAEBA1800928B3A /* Config.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617A380FAEBA1800928B3A /* Config.m */; };
-               D5617D1A0FAF568100928B3A /* JSActionButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617D190FAF568100928B3A /* JSActionButton.m */; };
-               D5617D260FAF579300928B3A /* JSActionHat.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617D250FAF579300928B3A /* JSActionHat.m */; };
-               D5617D2B0FAF579A00928B3A /* JSActionAnalog.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617D2A0FAF579A00928B3A /* JSActionAnalog.m */; };
-               D5617FD60FAFD06000928B3A /* Target.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FD50FAFD06000928B3A /* Target.m */; };
-               D5617FD90FAFD1E600928B3A /* TargetKeyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FD80FAFD1E600928B3A /* TargetKeyboard.m */; };
-               D5617FE40FAFD7B000928B3A /* TargetController.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FE30FAFD7B000928B3A /* TargetController.m */; };
-               D5617FE70FAFDB5800928B3A /* KeyInputTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FE60FAFDB5800928B3A /* KeyInputTextView.m */; };
-               D594BE860FAE6219007A85F2 /* Joystick.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BE850FAE6219007A85F2 /* Joystick.m */; };
-               D594BE8A0FAE64AD007A85F2 /* JSAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BE890FAE64AD007A85F2 /* JSAction.m */; };
-               D594BEF90FAE6FF2007A85F2 /* JoystickController.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BEF80FAE6FF2007A85F2 /* JoystickController.m */; };
                D594BF000FAE7397007A85F2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D594BEFF0FAE7397007A85F2 /* IOKit.framework */; };
-               D594BF830FAE9661007A85F2 /* ApplicationController.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BF820FAE9661007A85F2 /* ApplicationController.m */; };
-               D5F809710FB093400006A4DE /* TargetConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D5F809700FB093400006A4DE /* TargetConfig.m */; };
-               D5F80A9D0FB0A2FF0006A4DE /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = D5617A080FAEAF8300928B3A /* icon.icns */; };
-               EE1D7C9216E01E7000B000EB /* NSView+FirstResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1D7C9116E01E7000B000EB /* NSView+FirstResponder.m */; };
-               EE1D7C9616E0ECCF00B000EB /* NSError+Description.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1D7C9516E0ECCF00B000EB /* NSError+Description.m */; };
+               EE3D897A16EA7EFC00596D1F /* Status Menu Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EE3D897916EA7EFC00596D1F /* Status Menu Icon@2x.png */; };
+               EE3D897C16EA806E00596D1F /* Status Menu Icon Disabled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EE3D897B16EA806E00596D1F /* Status Menu Icon Disabled@2x.png */; };
+               EE3D897F16EA817E00596D1F /* Status Menu Icon Disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = EE3D897D16EA817E00596D1F /* Status Menu Icon Disabled.png */; };
+               EE3D898016EA817E00596D1F /* Status Menu Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = EE3D897E16EA817E00596D1F /* Status Menu Icon.png */; };
+               EE6A122E16E8F46300EDBD32 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = EE6A122D16E8F46300EDBD32 /* Icon.icns */; };
+               EED4CE6E16ED692400C65AA8 /* NJMappingMenuController.m in Sources */ = {isa = PBXBuildFile; fileRef = EED4CE6D16ED692400C65AA8 /* NJMappingMenuController.m */; };
+               EEE73B1616EA42E5009D9D99 /* NSRunningApplication+NJPossibleNames.m in Sources */ = {isa = PBXBuildFile; fileRef = EEE73B1516EA42E5009D9D99 /* NSRunningApplication+NJPossibleNames.m */; };
+               EEF17D1916E8E21A00D7DC4D /* com.yukkurigames.Enjoyable.mapping.icns in Resources */ = {isa = PBXBuildFile; fileRef = EEF17D1716E8E21A00D7DC4D /* com.yukkurigames.Enjoyable.mapping.icns */; };
+               EEF17D1F16E8E23A00D7DC4D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EEF17D1B16E8E23A00D7DC4D /* InfoPlist.strings */; };
+               EEF17D2016E8E23A00D7DC4D /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = EEF17D1D16E8E23A00D7DC4D /* MainMenu.xib */; };
+               EEF17D2216E8E24400D7DC4D /* Help in Resources */ = {isa = PBXBuildFile; fileRef = EEF17D2116E8E24400D7DC4D /* Help */; };
+               EEF17D2616E8E2D800D7DC4D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D2416E8E2D800D7DC4D /* main.m */; };
+               EEF17D3316E8E2E100D7DC4D /* NSError+Description.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D2816E8E2E100D7DC4D /* NSError+Description.m */; };
+               EEF17D3416E8E2E100D7DC4D /* NSFileManager+UniqueNames.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D2A16E8E2E100D7DC4D /* NSFileManager+UniqueNames.m */; };
+               EEF17D3516E8E2E100D7DC4D /* NSMenu+RepresentedObjectAccessors.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D2C16E8E2E100D7DC4D /* NSMenu+RepresentedObjectAccessors.m */; };
+               EEF17D3616E8E2E100D7DC4D /* NSMutableArray+MoveObject.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D2E16E8E2E100D7DC4D /* NSMutableArray+MoveObject.m */; };
+               EEF17D3716E8E2E100D7DC4D /* NSString+FixFilename.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D3016E8E2E100D7DC4D /* NSString+FixFilename.m */; };
+               EEF17D3816E8E2E100D7DC4D /* NSView+FirstResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D3216E8E2E100D7DC4D /* NSView+FirstResponder.m */; };
+               EEF17D5C16E8E2EF00D7DC4D /* EnjoyableApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D3A16E8E2EF00D7DC4D /* EnjoyableApplicationDelegate.m */; };
+               EEF17D5D16E8E2EF00D7DC4D /* NJDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D3C16E8E2EF00D7DC4D /* NJDevice.m */; };
+               EEF17D5E16E8E2EF00D7DC4D /* NJDeviceController.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D3E16E8E2EF00D7DC4D /* NJDeviceController.m */; };
+               EEF17D5F16E8E2EF00D7DC4D /* NJInput.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D4016E8E2EF00D7DC4D /* NJInput.m */; };
+               EEF17D6016E8E2EF00D7DC4D /* NJInputAnalog.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D4216E8E2EF00D7DC4D /* NJInputAnalog.m */; };
+               EEF17D6116E8E2EF00D7DC4D /* NJInputButton.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D4416E8E2EF00D7DC4D /* NJInputButton.m */; };
+               EEF17D6216E8E2EF00D7DC4D /* NJInputHat.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D4616E8E2EF00D7DC4D /* NJInputHat.m */; };
+               EEF17D6316E8E2EF00D7DC4D /* NJKeyInputField.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D4916E8E2EF00D7DC4D /* NJKeyInputField.m */; };
+               EEF17D6416E8E2EF00D7DC4D /* NJMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D4B16E8E2EF00D7DC4D /* NJMapping.m */; };
+               EEF17D6516E8E2EF00D7DC4D /* NJMappingsController.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D4D16E8E2EF00D7DC4D /* NJMappingsController.m */; };
+               EEF17D6616E8E2EF00D7DC4D /* NJOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D4F16E8E2EF00D7DC4D /* NJOutput.m */; };
+               EEF17D6716E8E2EF00D7DC4D /* NJOutputController.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D5116E8E2EF00D7DC4D /* NJOutputController.m */; };
+               EEF17D6816E8E2EF00D7DC4D /* NJOutputKeyPress.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D5316E8E2EF00D7DC4D /* NJOutputKeyPress.m */; };
+               EEF17D6916E8E2EF00D7DC4D /* NJOutputMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D5516E8E2EF00D7DC4D /* NJOutputMapping.m */; };
+               EEF17D6A16E8E2EF00D7DC4D /* NJOutputMouseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D5716E8E2EF00D7DC4D /* NJOutputMouseButton.m */; };
+               EEF17D6B16E8E2EF00D7DC4D /* NJOutputMouseMove.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D5916E8E2EF00D7DC4D /* NJOutputMouseMove.m */; };
+               EEF17D6C16E8E2EF00D7DC4D /* NJOutputMouseScroll.m in Sources */ = {isa = PBXBuildFile; fileRef = EEF17D5B16E8E2EF00D7DC4D /* NJOutputMouseScroll.m */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
-               089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
                1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-               13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
-               1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
-               29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
                29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
                29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
-               32CA4F630368D1EE00C91783 /* Enjoyable_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Enjoyable_Prefix.pch; sourceTree = "<group>"; };
-               8B7E476A15C314A200C588FA /* TargetMouseBtn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetMouseBtn.h; sourceTree = "<group>"; };
-               8B7E476B15C314A200C588FA /* TargetMouseBtn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetMouseBtn.m; sourceTree = "<group>"; };
-               8BD9B54115C230FE00929C5D /* TargetMouseMove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetMouseMove.h; sourceTree = "<group>"; };
-               8BD9B54215C230FE00929C5D /* TargetMouseMove.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetMouseMove.m; sourceTree = "<group>"; };
-               8BEFAD9A15C46BFF00823AEC /* TargetMouseScroll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetMouseScroll.h; sourceTree = "<group>"; };
-               8BEFAD9B15C46BFF00823AEC /* TargetMouseScroll.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetMouseScroll.m; sourceTree = "<group>"; };
-               8BEFAD9E15C476DC00823AEC /* TargetToggleMouseScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetToggleMouseScope.h; sourceTree = "<group>"; };
-               8BEFAD9F15C476DC00823AEC /* TargetToggleMouseScope.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetToggleMouseScope.m; sourceTree = "<group>"; };
                8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
                8D1107320486CEB800E47090 /* Enjoyable.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Enjoyable.app; sourceTree = BUILT_PRODUCTS_DIR; };
-               D549CA4B0FBB441B00BC8203 /* Credits.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = Credits.rtf; sourceTree = "<group>"; };
-               D5617A080FAEAF8300928B3A /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = "<group>"; };
-               D5617A340FAEB74000928B3A /* ConfigsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfigsController.h; sourceTree = "<group>"; };
-               D5617A350FAEB74000928B3A /* ConfigsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfigsController.m; sourceTree = "<group>"; };
-               D5617A370FAEBA1800928B3A /* Config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = "<group>"; };
-               D5617A380FAEBA1800928B3A /* Config.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Config.m; sourceTree = "<group>"; };
-               D5617D180FAF568100928B3A /* JSActionButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActionButton.h; sourceTree = "<group>"; };
-               D5617D190FAF568100928B3A /* JSActionButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSActionButton.m; sourceTree = "<group>"; };
-               D5617D240FAF579300928B3A /* JSActionHat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActionHat.h; sourceTree = "<group>"; };
-               D5617D250FAF579300928B3A /* JSActionHat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSActionHat.m; sourceTree = "<group>"; };
-               D5617D290FAF579A00928B3A /* JSActionAnalog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActionAnalog.h; sourceTree = "<group>"; };
-               D5617D2A0FAF579A00928B3A /* JSActionAnalog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSActionAnalog.m; sourceTree = "<group>"; };
-               D5617FD40FAFD06000928B3A /* Target.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Target.h; sourceTree = "<group>"; };
-               D5617FD50FAFD06000928B3A /* Target.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Target.m; sourceTree = "<group>"; };
-               D5617FD70FAFD1E600928B3A /* TargetKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetKeyboard.h; sourceTree = "<group>"; };
-               D5617FD80FAFD1E600928B3A /* TargetKeyboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetKeyboard.m; sourceTree = "<group>"; };
-               D5617FE20FAFD7B000928B3A /* TargetController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetController.h; sourceTree = "<group>"; };
-               D5617FE30FAFD7B000928B3A /* TargetController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetController.m; sourceTree = "<group>"; };
-               D5617FE50FAFDB5800928B3A /* KeyInputTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyInputTextView.h; sourceTree = "<group>"; };
-               D5617FE60FAFDB5800928B3A /* KeyInputTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KeyInputTextView.m; sourceTree = "<group>"; };
-               D56180090FAFE8E400928B3A /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
-               D594BE840FAE6219007A85F2 /* Joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Joystick.h; sourceTree = "<group>"; };
-               D594BE850FAE6219007A85F2 /* Joystick.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Joystick.m; sourceTree = "<group>"; };
-               D594BE880FAE64AD007A85F2 /* JSAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAction.h; sourceTree = "<group>"; };
-               D594BE890FAE64AD007A85F2 /* JSAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSAction.m; sourceTree = "<group>"; };
-               D594BEF70FAE6FF2007A85F2 /* JoystickController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JoystickController.h; sourceTree = "<group>"; };
-               D594BEF80FAE6FF2007A85F2 /* JoystickController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JoystickController.m; sourceTree = "<group>"; };
                D594BEFF0FAE7397007A85F2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
-               D594BF810FAE9661007A85F2 /* ApplicationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationController.h; sourceTree = "<group>"; };
-               D594BF820FAE9661007A85F2 /* ApplicationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApplicationController.m; sourceTree = "<group>"; };
-               D5F8096F0FB093400006A4DE /* TargetConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetConfig.h; sourceTree = "<group>"; };
-               D5F809700FB093400006A4DE /* TargetConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetConfig.m; sourceTree = "<group>"; };
-               EE1D7C9016E01E7000B000EB /* NSView+FirstResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSView+FirstResponder.h"; sourceTree = "<group>"; };
-               EE1D7C9116E01E7000B000EB /* NSView+FirstResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSView+FirstResponder.m"; sourceTree = "<group>"; };
-               EE1D7C9416E0ECCF00B000EB /* NSError+Description.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+Description.h"; sourceTree = "<group>"; };
-               EE1D7C9516E0ECCF00B000EB /* NSError+Description.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError+Description.m"; sourceTree = "<group>"; };
+               EE3D897916EA7EFC00596D1F /* Status Menu Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Status Menu Icon@2x.png"; path = "Resources/Status Menu Icon@2x.png"; sourceTree = "<group>"; };
+               EE3D897B16EA806E00596D1F /* Status Menu Icon Disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Status Menu Icon Disabled@2x.png"; path = "Resources/Status Menu Icon Disabled@2x.png"; sourceTree = "<group>"; };
+               EE3D897D16EA817E00596D1F /* Status Menu Icon Disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Status Menu Icon Disabled.png"; path = "Resources/Status Menu Icon Disabled.png"; sourceTree = "<group>"; };
+               EE3D897E16EA817E00596D1F /* Status Menu Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Status Menu Icon.png"; path = "Resources/Status Menu Icon.png"; sourceTree = "<group>"; };
+               EE6A122D16E8F46300EDBD32 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = "<group>"; };
+               EED4CE6C16ED692400C65AA8 /* NJMappingMenuController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJMappingMenuController.h; path = Classes/NJMappingMenuController.h; sourceTree = "<group>"; };
+               EED4CE6D16ED692400C65AA8 /* NJMappingMenuController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJMappingMenuController.m; path = Classes/NJMappingMenuController.m; sourceTree = "<group>"; };
+               EEE73B1416EA42E5009D9D99 /* NSRunningApplication+NJPossibleNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSRunningApplication+NJPossibleNames.h"; path = "Categories/NSRunningApplication+NJPossibleNames.h"; sourceTree = "<group>"; };
+               EEE73B1516EA42E5009D9D99 /* NSRunningApplication+NJPossibleNames.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSRunningApplication+NJPossibleNames.m"; path = "Categories/NSRunningApplication+NJPossibleNames.m"; sourceTree = "<group>"; };
+               EEF17D1716E8E21A00D7DC4D /* com.yukkurigames.Enjoyable.mapping.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = com.yukkurigames.Enjoyable.mapping.icns; path = Resources/com.yukkurigames.Enjoyable.mapping.icns; sourceTree = "<group>"; };
+               EEF17D1C16E8E23A00D7DC4D /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = Resources/English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+               EEF17D1E16E8E23A00D7DC4D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/MainMenu.xib; sourceTree = "<group>"; };
+               EEF17D2116E8E24400D7DC4D /* Help */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Help; path = Resources/Help; sourceTree = "<group>"; };
+               EEF17D2316E8E2D800D7DC4D /* Enjoyable_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Enjoyable_Prefix.pch; path = "Other Sources/Enjoyable_Prefix.pch"; sourceTree = "<group>"; };
+               EEF17D2416E8E2D800D7DC4D /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "Other Sources/main.m"; sourceTree = "<group>"; };
+               EEF17D2516E8E2D800D7DC4D /* NJEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJEvents.h; path = "Other Sources/NJEvents.h"; sourceTree = "<group>"; };
+               EEF17D2716E8E2E100D7DC4D /* NSError+Description.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSError+Description.h"; path = "Categories/NSError+Description.h"; sourceTree = "<group>"; };
+               EEF17D2816E8E2E100D7DC4D /* NSError+Description.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSError+Description.m"; path = "Categories/NSError+Description.m"; sourceTree = "<group>"; };
+               EEF17D2916E8E2E100D7DC4D /* NSFileManager+UniqueNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSFileManager+UniqueNames.h"; path = "Categories/NSFileManager+UniqueNames.h"; sourceTree = "<group>"; };
+               EEF17D2A16E8E2E100D7DC4D /* NSFileManager+UniqueNames.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSFileManager+UniqueNames.m"; path = "Categories/NSFileManager+UniqueNames.m"; sourceTree = "<group>"; };
+               EEF17D2B16E8E2E100D7DC4D /* NSMenu+RepresentedObjectAccessors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMenu+RepresentedObjectAccessors.h"; path = "Categories/NSMenu+RepresentedObjectAccessors.h"; sourceTree = "<group>"; };
+               EEF17D2C16E8E2E100D7DC4D /* NSMenu+RepresentedObjectAccessors.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMenu+RepresentedObjectAccessors.m"; path = "Categories/NSMenu+RepresentedObjectAccessors.m"; sourceTree = "<group>"; };
+               EEF17D2D16E8E2E100D7DC4D /* NSMutableArray+MoveObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+MoveObject.h"; path = "Categories/NSMutableArray+MoveObject.h"; sourceTree = "<group>"; };
+               EEF17D2E16E8E2E100D7DC4D /* NSMutableArray+MoveObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+MoveObject.m"; path = "Categories/NSMutableArray+MoveObject.m"; sourceTree = "<group>"; };
+               EEF17D2F16E8E2E100D7DC4D /* NSString+FixFilename.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSString+FixFilename.h"; path = "Categories/NSString+FixFilename.h"; sourceTree = "<group>"; };
+               EEF17D3016E8E2E100D7DC4D /* NSString+FixFilename.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSString+FixFilename.m"; path = "Categories/NSString+FixFilename.m"; sourceTree = "<group>"; };
+               EEF17D3116E8E2E100D7DC4D /* NSView+FirstResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSView+FirstResponder.h"; path = "Categories/NSView+FirstResponder.h"; sourceTree = "<group>"; };
+               EEF17D3216E8E2E100D7DC4D /* NSView+FirstResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSView+FirstResponder.m"; path = "Categories/NSView+FirstResponder.m"; sourceTree = "<group>"; };
+               EEF17D3916E8E2EF00D7DC4D /* EnjoyableApplicationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnjoyableApplicationDelegate.h; path = Classes/EnjoyableApplicationDelegate.h; sourceTree = "<group>"; };
+               EEF17D3A16E8E2EF00D7DC4D /* EnjoyableApplicationDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = EnjoyableApplicationDelegate.m; path = Classes/EnjoyableApplicationDelegate.m; sourceTree = "<group>"; };
+               EEF17D3B16E8E2EF00D7DC4D /* NJDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJDevice.h; path = Classes/NJDevice.h; sourceTree = "<group>"; };
+               EEF17D3C16E8E2EF00D7DC4D /* NJDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJDevice.m; path = Classes/NJDevice.m; sourceTree = "<group>"; };
+               EEF17D3D16E8E2EF00D7DC4D /* NJDeviceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJDeviceController.h; path = Classes/NJDeviceController.h; sourceTree = "<group>"; };
+               EEF17D3E16E8E2EF00D7DC4D /* NJDeviceController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJDeviceController.m; path = Classes/NJDeviceController.m; sourceTree = "<group>"; };
+               EEF17D3F16E8E2EF00D7DC4D /* NJInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJInput.h; path = Classes/NJInput.h; sourceTree = "<group>"; };
+               EEF17D4016E8E2EF00D7DC4D /* NJInput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJInput.m; path = Classes/NJInput.m; sourceTree = "<group>"; };
+               EEF17D4116E8E2EF00D7DC4D /* NJInputAnalog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJInputAnalog.h; path = Classes/NJInputAnalog.h; sourceTree = "<group>"; };
+               EEF17D4216E8E2EF00D7DC4D /* NJInputAnalog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJInputAnalog.m; path = Classes/NJInputAnalog.m; sourceTree = "<group>"; };
+               EEF17D4316E8E2EF00D7DC4D /* NJInputButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJInputButton.h; path = Classes/NJInputButton.h; sourceTree = "<group>"; };
+               EEF17D4416E8E2EF00D7DC4D /* NJInputButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJInputButton.m; path = Classes/NJInputButton.m; sourceTree = "<group>"; };
+               EEF17D4516E8E2EF00D7DC4D /* NJInputHat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJInputHat.h; path = Classes/NJInputHat.h; sourceTree = "<group>"; };
+               EEF17D4616E8E2EF00D7DC4D /* NJInputHat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJInputHat.m; path = Classes/NJInputHat.m; sourceTree = "<group>"; };
+               EEF17D4716E8E2EF00D7DC4D /* NJInputPathElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJInputPathElement.h; path = Classes/NJInputPathElement.h; sourceTree = "<group>"; };
+               EEF17D4816E8E2EF00D7DC4D /* NJKeyInputField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJKeyInputField.h; path = Classes/NJKeyInputField.h; sourceTree = "<group>"; };
+               EEF17D4916E8E2EF00D7DC4D /* NJKeyInputField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJKeyInputField.m; path = Classes/NJKeyInputField.m; sourceTree = "<group>"; };
+               EEF17D4A16E8E2EF00D7DC4D /* NJMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJMapping.h; path = Classes/NJMapping.h; sourceTree = "<group>"; };
+               EEF17D4B16E8E2EF00D7DC4D /* NJMapping.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJMapping.m; path = Classes/NJMapping.m; sourceTree = "<group>"; };
+               EEF17D4C16E8E2EF00D7DC4D /* NJMappingsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJMappingsController.h; path = Classes/NJMappingsController.h; sourceTree = "<group>"; };
+               EEF17D4D16E8E2EF00D7DC4D /* NJMappingsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJMappingsController.m; path = Classes/NJMappingsController.m; sourceTree = "<group>"; };
+               EEF17D4E16E8E2EF00D7DC4D /* NJOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJOutput.h; path = Classes/NJOutput.h; sourceTree = "<group>"; };
+               EEF17D4F16E8E2EF00D7DC4D /* NJOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJOutput.m; path = Classes/NJOutput.m; sourceTree = "<group>"; };
+               EEF17D5016E8E2EF00D7DC4D /* NJOutputController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJOutputController.h; path = Classes/NJOutputController.h; sourceTree = "<group>"; };
+               EEF17D5116E8E2EF00D7DC4D /* NJOutputController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJOutputController.m; path = Classes/NJOutputController.m; sourceTree = "<group>"; };
+               EEF17D5216E8E2EF00D7DC4D /* NJOutputKeyPress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJOutputKeyPress.h; path = Classes/NJOutputKeyPress.h; sourceTree = "<group>"; };
+               EEF17D5316E8E2EF00D7DC4D /* NJOutputKeyPress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJOutputKeyPress.m; path = Classes/NJOutputKeyPress.m; sourceTree = "<group>"; };
+               EEF17D5416E8E2EF00D7DC4D /* NJOutputMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJOutputMapping.h; path = Classes/NJOutputMapping.h; sourceTree = "<group>"; };
+               EEF17D5516E8E2EF00D7DC4D /* NJOutputMapping.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJOutputMapping.m; path = Classes/NJOutputMapping.m; sourceTree = "<group>"; };
+               EEF17D5616E8E2EF00D7DC4D /* NJOutputMouseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJOutputMouseButton.h; path = Classes/NJOutputMouseButton.h; sourceTree = "<group>"; };
+               EEF17D5716E8E2EF00D7DC4D /* NJOutputMouseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJOutputMouseButton.m; path = Classes/NJOutputMouseButton.m; sourceTree = "<group>"; };
+               EEF17D5816E8E2EF00D7DC4D /* NJOutputMouseMove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJOutputMouseMove.h; path = Classes/NJOutputMouseMove.h; sourceTree = "<group>"; };
+               EEF17D5916E8E2EF00D7DC4D /* NJOutputMouseMove.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJOutputMouseMove.m; path = Classes/NJOutputMouseMove.m; sourceTree = "<group>"; };
+               EEF17D5A16E8E2EF00D7DC4D /* NJOutputMouseScroll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NJOutputMouseScroll.h; path = Classes/NJOutputMouseScroll.h; sourceTree = "<group>"; };
+               EEF17D5B16E8E2EF00D7DC4D /* NJOutputMouseScroll.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NJOutputMouseScroll.m; path = Classes/NJOutputMouseScroll.m; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
                080E96DDFE201D6D7F000001 /* Classes */ = {
                        isa = PBXGroup;
                        children = (
-                               D5617D290FAF579A00928B3A /* JSActionAnalog.h */,
-                               D5617D2A0FAF579A00928B3A /* JSActionAnalog.m */,
-                               D594BE840FAE6219007A85F2 /* Joystick.h */,
-                               D594BE850FAE6219007A85F2 /* Joystick.m */,
-                               D594BE880FAE64AD007A85F2 /* JSAction.h */,
-                               D594BE890FAE64AD007A85F2 /* JSAction.m */,
-                               D5617D240FAF579300928B3A /* JSActionHat.h */,
-                               D5617D250FAF579300928B3A /* JSActionHat.m */,
-                               D5617D180FAF568100928B3A /* JSActionButton.h */,
-                               D5617D190FAF568100928B3A /* JSActionButton.m */,
-                               D594BEF70FAE6FF2007A85F2 /* JoystickController.h */,
-                               D594BEF80FAE6FF2007A85F2 /* JoystickController.m */,
-                               D594BF810FAE9661007A85F2 /* ApplicationController.h */,
-                               D594BF820FAE9661007A85F2 /* ApplicationController.m */,
-                               D5617A340FAEB74000928B3A /* ConfigsController.h */,
-                               D5617A350FAEB74000928B3A /* ConfigsController.m */,
-                               D5617A370FAEBA1800928B3A /* Config.h */,
-                               D5617A380FAEBA1800928B3A /* Config.m */,
-                               D5F8096F0FB093400006A4DE /* TargetConfig.h */,
-                               D5F809700FB093400006A4DE /* TargetConfig.m */,
-                               D5617FD40FAFD06000928B3A /* Target.h */,
-                               D5617FD50FAFD06000928B3A /* Target.m */,
-                               D5617FD70FAFD1E600928B3A /* TargetKeyboard.h */,
-                               D5617FD80FAFD1E600928B3A /* TargetKeyboard.m */,
-                               D5617FE20FAFD7B000928B3A /* TargetController.h */,
-                               D5617FE30FAFD7B000928B3A /* TargetController.m */,
-                               D5617FE50FAFDB5800928B3A /* KeyInputTextView.h */,
-                               D5617FE60FAFDB5800928B3A /* KeyInputTextView.m */,
-                               8BD9B54115C230FE00929C5D /* TargetMouseMove.h */,
-                               8BD9B54215C230FE00929C5D /* TargetMouseMove.m */,
-                               8B7E476A15C314A200C588FA /* TargetMouseBtn.h */,
-                               8B7E476B15C314A200C588FA /* TargetMouseBtn.m */,
-                               8BEFAD9A15C46BFF00823AEC /* TargetMouseScroll.h */,
-                               8BEFAD9B15C46BFF00823AEC /* TargetMouseScroll.m */,
-                               8BEFAD9E15C476DC00823AEC /* TargetToggleMouseScope.h */,
-                               8BEFAD9F15C476DC00823AEC /* TargetToggleMouseScope.m */,
+                               EEF17D3916E8E2EF00D7DC4D /* EnjoyableApplicationDelegate.h */,
+                               EEF17D3A16E8E2EF00D7DC4D /* EnjoyableApplicationDelegate.m */,
+                               EEF17D3D16E8E2EF00D7DC4D /* NJDeviceController.h */,
+                               EEF17D3E16E8E2EF00D7DC4D /* NJDeviceController.m */,
+                               EEF17D4C16E8E2EF00D7DC4D /* NJMappingsController.h */,
+                               EEF17D4D16E8E2EF00D7DC4D /* NJMappingsController.m */,
+                               EEF17D5016E8E2EF00D7DC4D /* NJOutputController.h */,
+                               EEF17D5116E8E2EF00D7DC4D /* NJOutputController.m */,
+                               EEF17D4816E8E2EF00D7DC4D /* NJKeyInputField.h */,
+                               EEF17D4916E8E2EF00D7DC4D /* NJKeyInputField.m */,
+                               EEF17D4A16E8E2EF00D7DC4D /* NJMapping.h */,
+                               EEF17D4B16E8E2EF00D7DC4D /* NJMapping.m */,
+                               EEF17D4716E8E2EF00D7DC4D /* NJInputPathElement.h */,
+                               EEF17D3B16E8E2EF00D7DC4D /* NJDevice.h */,
+                               EEF17D3C16E8E2EF00D7DC4D /* NJDevice.m */,
+                               EEF17D3F16E8E2EF00D7DC4D /* NJInput.h */,
+                               EEF17D4016E8E2EF00D7DC4D /* NJInput.m */,
+                               EEF17D4116E8E2EF00D7DC4D /* NJInputAnalog.h */,
+                               EEF17D4216E8E2EF00D7DC4D /* NJInputAnalog.m */,
+                               EEF17D4316E8E2EF00D7DC4D /* NJInputButton.h */,
+                               EEF17D4416E8E2EF00D7DC4D /* NJInputButton.m */,
+                               EEF17D4516E8E2EF00D7DC4D /* NJInputHat.h */,
+                               EEF17D4616E8E2EF00D7DC4D /* NJInputHat.m */,
+                               EEF17D4E16E8E2EF00D7DC4D /* NJOutput.h */,
+                               EEF17D4F16E8E2EF00D7DC4D /* NJOutput.m */,
+                               EEF17D5216E8E2EF00D7DC4D /* NJOutputKeyPress.h */,
+                               EEF17D5316E8E2EF00D7DC4D /* NJOutputKeyPress.m */,
+                               EEF17D5416E8E2EF00D7DC4D /* NJOutputMapping.h */,
+                               EEF17D5516E8E2EF00D7DC4D /* NJOutputMapping.m */,
+                               EEF17D5616E8E2EF00D7DC4D /* NJOutputMouseButton.h */,
+                               EEF17D5716E8E2EF00D7DC4D /* NJOutputMouseButton.m */,
+                               EEF17D5816E8E2EF00D7DC4D /* NJOutputMouseMove.h */,
+                               EEF17D5916E8E2EF00D7DC4D /* NJOutputMouseMove.m */,
+                               EEF17D5A16E8E2EF00D7DC4D /* NJOutputMouseScroll.h */,
+                               EEF17D5B16E8E2EF00D7DC4D /* NJOutputMouseScroll.m */,
+                               EED4CE6C16ED692400C65AA8 /* NJMappingMenuController.h */,
+                               EED4CE6D16ED692400C65AA8 /* NJMappingMenuController.m */,
                        );
                        name = Classes;
                        sourceTree = "<group>";
                1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
                        isa = PBXGroup;
                        children = (
-                               D56180090FAFE8E400928B3A /* Carbon.framework */,
                                29B97324FDCFA39411CA2CEA /* AppKit.framework */,
-                               13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
                                29B97325FDCFA39411CA2CEA /* Foundation.framework */,
                        );
                        name = "Other Frameworks";
                29B97314FDCFA39411CA2CEA /* Enjoy */ = {
                        isa = PBXGroup;
                        children = (
+                               8D1107310486CEB800E47090 /* Info.plist */,
                                080E96DDFE201D6D7F000001 /* Classes */,
+                               EE1D5F8B16E403D600749C36 /* Categories */,
                                29B97315FDCFA39411CA2CEA /* Other Sources */,
                                29B97317FDCFA39411CA2CEA /* Resources */,
                                29B97323FDCFA39411CA2CEA /* Frameworks */,
                29B97315FDCFA39411CA2CEA /* Other Sources */ = {
                        isa = PBXGroup;
                        children = (
-                               32CA4F630368D1EE00C91783 /* Enjoyable_Prefix.pch */,
-                               29B97316FDCFA39411CA2CEA /* main.m */,
-                               EE1D7C9416E0ECCF00B000EB /* NSError+Description.h */,
-                               EE1D7C9516E0ECCF00B000EB /* NSError+Description.m */,
-                               EE1D7C9016E01E7000B000EB /* NSView+FirstResponder.h */,
-                               EE1D7C9116E01E7000B000EB /* NSView+FirstResponder.m */,
+                               EEF17D2316E8E2D800D7DC4D /* Enjoyable_Prefix.pch */,
+                               EEF17D2416E8E2D800D7DC4D /* main.m */,
+                               EEF17D2516E8E2D800D7DC4D /* NJEvents.h */,
                        );
                        name = "Other Sources";
                        sourceTree = "<group>";
                29B97317FDCFA39411CA2CEA /* Resources */ = {
                        isa = PBXGroup;
                        children = (
-                               D549CA4B0FBB441B00BC8203 /* Credits.rtf */,
-                               D5617A080FAEAF8300928B3A /* icon.icns */,
-                               8D1107310486CEB800E47090 /* Info.plist */,
-                               089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
-                               1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
+                               EE3D897D16EA817E00596D1F /* Status Menu Icon Disabled.png */,
+                               EE3D897E16EA817E00596D1F /* Status Menu Icon.png */,
+                               EE3D897B16EA806E00596D1F /* Status Menu Icon Disabled@2x.png */,
+                               EE3D897916EA7EFC00596D1F /* Status Menu Icon@2x.png */,
+                               EE6A122D16E8F46300EDBD32 /* Icon.icns */,
+                               EEF17D2116E8E24400D7DC4D /* Help */,
+                               EEF17D1B16E8E23A00D7DC4D /* InfoPlist.strings */,
+                               EEF17D1D16E8E23A00D7DC4D /* MainMenu.xib */,
+                               EEF17D1716E8E21A00D7DC4D /* com.yukkurigames.Enjoyable.mapping.icns */,
                        );
                        name = Resources;
                        sourceTree = "<group>";
                        name = Frameworks;
                        sourceTree = "<group>";
                };
+               EE1D5F8B16E403D600749C36 /* Categories */ = {
+                       isa = PBXGroup;
+                       children = (
+                               EEF17D2716E8E2E100D7DC4D /* NSError+Description.h */,
+                               EEF17D2816E8E2E100D7DC4D /* NSError+Description.m */,
+                               EEF17D2916E8E2E100D7DC4D /* NSFileManager+UniqueNames.h */,
+                               EEF17D2A16E8E2E100D7DC4D /* NSFileManager+UniqueNames.m */,
+                               EEF17D2B16E8E2E100D7DC4D /* NSMenu+RepresentedObjectAccessors.h */,
+                               EEF17D2C16E8E2E100D7DC4D /* NSMenu+RepresentedObjectAccessors.m */,
+                               EEF17D2D16E8E2E100D7DC4D /* NSMutableArray+MoveObject.h */,
+                               EEF17D2E16E8E2E100D7DC4D /* NSMutableArray+MoveObject.m */,
+                               EEF17D2F16E8E2E100D7DC4D /* NSString+FixFilename.h */,
+                               EEF17D3016E8E2E100D7DC4D /* NSString+FixFilename.m */,
+                               EEF17D3116E8E2E100D7DC4D /* NSView+FirstResponder.h */,
+                               EEF17D3216E8E2E100D7DC4D /* NSView+FirstResponder.m */,
+                               EEE73B1416EA42E5009D9D99 /* NSRunningApplication+NJPossibleNames.h */,
+                               EEE73B1516EA42E5009D9D99 /* NSRunningApplication+NJPossibleNames.m */,
+                       );
+                       name = Categories;
+                       sourceTree = "<group>";
+               };
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
                        isa = PBXNativeTarget;
                        buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Enjoyable" */;
                        buildPhases = (
+                               EE3D898416EAAE1600596D1F /* Increment build number */,
+                               EED7E81616E7B547004A0BA4 /* Generate Help Index */,
                                8D1107290486CEB800E47090 /* Resources */,
                                8D11072C0486CEB800E47090 /* Sources */,
                                8D11072E0486CEB800E47090 /* Frameworks */,
                        isa = PBXResourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
-                               1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
-                               D5F80A9D0FB0A2FF0006A4DE /* icon.icns in Resources */,
-                               D549CA4C0FBB441B00BC8203 /* Credits.rtf in Resources */,
+                               EEF17D1916E8E21A00D7DC4D /* com.yukkurigames.Enjoyable.mapping.icns in Resources */,
+                               EEF17D1F16E8E23A00D7DC4D /* InfoPlist.strings in Resources */,
+                               EEF17D2016E8E23A00D7DC4D /* MainMenu.xib in Resources */,
+                               EEF17D2216E8E24400D7DC4D /* Help in Resources */,
+                               EE6A122E16E8F46300EDBD32 /* Icon.icns in Resources */,
+                               EE3D897A16EA7EFC00596D1F /* Status Menu Icon@2x.png in Resources */,
+                               EE3D897C16EA806E00596D1F /* Status Menu Icon Disabled@2x.png in Resources */,
+                               EE3D897F16EA817E00596D1F /* Status Menu Icon Disabled.png in Resources */,
+                               EE3D898016EA817E00596D1F /* Status Menu Icon.png in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
 /* End PBXResourcesBuildPhase section */
 
+/* Begin PBXShellScriptBuildPhase section */
+               EE3D898416EAAE1600596D1F /* Increment build number */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       name = "Increment build number";
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "#!/bin/sh\n\nplist=\"${PROJECT_DIR}/${INFOPLIST_FILE}\"\ndir=\"$(dirname \"$plist\")\"\n\n# Only increment the build number if source files have changed\nif [ -n \"$(find \"$dir\" \\! -path \"*xcuserdata*\" \\! -path \"*.git*\" \\! -name .DS_Store \\! -path \"*Website*\" -newer \"$plist\")\" ]; then\n    buildnum=$(/usr/libexec/Plistbuddy -c \"Print CFBundleVersion\" \"$plist\")\n    if [ -z \"$buildnum\" ]; then\n        echo \"No build number in $plist\"\n        exit 2\n    fi\n    buildnum=$(expr $buildnum + 1)\n    /usr/libexec/Plistbuddy -c \"Set CFBundleVersion $buildnum\" \"$plist\"\n    echo \"Incremented build number to $buildnum\"\nelse\n    echo \"Not incrementing build number as source files have not changed\"\nfi\n";
+               };
+               EED7E81616E7B547004A0BA4 /* Generate Help Index */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       name = "Generate Help Index";
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "cd ${SOURCE_ROOT}/Resources/Help/Contents/Resources/English.lproj\nmake\n";
+               };
+/* End PBXShellScriptBuildPhase section */
+
 /* Begin PBXSourcesBuildPhase section */
                8D11072C0486CEB800E47090 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               8D11072D0486CEB800E47090 /* main.m in Sources */,
-                               D594BE860FAE6219007A85F2 /* Joystick.m in Sources */,
-                               D594BE8A0FAE64AD007A85F2 /* JSAction.m in Sources */,
-                               D594BEF90FAE6FF2007A85F2 /* JoystickController.m in Sources */,
-                               D594BF830FAE9661007A85F2 /* ApplicationController.m in Sources */,
-                               D5617A360FAEB74000928B3A /* ConfigsController.m in Sources */,
-                               D5617A390FAEBA1800928B3A /* Config.m in Sources */,
-                               D5617D1A0FAF568100928B3A /* JSActionButton.m in Sources */,
-                               D5617D260FAF579300928B3A /* JSActionHat.m in Sources */,
-                               D5617D2B0FAF579A00928B3A /* JSActionAnalog.m in Sources */,
-                               D5617FD60FAFD06000928B3A /* Target.m in Sources */,
-                               D5617FD90FAFD1E600928B3A /* TargetKeyboard.m in Sources */,
-                               D5617FE40FAFD7B000928B3A /* TargetController.m in Sources */,
-                               D5617FE70FAFDB5800928B3A /* KeyInputTextView.m in Sources */,
-                               D5F809710FB093400006A4DE /* TargetConfig.m in Sources */,
-                               8BD9B54315C230FF00929C5D /* TargetMouseMove.m in Sources */,
-                               8B7E476C15C314A200C588FA /* TargetMouseBtn.m in Sources */,
-                               8BEFAD9C15C46BFF00823AEC /* TargetMouseScroll.m in Sources */,
-                               8BEFADA015C476DC00823AEC /* TargetToggleMouseScope.m in Sources */,
-                               EE1D7C9216E01E7000B000EB /* NSView+FirstResponder.m in Sources */,
-                               EE1D7C9616E0ECCF00B000EB /* NSError+Description.m in Sources */,
+                               EEF17D2616E8E2D800D7DC4D /* main.m in Sources */,
+                               EEF17D3316E8E2E100D7DC4D /* NSError+Description.m in Sources */,
+                               EEF17D3416E8E2E100D7DC4D /* NSFileManager+UniqueNames.m in Sources */,
+                               EEF17D3516E8E2E100D7DC4D /* NSMenu+RepresentedObjectAccessors.m in Sources */,
+                               EEF17D3616E8E2E100D7DC4D /* NSMutableArray+MoveObject.m in Sources */,
+                               EEF17D3716E8E2E100D7DC4D /* NSString+FixFilename.m in Sources */,
+                               EEF17D3816E8E2E100D7DC4D /* NSView+FirstResponder.m in Sources */,
+                               EEF17D5C16E8E2EF00D7DC4D /* EnjoyableApplicationDelegate.m in Sources */,
+                               EEF17D5D16E8E2EF00D7DC4D /* NJDevice.m in Sources */,
+                               EEF17D5E16E8E2EF00D7DC4D /* NJDeviceController.m in Sources */,
+                               EEF17D5F16E8E2EF00D7DC4D /* NJInput.m in Sources */,
+                               EEF17D6016E8E2EF00D7DC4D /* NJInputAnalog.m in Sources */,
+                               EEF17D6116E8E2EF00D7DC4D /* NJInputButton.m in Sources */,
+                               EEF17D6216E8E2EF00D7DC4D /* NJInputHat.m in Sources */,
+                               EEF17D6316E8E2EF00D7DC4D /* NJKeyInputField.m in Sources */,
+                               EEF17D6416E8E2EF00D7DC4D /* NJMapping.m in Sources */,
+                               EEF17D6516E8E2EF00D7DC4D /* NJMappingsController.m in Sources */,
+                               EEF17D6616E8E2EF00D7DC4D /* NJOutput.m in Sources */,
+                               EEF17D6716E8E2EF00D7DC4D /* NJOutputController.m in Sources */,
+                               EEF17D6816E8E2EF00D7DC4D /* NJOutputKeyPress.m in Sources */,
+                               EEF17D6916E8E2EF00D7DC4D /* NJOutputMapping.m in Sources */,
+                               EEF17D6A16E8E2EF00D7DC4D /* NJOutputMouseButton.m in Sources */,
+                               EEF17D6B16E8E2EF00D7DC4D /* NJOutputMouseMove.m in Sources */,
+                               EEF17D6C16E8E2EF00D7DC4D /* NJOutputMouseScroll.m in Sources */,
+                               EEE73B1616EA42E5009D9D99 /* NSRunningApplication+NJPossibleNames.m in Sources */,
+                               EED4CE6E16ED692400C65AA8 /* NJMappingMenuController.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXVariantGroup section */
-               089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
+               EEF17D1B16E8E23A00D7DC4D /* InfoPlist.strings */ = {
                        isa = PBXVariantGroup;
                        children = (
-                               089C165DFE840E0CC02AAC07 /* English */,
+                               EEF17D1C16E8E23A00D7DC4D /* English */,
                        );
                        name = InfoPlist.strings;
                        sourceTree = "<group>";
                };
-               1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
+               EEF17D1D16E8E23A00D7DC4D /* MainMenu.xib */ = {
                        isa = PBXVariantGroup;
                        children = (
-                               1DDD58150DA1D0A300B32029 /* English */,
+                               EEF17D1E16E8E23A00D7DC4D /* English */,
                        );
                        name = MainMenu.xib;
                        sourceTree = "<group>";
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               ARCHS = "$(ARCHS_STANDARD_64_BIT)";
                                CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_IMPLICIT_SIGN_CONVERSION = NO;
                                COMBINE_HIDPI_IMAGES = YES;
                                COPY_PHASE_STRIP = NO;
-                               FRAMEWORK_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       "\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Frameworks\"",
-                               );
+                               GCC_C_LANGUAGE_STANDARD = c99;
                                GCC_DYNAMIC_NO_PIC = NO;
                                GCC_MODEL_TUNING = G5;
                                GCC_OPTIMIZATION_LEVEL = 0;
                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
-                               GCC_PREFIX_HEADER = Enjoyable_Prefix.pch;
+                               GCC_PREFIX_HEADER = "Other Sources/Enjoyable_Prefix.pch";
+                               GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
+                               GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
                                INFOPLIST_FILE = Info.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
                                MACOSX_DEPLOYMENT_TARGET = 10.7;
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               ARCHS = "$(ARCHS_STANDARD_64_BIT)";
                                CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_IMPLICIT_SIGN_CONVERSION = NO;
                                COMBINE_HIDPI_IMAGES = YES;
                                DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-                               FRAMEWORK_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       "\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Frameworks\"",
-                               );
+                               GCC_C_LANGUAGE_STANDARD = c99;
                                GCC_MODEL_TUNING = G5;
                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
-                               GCC_PREFIX_HEADER = Enjoyable_Prefix.pch;
+                               GCC_PREFIX_HEADER = "Other Sources/Enjoyable_Prefix.pch";
+                               GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
+                               GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
                                INFOPLIST_FILE = Info.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
                                MACOSX_DEPLOYMENT_TARGET = 10.7;
                C01FCF4F08A954540054247B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               ARCHS = "$(ARCHS_STANDARD_64_BIT)";
                                CLANG_ENABLE_OBJC_ARC = YES;
                                CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
                                CLANG_WARN_ENUM_CONVERSION = YES;
                                CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
                                CLANG_WARN_OBJC_RECEIVER_WEAK = NO;
                                CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
-                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = NO;
                                GCC_C_LANGUAGE_STANDARD = c99;
                                GCC_OPTIMIZATION_LEVEL = 0;
                                GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
                                GCC_WARN_PEDANTIC = YES;
                                GCC_WARN_SHADOW = YES;
                                GCC_WARN_SIGN_COMPARE = YES;
-                               GCC_WARN_STRICT_SELECTOR_MATCH = YES;
+                               GCC_WARN_STRICT_SELECTOR_MATCH = NO;
                                GCC_WARN_UNDECLARED_SELECTOR = YES;
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
                                MACOSX_DEPLOYMENT_TARGET = 10.7;
                                ONLY_ACTIVE_ARCH = YES;
+                               RUN_CLANG_STATIC_ANALYZER = YES;
                                SDKROOT = macosx;
+                               VALID_ARCHS = x86_64;
                        };
                        name = Debug;
                };
                C01FCF5008A954540054247B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               ARCHS = "$(ARCHS_STANDARD_64_BIT)";
                                CLANG_ENABLE_OBJC_ARC = YES;
                                CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
                                CLANG_WARN_ENUM_CONVERSION = YES;
                                CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
                                CLANG_WARN_OBJC_RECEIVER_WEAK = NO;
                                CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
-                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = NO;
                                GCC_C_LANGUAGE_STANDARD = c99;
                                GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
                                GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
                                GCC_WARN_PEDANTIC = YES;
                                GCC_WARN_SHADOW = YES;
                                GCC_WARN_SIGN_COMPARE = YES;
-                               GCC_WARN_STRICT_SELECTOR_MATCH = YES;
+                               GCC_WARN_STRICT_SELECTOR_MATCH = NO;
                                GCC_WARN_UNDECLARED_SELECTOR = YES;
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_LABEL = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
                                MACOSX_DEPLOYMENT_TARGET = 10.7;
+                               RUN_CLANG_STATIC_ANALYZER = YES;
                                SDKROOT = macosx;
+                               VALID_ARCHS = x86_64;
                        };
                        name = Release;
                };