diff --git a/Categories/NSRunningApplication+NJPossibleNames.m b/Categories/NSRunningApplication+NJPossibleNames.m index 5957a50..ded7daf 100644 --- a/Categories/NSRunningApplication+NJPossibleNames.m +++ b/Categories/NSRunningApplication+NJPossibleNames.m @@ -11,7 +11,7 @@ @implementation NSRunningApplication (NJPossibleNames) - (NSArray *)windowTitles { - static CGWindowListOption s_OPTIONS = (kCGWindowListOptionOnScreenOnly + static CGWindowListOption s_OPTIONS = (CGWindowListOption)(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements); NSMutableArray *titles = [[NSMutableArray alloc] initWithCapacity:4]; NSArray *windows = CFBridgingRelease(CGWindowListCopyWindowInfo(s_OPTIONS, kCGNullWindowID)); diff --git a/Classes/EnjoyableApplicationDelegate.m b/Classes/EnjoyableApplicationDelegate.m index 017926a..63c767c 100644 --- a/Classes/EnjoyableApplicationDelegate.m +++ b/Classes/EnjoyableApplicationDelegate.m @@ -58,6 +58,8 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification { [self transformIntoElement:nil]; else [self.window makeKeyAndOrderFront:nil]; + // Auto activate mapping? YES / NO + // self.ic.simulatingEvents = YES; } - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication @@ -252,12 +254,13 @@ - (void)mappingConflictDidResolve:(NSAlert *)alert NJMapping *newMapping = userInfo[@"new mapping"]; NSInteger idx = [userInfo[@"index"] intValue]; [alert.window orderOut:nil]; + switch (returnCode) { - case NSAlertFirstButtonReturn: // Merge + case 1000: // case NSAlertFirstButtonReturn -> Merge [self.ic mergeMapping:newMapping intoMapping:oldMapping]; [self.ic activateMapping:oldMapping]; break; - case NSAlertThirdButtonReturn: // New Mapping + case 1002: // case NSAlertFirstButtonReturn -> New Mapping [self.mvc beginUpdates]; [self.ic addMapping:newMapping]; [self.mvc addedMappingAtIndex:idx startEditing:YES]; diff --git a/Classes/NJInputAnalog.m b/Classes/NJInputAnalog.m index 18a848b..05bad51 100644 --- a/Classes/NJInputAnalog.m +++ b/Classes/NJInputAnalog.m @@ -50,10 +50,13 @@ - (id)findSubInputForValue:(IOHIDValueRef)value { - (void)notifyEvent:(IOHIDValueRef)value { float magnitude = self.magnitude = normalize(IOHIDValueGetIntegerValue(value), _rawMin, _rawMax); + if (magnitude > -DEAD_ZONE && magnitude < DEAD_ZONE) { + magnitude = 0; + } [self.children[0] setMagnitude:fabsf(MIN(magnitude, 0))]; [self.children[1] setMagnitude:fabsf(MAX(magnitude, 0))]; - [self.children[0] setActive:magnitude < -DEAD_ZONE]; - [self.children[1] setActive:magnitude > DEAD_ZONE]; + [self.children[0] setActive:YES]; + [self.children[1] setActive:YES]; } @end diff --git a/Classes/NJInputController.m b/Classes/NJInputController.m index 84c8b69..6188c06 100644 --- a/Classes/NJInputController.m +++ b/Classes/NJInputController.m @@ -126,7 +126,7 @@ - (void)runOutputForValue:(IOHIDValueRef)value { NJOutput *output = self.currentMapping[subInput]; output.magnitude = subInput.magnitude; output.running = subInput.active; - if ((output.running || output.magnitude) && output.isContinuous) + if ((output.running || output.magnitude != 0) && output.isContinuous) [self addRunningOutput:output]; } } diff --git a/Classes/NJKeyInputField.m b/Classes/NJKeyInputField.m index 3cdbd7c..d56f144 100644 --- a/Classes/NJKeyInputField.m +++ b/Classes/NJKeyInputField.m @@ -8,10 +8,11 @@ #import "NJKeyInputField.h" #include - // Only used for kVK_... codes. +// Only used for kVK_... codes. enum { - kVK_RightCommand = kVK_Command - 1, + // No need to redefine this: + // kVK_RightCommand = kVK_Command - 1, kVK_Insert = 0x72, kVK_Power = 0x7f, kVK_ApplicationMenu = 0x6e, diff --git a/Classes/NJOutputMouseButton.m b/Classes/NJOutputMouseButton.m index 068a5dd..92dc552 100644 --- a/Classes/NJOutputMouseButton.m +++ b/Classes/NJOutputMouseButton.m @@ -15,7 +15,7 @@ @implementation NJOutputMouseButton { + (NSTimeInterval)doubleClickInterval { static NSTimeInterval s_doubleClickThreshold; - if (!s_doubleClickThreshold) { + if (s_doubleClickThreshold == 0) { s_doubleClickThreshold = [[NSUserDefaults.standardUserDefaults objectForKey:@"com.apple.mouse.doubleClickThreshold"] floatValue]; if (s_doubleClickThreshold <= 0) diff --git a/Classes/NJOutputMouseMove.m b/Classes/NJOutputMouseMove.m index 0918593..dbb0bf2 100644 --- a/Classes/NJOutputMouseMove.m +++ b/Classes/NJOutputMouseMove.m @@ -26,7 +26,7 @@ + (NJOutput *)outputWithSerialization:(NSDictionary *)serialization { NJOutputMouseMove *output = [[NJOutputMouseMove alloc] init]; output.axis = [serialization[@"axis"] intValue]; output.speed = [serialization[@"speed"] floatValue]; - if (!output.speed) + if (output.speed == 0) output.speed = 10; return output; } diff --git a/Classes/NJOutputViewController.m b/Classes/NJOutputViewController.m index 8d0f817..1c5bb72 100644 --- a/Classes/NJOutputViewController.m +++ b/Classes/NJOutputViewController.m @@ -59,7 +59,7 @@ - (void)cleanUpInterface { } else { if (self.mouseDirSelect.selectedSegment == -1) self.mouseDirSelect.selectedSegment = 0; - if (!self.mouseSpeedSlider.floatValue) + if (self.mouseSpeedSlider.floatValue == 0) self.mouseSpeedSlider.floatValue = 10; } diff --git a/Enjoyable.xcodeproj/project.pbxproj b/Enjoyable.xcodeproj/project.pbxproj index 4838cbb..3a213e8 100644 --- a/Enjoyable.xcodeproj/project.pbxproj +++ b/Enjoyable.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + 93C857021FA515BF000F87D8 /* Help in Resources */ = {isa = PBXBuildFile; fileRef = EEF17D2116E8E24400D7DC4D /* Help */; }; D594BF000FAE7397007A85F2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D594BEFF0FAE7397007A85F2 /* IOKit.framework */; }; EE1F3CEA16EF4182008C6426 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = EE1F3CE816EF4182008C6426 /* Localizable.strings */; }; EE35A6E417BBCC9500413995 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE35A6E317BBCC9500413995 /* CoreVideo.framework */; }; @@ -28,7 +29,6 @@ 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 */; }; @@ -410,9 +410,9 @@ 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 */, + 93C857021FA515BF000F87D8 /* Help 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 */, @@ -644,6 +644,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = ""; + FOLDINGINTEGERCONSTANT = YES; GCC_C_LANGUAGE_STANDARD = c99; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; @@ -664,6 +665,7 @@ GCC_WARN_UNUSED_LABEL = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 10.7; + NEW_SETTING = ""; RUN_CLANG_STATIC_ANALYZER = YES; SDKROOT = macosx; VALID_ARCHS = x86_64; diff --git a/Info.plist b/Info.plist index ca4cada..a5366c0 100644 --- a/Info.plist +++ b/Info.plist @@ -42,15 +42,15 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.2 + 1.2.1 CFBundleSignature ???? CFBundleVersion - 649 + 663 LSApplicationCategoryType public.app-category.utilities NSHumanReadableCopyright - Copyright Joe Wreschnig, Sam McCall, Yifeng Huang + Copyright Joe Wreschnig, Sam McCall, Yifeng Huang, Marcelo Novaes NSMainNibFile MainMenu NSPrincipalClass diff --git a/README.md b/README.md index a54f3ef..2a138aa 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ -Enjoyable is an application for Mac OS X which allows you to use -controller inputs like a mouse or keyboard. +# Enjoyable - macOS controller mapping tool + +Enjoyable is an application for macOS (formerly Mac OS X) which +allows you to use controller inputs like a mouse or keyboard. If you've ever played a video game which only supports mouse and keyboard input but you want to use a joystick or gamepad, then Enjoyable will help you do that. -Enjoyable supports +Enjoyable supports: * Mapping gamepad and joystick buttons to keyboard and mouse actions * Fine control over mouse movement and scrolling using analog axis @@ -16,7 +18,9 @@ Enjoyable supports Enjoyable is free software written by Joe Wreschnig and is based on the Enjoy codebase written by [Yifeng Huang](http://nongraphical.com) -and [Sam McCall](http://abstractable.net/enjoy/). +and [Sam McCall](http://abstractable.net/enjoy/). Further changes and +improvements made by Joe Wreschnig and now +[Marcelo Novaes](http://mnovaes.com). ## How to Use @@ -32,9 +36,12 @@ manual available in Help Viewer via `⌘?`. ## License -Copyright 2013 Joe Wreschnig - 2012 Yifeng Huang - 2009 Sam McCall, University of Otago +Copyright + +- 2017 Marcelo Novaes +- 2013 Joe Wreschnig +- 2012 Yifeng Huang +- 2009 Sam McCall, University of Otago Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/Resources/English.lproj/MainMenu.xib b/Resources/English.lproj/MainMenu.xib index 1c95840..a7ef96c 100644 --- a/Resources/English.lproj/MainMenu.xib +++ b/Resources/English.lproj/MainMenu.xib @@ -1,4028 +1,671 @@ - - - 1070 - 14A388b - 6250 - 1343.14 - 755.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 6250 - - - NSBox - NSButton - NSButtonCell - NSCustomObject - NSCustomView - NSMatrix - NSMenu - NSMenuItem - NSOutlineView - NSPopUpButton - NSPopUpButtonCell - NSPopover - NSScrollView - NSScroller - NSSegmentedCell - NSSegmentedControl - NSSlider - NSSliderCell - NSTableColumn - NSTableView - NSTextField - NSTextFieldCell - NSToolbar - NSToolbarFlexibleSpaceItem - NSToolbarItem - NSView - NSWindowTemplate - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - - - Enjoyable - CA - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - - Enjoyable - - - - About Enjoyable - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - - Services - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide Enjoyable - h - 1048576 - 2147483647 - - - - - - Hide From Dock - w - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit Enjoyable - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - Mappings - - 1048576 - 2147483647 - - - submenuAction: - - - Mappings - - - - Enable - r - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Show List - l - 1048576 - 2147483647 - - - - - - New… - n - 1048576 - 2147483647 - - - - - - Import… - o - 1048576 - 2147483647 - - - - - - Export… - s - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - 1 - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - - Window - - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 2147483647 - - - submenuAction: - - - Help - - - - Enjoyable Help - ? - 1048576 - 2147483647 - - - - - _NSHelpMenu - - - - _NSMainMenu - - - 15 - 2 - {{355, 59}, {664, 323}} - 1685585920 - Enjoyable - NSWindow - - - AC1F5C48-4C16-4C9D-9779-B783AF35E2E1 - - - YES - YES - NO - YES - 2 - 1 - - - - 2CB21E35-9CF1-4C67-9670-31139C914D10 - - Enabled - Enabled - - - - 268 - {{7, 14}, {36, 25}} - _NS:9 - YES - - 67108864 - 134217728 - - - YES - 13 - 1044 - - _NS:9 - - -1228128256 - 163 - - NSImage - NSRightFacingTriangleTemplate - - - - 200 - 25 - - NO - - - - - {36, 25} - {36, 25} - YES - YES - 0 - YES - 0 - - - - 4AC66688-76E8-47ED-AC0A-7462220A4019 - - Mapping Selector - Mapping Selector - - - - 268 - {{0, 14}, {140, 25}} - _NS:9 - YES - - 67108864 - 134217728 - (default) - - _NS:9 - - 918306816 - 163 - - NSImage - NSListViewTemplate - - - - 400 - 75 - - NO - - - - - {13, 25} - {141, 25} - YES - NO - 0 - YES - 0 - - - NSToolbarFlexibleSpaceItem - - Flexible Space - - - - - - {1, 5} - {20000, 32} - YES - YES - -1 - YES - 0 - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - {664, 323} - - - 256 - - - - 275 - - - - -2147483374 - {{20, 20}, {194, 283}} - - - _NS:22 - YES - - 603979776 - 134217728 - SW5wdXQgaXMgY3VycmVudGx5IGRpc2FibGVkLgoKU3dpdGNoIGJhY2sgdG8gcmUtZW5hYmxlIGlucHV0 -Lg - - YES - 14 - 2072 - - _NS:22 - - -2041823232 - 134 - - - 400 - 75 - - NO - - - - 274 - {{20, 20}, {194, 283}} - - - _NS:22 - YES - - 603979776 - 134217728 - Tm8gaW5wdXQgZGV2aWNlcyB3ZXJlIGZvdW5kLgoKQ29ubmVjdCBhIGRldmljZSB0byBiZWdpbiBtYXBw -aW5nLg - - YES - 14 - 2072 - - _NS:22 - - -2041823232 - 134 - - - 400 - 75 - - NO - - - - 274 - - - - 2304 - - - - 256 - - {232, 321} - - - YES - NO - YES - - - 256 - {{474, 0}, {16, 17}} - - - - 229 - 16 - 1000 - - 75497536 - 2048 - - - YES - 11 - 3100 - - - 3 - MC4zMzMzMzI5OQA - - - 6 - System - headerTextColor - - 3 - MAA - - - - - 67108928 - 2624 - Text Cell - - - - 6 - System - controlBackgroundColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - - - 1 - YES - - - - 3 - 2 - - 3 - MQA - - - 6 - System - gridColor - - 3 - MC41AA - - - 22 - 306184192 - - - 4 - 15 - 0 - YES - 0 - 1 - -1 - NO - - - {{1, 1}, {232, 321}} - - - - - 4 - YES - - - - -2147483392 - {{1, 1}, {8, 298}} - - - NO - _doScroller: - - - _doScroller: - 0.4210526 - - - - -2147483392 - {{-100, -100}, {473, 15}} - - - NO - _doScroller: - - 1 - - _doScroller: - 0.99789030000000001 - - - {234, 323} - - - 150034 - - - - QSAAAEEgAABBwAAAQcAAAA - 0.25 - 4 - 1 - - - {234, 323} - - - _NS:9 - NSView - - - - 285 - - - - 268 - {{197, 157}, {193, 21}} - - - _NS:9 - YES - - 603979776 - 33554432 - Unknown Mapping - - _NS:9 - - -2046672896 - 129 - - - 200 - 25 - - NO - - - - 265 - {{189, 117}, {224, 20}} - - - _NS:9 - YES - - 75497472 - 131072 - - _NS:9 - - - - 55 - - 0 - - - 55 - - 1 - 0 - - - 53 - - 0 - - - 52 - - 0 - - - 1 - - NO - - - - 268 - {{343, 31}, {70, 18}} - - _NS:9 - YES - - 67108864 - 268435456 - Smooth - - _NS:9 - - 1211912448 - 2 - - NSImage - NSSwitch - - - NSSwitch - - - - 200 - 25 - - NO - - - - 265 - {{189, 33}, {150, 20}} - - - _NS:9 - YES - - 75497472 - 131072 - - _NS:9 - - - - 36 - - -2 - 0 - - - 35 - - 2 - 0 - - - 35 - - -1 - 0 - - - 35 - - 1 - 0 - - - 1 - - NO - - - - 265 - {{191, 24}, {146, 16}} - - - _NS:9 - YES - - -2080374784 - 262144 - - _NS:9 - - 29 - 1 - 15 - 0.0 - 15 - 1 - YES - NO - - NO - - - - 265 - {{189, 70}, {224, 24}} - - - _NS:9 - YES - - 75497472 - 0 - - _NS:9 - - - - 55 - Left - 0 - - - 60 - Center - 2 - 0 - - - 55 - Right - 1 - 0 - - - 22 - 4 - 3 - 0 - - - 22 - 5 - 4 - 0 - - - 1 - - NO - - - - 265 - {{191, 108}, {220, 16}} - - - _NS:9 - YES - - 67108864 - 262144 - - _NS:9 - - 20 - 1 - 10 - 0.0 - 20 - 1 - YES - NO - - NO - - - - 265 - {{191, 196}, {220, 23}} - - - _NS:9 - NJKeyInputField - - - - 265 - {{188, 153}, {226, 26}} - - - YES - - -2076180416 - 2048 - - - 109199360 - 129 - - - 400 - 75 - - YES - - OtherViews - - - -1 - 1 - YES - YES - 2 - - NO - - - - 268 - {{24, 20}, {163, 250}} - - - NO - 6 - 1 - - - 603979776 - 0 - Do nothing - - - 1 - 1211912448 - 0 - - NSImage - NSRadioButton - - - NSRadioButton - - - - 200 - 25 - - - 603979776 - 0 - Press a key: - - - 1211912448 - 0 - - - - 400 - 75 - - - 603979776 - 0 - Switch to mapping: - - - 1211912448 - 0 - - - - 400 - 75 - - - 603979776 - 0 - Move the mouse: - - - 1211912448 - 0 - - - - 400 - 75 - - - 603979776 - 0 - Press a mouse button: - - - 1211912448 - 0 - - - - 400 - 75 - - - 603979776 - 0 - Scroll the mouse: - - - 1211912448 - 0 - - - - 400 - 75 - - - {163, 40} - {4, 2} - 1353195520 - NSActionCell - - 603979776 - 0 - Radio - - 1211912448 - 0 - - - - 400 - 75 - - -1 - -1 - - 6 - System - controlColor - - - - - - - - 266 - {{9, 286}, {412, 17}} - - - YES - - 67108928 - 138414656 - - - YES - 13 - 2072 - - No input selected - - - - - NO - 1 - - - - 10 - {{12, 276}, {406, 5}} - - - {0, 0} - - 67108864 - 0 - Box - - - 6 - System - textBackgroundColor - - - - 6 - System - labelColor - - - - 3 - 2 - 0 - NO - - - {{233, 0}, {431, 323}} - - - _NS:9 - NSView - - - {664, 323} - - - {{0, 0}, {1440, 877}} - {664, 378} - {10000000000000, 10000000000000} - Enjoyable - YES - - - - - - - Enable - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Show Enjoyable - - 2147483647 - - - - - - Quit Enjoyable - - 2147483647 - - - - - - - - - - - Enable - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - - EnjoyableApplicationDelegate - - - NJInputController - - - NJOutputViewController - - - NJDeviceViewController - - - NJMappingsViewController - - - - 0 - 1 - 0.0 - 0.0 - YES - - - - 256 - - - - 274 - - - - 2304 - - - - 256 - {198, 198} - - - YES - NO - YES - - - 256 - {{306, 0}, {16, 17}} - - - - 190 - 190 - 190 - - 75497536 - 2048 - - - - 3 - MC4zMzMzMzI5OQA - - - - - 337641536 - 2048 - Text Cell - - - - - - YES - - - - 3 - 2 - - - 22 - 44072960 - - - 1 - 15 - 0 - NO - 0 - 1 - -1 - - - {{1, 1}, {198, 198}} - - - - - 4 - YES - - - - -2147483392 - {{306, 1}, {15, 403}} - - - NO - _doScroller: - - - _doScroller: - 0.99766359999999998 - - - - -2147483392 - {{-100, -100}, {366, 16}} - - - NO - _doScroller: - - 1 - - _doScroller: - 0.98123324396782841 - - - {{0, 20}, {200, 200}} - - - 150034 - - - - QSAAAEEgAABBwAAAQcAAAA - 0.25 - 4 - 1 - - - - 268 - {{66, -1}, {68, 23}} - - - _NS:22 - YES - - -2080374784 - 168034304 - - - YES - 9 - 3614 - - _NS:22 - - 1221349376 - 162 - - - 400 - 75 - - NO - - - - 292 - {{0, -1}, {34, 23}} - - - YES - - 67108864 - 134479872 - - - - -2033958912 - 268435618 - - NSImage - NSAddTemplate - - - n - 400 - 75 - - NO - - - - 292 - {{166, -1}, {34, 23}} - - YES - - 67108864 - 134479872 - - - - -2033434624 - 268435618 - - - 400 - 75 - - NO - - - - 292 - {{133, -1}, {34, 23}} - - - YES - - 67108864 - 134479872 - - - - -2033434624 - 268435618 - - - 400 - 75 - - NO - - - - 292 - {{33, -1}, {34, 23}} - - - YES - - 67108864 - 134479872 - - - - -2033958912 - 268435618 - - NSImage - NSRemoveTemplate - - - CA - 400 - 75 - - NO - - - {200, 220} - - NSView - - - NJMappingMenuController - - - NJMappingMenuController - - - NJMappingMenuController - - - - - - - terminate: - - - - 449 - - - - delegate - - - - 483 - - - - dockMenu - - - - 732 - - - - showHelp: - - - - 870 - - - - terminate: - - - - 937 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - performMiniaturize: - - - - 37 - - - - performZoom: - - - - 240 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - performClose: - - - - 941 - - - - delegate - - - - 977 - - - - dataSource - - - - 1001 - - - - delegate - - - - 1002 - - - - delegate - - - - 1029 - - - - window - - - - 865 - - - - statusItemMenu - - - - 928 - - - - dockMenu - - - - 930 - - - - restoreToForeground: - - - - 939 - - - - exportMappingClicked: - - - - 1015 - - - - importMappingClicked: - - - - 1016 - - - - mvc - - - - 1024 - - - - dvc - - - - 1025 - - - - simulatingEventsChanged: - - - - 1030 - - - - simulatingEventsButton - - - - 1031 - - - - ic - - - - 1036 - - - - oc - - - - 1037 - - - - performClick: - - - - 1012 - - - - dataSource - - - - 990 - - - - delegate - - - - 991 - - - - mouseDirSelect - - - - 756 - - - - mappingPopup - - - - 823 - - - - scrollSpeedSlider - - - - 891 - - - - keyInput - - - - 781 - - - - mouseSpeedChanged: - - - - 885 - - - - radioButtons - - - - 692 - - - - mouseSpeedSlider - - - - 886 - - - - scrollSpeedChanged: - - - - 890 - - - - scrollDirSelect - - - - 751 - - - - mouseBtnSelect - - - - 746 - - - - title - - - - 709 - - - - scrollTypeChanged: - - - - 948 - - - - smoothCheck - - - - 949 - - - - unknownMapping - - - - 1022 - - - - delegate - - - - 1035 - - - - scrollDirectionChanged: - - - - 1038 - - - - mouseButtonChanged: - - - - 1039 - - - - mouseDirectionChanged: - - - - 1040 - - - - outputTypeChanged: - - - - 1041 - - - - delegate - - - - 966 - - - - performClick: - - - - 871 - - - - contentViewController - - - - 996 - - - - delegate - - - - 1004 - - - - performClick: - - - - 880 - - - - performClick: - - - - 932 - - - - performClick: - - - - 933 - - - - menu - - - - 952 - - - - delegate - - - - 956 - - - - eventSimulationToggle - - - - 980 - - - - menu - - - - 957 - - - - delegate - - - - 958 - - - - eventSimulationToggle - - - - 979 - - - - delegate - - - - 961 - - - - menu - - - - 964 - - - - eventSimulationToggle - - - - 981 - - - - hidStoppedNotice - - - - 987 - - - - noDevicesNotice - - - - 988 - - - - inputsTree - - - - 989 - - - - delegate - - - - 1028 - - - - view - - - - 997 - - - - mappingTriggerClicked: - - - - 998 - - - - mappingListTrigger - - - - 999 - - - - mappingListPopover - - - - 1000 - - - - mappingList - - - - 1003 - - - - removeClicked: - - - - 1005 - - - - removeMapping - - - - 1006 - - - - addClicked: - - - - 1007 - - - - moveDownClicked: - - - - 1008 - - - - moveUpClicked: - - - - 1009 - - - - moveDown - - - - 1010 - - - - moveUp - - - - 1011 - - - - delegate - - - - 1023 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - - - - - - - Main Menu - - - 19 - - - - - - - - 56 - - - - - - - - 83 - - - - - - - - 81 - - - - - - - - - - - - - - 57 - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 136 - - - Quit Enjoyable - - - 144 - - - - - 236 - - - - - 131 - - - - - - - - 149 - - - - - 145 - - - - - 130 - - - - - 24 - - - - - - - - - - 92 - - - - - 239 - - - - - 23 - - - - - 450 - - - - - - - - - 451 - - - - - - - - - - - Mapping List Popover Content - - - 453 - - - - - - - - - 456 - - - - - - - - - - 457 - - - - - 458 - - - - - 459 - - - - - - Mapping List - - - 461 - - - - - - - - 464 - - - - - 482 - - - - - 487 - - - - - - - - - - 511 - - - - - - Remove Mapping - - - 512 - - - - - 479 - - - - - 606 - - - - - 686 - - - - - 723 - - - - - 812 - - - - - 813 - - - - - 814 - - - - - 837 - - - - - - Mapping Selector - - - 835 - - - - - - - - 836 - - - - - 849 - - - - - 851 - - - Mapping List Popover - - - 507 - - - - - - Add Mapping - - - 508 - - - - - 862 - - - - - - Gradient Space - - - 863 - - - - - 810 - - - - - 866 - - - - - - - - 867 - - - - - - - - 868 - - - - - 874 - - - - - - - - 872 - - - - - - - - 873 - - - - - 893 - - - - - - Move Mapping Up - - - 894 - - - - - 896 - - - - - - Move Mapping Down - - - 897 - - - - - 916 - - - - - - - - - - 913 - - - - - - - - 914 - - - - - 917 - - - - - - - - - - - - - - - - - - - 708 - - - - - 706 - - - - - - Input Name - - - 656 - - - - - - - - - - - - Output Types - - - 700 - - - - - - Mapping Choice List - - - 778 - - - - - 744 - - - - - - Mouse Button Selector - - - 749 - - - - - - Mouse Scroll Selector - - - 754 - - - - - - Mouse Motion Selector - - - 883 - - - - - - - - 887 - - - - - - - - 888 - - - - - 884 - - - - - 755 - - - - - 750 - - - - - 745 - - - - - 701 - - - - - - - - 702 - - - - - 657 - - - Disabled - - - 659 - - - - - 658 - - - Key Press - - - 699 - - - Switch Mapping - - - 733 - - - Mouse Movement - - - 734 - - - Mouse Button - - - 735 - - - Mouse Scroll - - - 707 - - - - - 634 - - - - - - - - - - 635 - - - - - 636 - - - - - 637 - - - - - - Input Device List - - - 639 - - - - - - Device/Input Name - - - 642 - - - - - 918 - - - - - - - - - - Status Item Menu - - - 919 - - - - - 922 - - - - - 923 - - - - - - - Dock Menu - - - 926 - - - - - 924 - - - - - 925 - - - - - 936 - - - Quit Enjoyable - - - 938 - - - - - 940 - - - - - 946 - - - - - - - - 947 - - - - - 950 - - - Main Mappings Menu Controller - - - 953 - - - Dock Menu Controller - - - 960 - - - Status Bar Menu Controller - - - 970 - - - - - 974 - - - - - - - - 975 - - - - - 983 - - - - - 993 - - - - - 1020 - - - - - - - - 1021 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - {{114, 276}, {770, 487}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - Create a new mapping - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - Remove the selected mapping - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - Change the active mapping - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - Enable mapped actions - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - Maximum mouse speed - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - Mouse scroll speed - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - Move the selected mapping up the list - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - Move the selected mapping down the list - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - IBUserDefinedRuntimeAttributesPlaceholderName - - IBUserDefinedRuntimeAttributesPlaceholderName - - - - com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.number - firstMappingIndex - - - - com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.boolean - hasKeyEquivalents - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - - IBUserDefinedRuntimeAttributesPlaceholderName - - IBUserDefinedRuntimeAttributesPlaceholderName - - - - com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.number - firstMappingIndex - - - - com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.boolean - hasKeyEquivalents - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - - IBUserDefinedRuntimeAttributesPlaceholderName - - IBUserDefinedRuntimeAttributesPlaceholderName - - - - com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.number - firstMappingIndex - - - - com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.boolean - hasKeyEquivalents - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 1041 - - - - - EnjoyableApplicationDelegate - NSObject - - id - id - id - NSButton - - - - exportMappingClicked: - id - - - importMappingClicked: - id - - - restoreToForeground: - id - - - simulatingEventsChanged: - NSButton - - - - NSMenu - NJDeviceViewController - NJInputController - NJMappingsViewController - NJOutputViewController - NSButton - NSMenu - NSWindow - - - - dockMenu - NSMenu - - - dvc - NJDeviceViewController - - - ic - NJInputController - - - mvc - NJMappingsViewController - - - oc - NJOutputViewController - - - simulatingEventsButton - NSButton - - - statusItemMenu - NSMenu - - - window - NSWindow - - - - IBProjectSource - ../Classes/EnjoyableApplicationDelegate.h - - - - EnjoyableApplicationDelegate - - simulatingEventsChanged: - NSButton - - - simulatingEventsChanged: - - simulatingEventsChanged: - NSButton - - - - IBProjectSource - ../Classes/EnjoyableApplicationDelegate.m - - - - NJDeviceViewController - NSObject - - id - NSView - NSOutlineView - NSView - - - - delegate - id - - - hidStoppedNotice - NSView - - - inputsTree - NSOutlineView - - - noDevicesNotice - NSView - - - - IBProjectSource - ../Classes/NJDeviceViewController.h - - - - NJInputController - NSObject - - delegate - id - - - delegate - - delegate - id - - - - IBProjectSource - ../Classes/NJInputController.h - - - - NJKeyInputField - NSControl - - delegate - id - - - delegate - - delegate - id - - - - IBProjectSource - ../Classes/NJKeyInputField.h - - - - NJMappingMenuController - NSObject - - id - NSMenuItem - NSMenu - - - - delegate - id - - - eventSimulationToggle - NSMenuItem - - - menu - NSMenu - - - - IBProjectSource - ../Classes/NJMappingMenuController.h - - - - NJMappingsViewController - NSViewController - - id - id - id - id - id - - - - addClicked: - id - - - mappingTriggerClicked: - id - - - moveDownClicked: - id - - - moveUpClicked: - id - - - removeClicked: - id - - - - id - NSTableView - NSPopover - NSButton - NSButton - NSButton - NSButton - - - - delegate - id - - - mappingList - NSTableView - - - mappingListPopover - NSPopover - - - mappingListTrigger - NSButton - - - moveDown - NSButton - - - moveUp - NSButton - - - removeMapping - NSButton - - - - IBProjectSource - ../Classes/NJMappingsViewController.h - - - - NJMappingsViewController - - id - id - id - id - id - - - - addClicked: - id - - - mappingTriggerClicked: - id - - - moveDownClicked: - id - - - moveUpClicked: - id - - - removeClicked: - id - - - - IBProjectSource - ../Classes/NJMappingsViewController.m - - - - NJOutputViewController - NSObject - - id - id - id - id - id - id - id - - - - mouseButtonChanged: - id - - - mouseDirectionChanged: - id - - - mouseSpeedChanged: - id - - - outputTypeChanged: - id - - - scrollDirectionChanged: - id - - - scrollSpeedChanged: - id - - - scrollTypeChanged: - id - - - - id - NJKeyInputField - NSPopUpButton - NSSegmentedControl - NSSegmentedControl - NSSlider - NSMatrix - NSSegmentedControl - NSSlider - NSButton - NSTextField - NSButton - - - - delegate - id - - - keyInput - NJKeyInputField - - - mappingPopup - NSPopUpButton - - - mouseBtnSelect - NSSegmentedControl - - - mouseDirSelect - NSSegmentedControl - - - mouseSpeedSlider - NSSlider - - - radioButtons - NSMatrix - - - scrollDirSelect - NSSegmentedControl - - - scrollSpeedSlider - NSSlider - - - smoothCheck - NSButton - - - title - NSTextField - - - unknownMapping - NSButton - - - - IBProjectSource - ../Classes/NJOutputViewController.h - - - - NJOutputViewController - - NSView - NSButton - - - - outputTypeChanged: - NSView - - - scrollTypeChanged: - NSButton - - - - IBProjectSource - ../Classes/NJOutputViewController.m - - - - - - NSActionCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSActionCell.h - - - - NSApplication - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSApplication.h - - - - NSBox - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSBox.h - - - - NSButton - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSButton.h - - - - NSButtonCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSButtonCell.h - - - - NSCell - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSCell.h - - - - NSControl - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSControl.h - - - - NSFormatter - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFormatter.h - - - - NSMatrix - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSMatrix.h - - - - NSMenu - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenu.h - - - - NSMenuItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h - - - - NSMenuItemCell - NSButtonCell - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItemCell.h - - - - NSOutlineView - NSTableView - - IBFrameworkSource - AppKit.framework/Headers/NSOutlineView.h - - - - NSPopUpButton - NSButton - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButton.h - - - - NSPopUpButtonCell - NSMenuItemCell - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButtonCell.h - - - - NSPopover - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSPopover.h - - - - NSResponder - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSResponder.h - - - - NSScrollView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSScrollView.h - - - - NSScroller - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSScroller.h - - - - NSSegmentedCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSSegmentedCell.h - - - - NSSegmentedControl - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSSegmentedControl.h - - - - NSSlider - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSSlider.h - - - - NSSliderCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSSliderCell.h - - - - NSTableColumn - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableColumn.h - - - - NSTableView - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSTableView.h - - - - NSTextField - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSTextField.h - - - - NSTextFieldCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSTextFieldCell.h - - - - NSToolbar - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbar.h - - - - NSToolbarItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbarItem.h - - - - NSView - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSView.h - - - - NSViewController - NSResponder - - view - NSView - - - view - - view - NSView - - - - IBFrameworkSource - AppKit.framework/Headers/NSViewController.h - - - - NSWindow - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSWindow.h - - - - - 0 - IBCocoaFramework - NO - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - {11, 11} - {14, 10} - {12, 12} - {10, 2} - {16, 15} - {11, 11} - {9, 12} - {15, 15} - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +