Move simulation toggle out of device controller.
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Wed, 20 Mar 2013 19:26:21 +0000 (20:26 +0100)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Wed, 20 Mar 2013 19:26:21 +0000 (20:26 +0100)
Classes/EnjoyableApplicationDelegate.h
Classes/EnjoyableApplicationDelegate.m
Classes/NJDeviceController.h
Classes/NJDeviceController.m
Info.plist
Resources/English.lproj/MainMenu.xib

index 52869f21abcb952eb050a919ae052a114da99a85..3b1f2f44ccf17b61667e89444dd09b77d0a37d5f 100644 (file)
                                                     NJDeviceViewControllerDelegate,
                                                     NJMappingsViewControllerDelegate,
                                                     NJMappingMenuDelegate,
-                                                    NSWindowDelegate> {
-    IBOutlet NSMenu *dockMenu;
-    IBOutlet NSMenu *statusItemMenu;
-    IBOutlet NSWindow *window;
-}
+                                                    NSWindowDelegate>
 
 @property (nonatomic, strong) IBOutlet NJMappingsController *mappingsController;
 @property (nonatomic, strong) IBOutlet NJDeviceController *deviceController;
 @property (nonatomic, strong) IBOutlet NJMappingsViewController *mvc;
 @property (nonatomic, strong) IBOutlet NJDeviceViewController *dvc;
 
+@property (nonatomic, strong) IBOutlet NSMenu *dockMenu;
+@property (nonatomic, strong) IBOutlet NSMenu *statusItemMenu;
+@property (nonatomic, strong) IBOutlet NSWindow *window;
+@property (nonatomic, strong) IBOutlet NSButton *simulatingEventsButton;
+
 - (IBAction)restoreToForeground:(id)sender;
 - (IBAction)importMappingClicked:(id)sender;
 - (IBAction)exportMappingClicked:(id)sender;
+- (IBAction)simulatingEventsChanged:(NSButton *)sender;
 
 @end
index ca641f7bb137b2aeaefec3942eb52b90ec3bd638..41d068a3ee7d261afe45d4342534bfe20d48e623 100644 (file)
@@ -49,7 +49,7 @@
     statusItem = [NSStatusBar.systemStatusBar statusItemWithLength:36];
     statusItem.image = [NSImage imageNamed:@"Status Menu Icon Disabled"];
     statusItem.highlightMode = YES;
-    statusItem.menu = statusItemMenu;
+    statusItem.menu = self.statusItemMenu;
     statusItem.target = self;
 }
 
@@ -58,7 +58,7 @@
         && NSRunningApplication.currentApplication.wasLaunchedAsLoginItemOrResume)
         [self transformIntoElement:nil];
     else
-        [window makeKeyAndOrderFront:nil];
+        [self.window makeKeyAndOrderFront:nil];
 }
 
 - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication
@@ -71,7 +71,7 @@
     ProcessSerialNumber psn = { 0, kCurrentProcess };
     TransformProcessType(&psn, kProcessTransformToForegroundApplication);
     [NSApplication.sharedApplication activateIgnoringOtherApps:YES];
-    [window makeKeyAndOrderFront:sender];
+    [self.window makeKeyAndOrderFront:sender];
     [NSObject cancelPreviousPerformRequestsWithTarget:self
                                              selector:@selector(transformIntoElement:)
                                                object:self];
@@ -79,7 +79,7 @@
 }
 
 - (void)applicationWillBecomeActive:(NSNotification *)notification {
-    if (window.isVisible)
+    if (self.window.isVisible)
         [self restoreToForeground:notification];
 }
 
 }
 
 - (void)eventSimulationStarted:(NSNotification *)note {
+    self.simulatingEventsButton.state = NSOnState;
     statusItem.image = [NSImage imageNamed:@"Status Menu Icon"];
     [NSWorkspace.sharedWorkspace.notificationCenter
         addObserver:self
 }
 
 - (void)eventSimulationStopped:(NSNotification *)note {
+    self.simulatingEventsButton.state = NSOffState;
     statusItem.image = [NSImage imageNamed:@"Status Menu Icon Disabled"];
     [NSWorkspace.sharedWorkspace.notificationCenter
         removeObserver:self
     NSUInteger idx = [note.userInfo[NJMappingIndexKey] intValue];
     [self.mvc changedActiveMappingToIndex:idx];
 
-    if (!window.isVisible)
+    if (!self.window.isVisible)
         for (int i = 0; i < 4; ++i)
             [self performSelector:@selector(flashStatusItem)
                        withObject:self
 }
 
 - (NSMenu *)applicationDockMenu:(NSApplication *)sender {
-    return dockMenu;
+    return self.dockMenu;
 }
 
 - (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
         [self.mvc endUpdates];
         [self.mappingsController activateMapping:mapping];
     } else {
-        [window presentError:error
-              modalForWindow:window
-                    delegate:nil
-          didPresentSelector:nil
-                 contextInfo:nil];
+        [self.window presentError:error
+                   modalForWindow:self.window
+                         delegate:nil
+               didPresentSelector:nil
+                      contextInfo:nil];
     }
     return !!mapping;
 }
                        returnCode:(int)returnCode
                       contextInfo:(void *)contextInfo {
     [NSUserDefaults.standardUserDefaults setBool:YES forKey:@"explained login items"];
-    [window performClose:sheet];
+    [self.window performClose:sheet];
 }
 
 - (BOOL)windowShouldClose:(NSWindow *)sender {
-    if (sender != window
+    if (sender != self.window
         || NSRunningApplication.currentApplication.isLoginItem
         || [NSUserDefaults.standardUserDefaults boolForKey:@"explained login items"])
         return YES;
         NSLocalizedString(@"login items prompt", @"alert prompt for adding to login items"),
         NSLocalizedString(@"login items add button", @"button to add to login items"),
         NSLocalizedString(@"login items don't add button", @"button to not add to login items"),
-        nil, window, self,
+        nil, self.window, self,
         @selector(loginItemPromptDidEnd:returnCode:contextInfo:),
         @selector(loginItemPromptDidDismiss:returnCode:contextInfo:),
         NULL,
 - (void)importMappingClicked:(id)sender {
     NSOpenPanel *panel = [NSOpenPanel openPanel];
     panel.allowedFileTypes = @[ @"enjoyable", @"json", @"txt" ];
-    [panel beginSheetModalForWindow:window
+    [panel beginSheetModalForWindow:self.window
                   completionHandler:^(NSInteger result) {
                       if (result != NSFileHandlingPanelOKButton)
                           return;
                       } else if (mapping) {
                           [self.mappingsController addMapping:mapping];
                       } else {
-                          [window presentError:error
-                                modalForWindow:window
-                                      delegate:nil
-                            didPresentSelector:nil
-                                   contextInfo:nil];
+                          [self.window presentError:error
+                                     modalForWindow:self.window
+                                           delegate:nil
+                                 didPresentSelector:nil
+                                        contextInfo:nil];
                       }
                   }];
     
     panel.allowedFileTypes = @[ @"enjoyable" ];
     NJMapping *mapping = self.mappingsController.currentMapping;
     panel.nameFieldStringValue = [mapping.name stringByFixingPathComponent];
-    [panel beginSheetModalForWindow:window
+    [panel beginSheetModalForWindow:self.window
                   completionHandler:^(NSInteger result) {
                       if (result != NSFileHandlingPanelOKButton)
                           return;
                       [panel close];
                       NSError *error;
                       if (![mapping writeToURL:panel.URL error:&error]) {
-                          [window presentError:error
-                                modalForWindow:window
-                                      delegate:nil
-                            didPresentSelector:nil
-                                   contextInfo:nil];
+                          [self.window presentError:error
+                                     modalForWindow:self.window
+                                           delegate:nil
+                                 didPresentSelector:nil
+                                        contextInfo:nil];
                       }
                   }];
 }
     [conflictAlert addButtonWithTitle:NSLocalizedString(@"import and merge", @"button to merge imported mappings")];
     [conflictAlert addButtonWithTitle:NSLocalizedString(@"cancel import", @"button to cancel import")];
     [conflictAlert addButtonWithTitle:NSLocalizedString(@"import new mapping", @"button to import as new mapping")];
-    [conflictAlert beginSheetModalForWindow:window
+    [conflictAlert beginSheetModalForWindow:self.window
                               modalDelegate:self
                              didEndSelector:@selector(mappingConflictDidResolve:returnCode:contextInfo:)
                                 contextInfo:(void *)CFBridgingRetain(@{ @"index": @(idx),
     // Since the error shows the window, it can trigger another attempt
     // to re-open the HID manager, which will also probably fail and error,
     // so don't bother repeating ourselves.
-    if (!window.attachedSheet) {
+    if (!self.window.attachedSheet) {
         [NSApplication.sharedApplication activateIgnoringOtherApps:YES];
-        [window makeKeyAndOrderFront:nil];
-        [window presentError:error
-              modalForWindow:window
-                    delegate:nil
-          didPresentSelector:nil
-                 contextInfo:nil];
+        [self.window makeKeyAndOrderFront:nil];
+        [self.window presentError:error
+                   modalForWindow:self.window
+                         delegate:nil
+               didPresentSelector:nil
+                      contextInfo:nil];
     }
 }
 
     return self.deviceController[idx];
 }
 
+- (IBAction)simulatingEventsChanged:(NSButton *)sender {
+    self.deviceController.simulatingEvents = sender.state == NSOnState;
+}
+
 @end
index 3691d59bcd38d04b53df1b39902cf72247c4ba27..e594f1058ed6a3dfbb85b794ee81eaab90038cc3 100644 (file)
@@ -7,16 +7,16 @@
 //
 
 #import "NJHIDManager.h"
-#import "NJDeviceViewController.h"
 
+@class NJDevice;
 @class NJInput;
+@class NJInputPathElement;
 @class NJMappingsController;
 
 @protocol NJDeviceControllerDelegate;
 
 @interface NJDeviceController : NSObject <NJHIDManagerDelegate> {
     IBOutlet NJMappingsController *mappingsController;
-    IBOutlet NSButton *simulatingEventsButton;
 }
 
 @property (nonatomic, weak) IBOutlet id <NJDeviceControllerDelegate> delegate;
@@ -24,8 +24,6 @@
 @property (nonatomic, assign) NSPoint mouseLoc;
 @property (nonatomic, assign) BOOL simulatingEvents;
 
-- (IBAction)simulatingEventsChanged:(NSButton *)sender;
-
 - (NJDevice *)objectAtIndexedSubscript:(NSUInteger)idx;
 - (NJInputPathElement *)objectForKeyedSubscript:(NSString *)uid;
 - (NSUInteger)count;
index 23a0932d497f21119a16ddf9e93965d9699f8fd9..1b64aaf3f694e5dd26eb3c8324ebf0de77c82e04 100644 (file)
@@ -13,7 +13,6 @@
 #import "NJInput.h"
 #import "NJOutput.h"
 #import "NJEvents.h"
-#import "NJDeviceViewController.h"
 
 @implementation NJDeviceController {
     NJHIDManager *_hidManager;
 - (void)setSimulatingEvents:(BOOL)simulatingEvents {
     if (simulatingEvents != _simulatingEvents) {
         _simulatingEvents = simulatingEvents;
-        NSInteger state = simulatingEvents ? NSOnState : NSOffState;
-        simulatingEventsButton.state = state;
         NSString *name = simulatingEvents
             ? NJEventSimulationStarted
             : NJEventSimulationStopped;
         [self stopHid];
 }
 
-- (IBAction)simulatingEventsChanged:(NSButton *)sender {
-    self.simulatingEvents = sender.state == NSOnState;
-}
-
-- (NSInteger)numberOfDevicesInDeviceList:(NJDeviceViewController *)dvc {
-    return _devices.count;
-}
-
-- (NJDevice *)deviceViewController:(NJDeviceViewController *)dvc
-                    deviceForIndex:(NSUInteger)idx {
-    return _devices[idx];
-}
-
 - (NJInputPathElement *)objectForKeyedSubscript:(NSString *)uid {
     for (NJDevice *dev in _devices) {
         id item = [dev elementForUID:uid];
index fa16792fc1418903c61f544cfca085007928b108..a645f948e1a66da56f726cad364696a00ee2d430 100644 (file)
@@ -46,7 +46,7 @@
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>535</string>
+       <string>540</string>
        <key>LSApplicationCategoryType</key>
        <string>public.app-category.utilities</string>
        <key>NSHumanReadableCopyright</key>
index bbb398e11be93adb0711ddd54827ca9828208d11..b3d81baab01fbe1ab44ee32f9cf860184b805a4c 100644 (file)
                                                        <string key="NSToolbarItemPaletteLabel">Enabled</string>
                                                        <nil key="NSToolbarItemToolTip"/>
                                                        <object class="NSButton" key="NSToolbarItemView" id="385218002">
-                                                               <nil key="NSNextResponder"/>
+                                                               <reference key="NSNextResponder"/>
                                                                <int key="NSvFlags">268</int>
                                                                <string key="NSFrame">{{7, 14}, {36, 25}}</string>
+                                                               <reference key="NSSuperview"/>
+                                                               <reference key="NSWindow"/>
                                                                <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                <bool key="NSEnabled">YES</bool>
                                                                <object class="NSButtonCell" key="NSCell" id="422366518">
                                                        <string key="NSToolbarItemPaletteLabel">Mapping Selector</string>
                                                        <nil key="NSToolbarItemToolTip"/>
                                                        <object class="NSButton" key="NSToolbarItemView" id="227597319">
-                                                               <nil key="NSNextResponder"/>
+                                                               <reference key="NSNextResponder"/>
                                                                <int key="NSvFlags">268</int>
                                                                <string key="NSFrame">{{0, 14}, {140, 25}}</string>
+                                                               <reference key="NSSuperview"/>
+                                                               <reference key="NSWindow"/>
                                                                <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                <bool key="NSEnabled">YES</bool>
                                                                <object class="NSButtonCell" key="NSCell" id="850080795">
                                                                        <int key="NSvFlags">-2147483374</int>
                                                                        <string key="NSFrame">{{20, 20}, {194, 283}}</string>
                                                                        <reference key="NSSuperview" ref="734312853"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="471332453"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:22</string>
                                                                        <bool key="NSEnabled">YES</bool>
@@ -529,6 +534,7 @@ Lg</string>
                                                                        <int key="NSvFlags">274</int>
                                                                        <string key="NSFrame">{{20, 20}, {194, 283}}</string>
                                                                        <reference key="NSSuperview" ref="734312853"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="918286878"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:22</string>
                                                                        <bool key="NSEnabled">YES</bool>
@@ -563,7 +569,8 @@ aW5nLg</string>
                                                                                                        <array class="NSMutableArray" key="NSSubviews"/>
                                                                                                        <string key="NSFrameSize">{232, 321}</string>
                                                                                                        <reference key="NSSuperview" ref="698362889"/>
-                                                                                                       <reference key="NSNextKeyView" ref="892486973"/>
+                                                                                                       <reference key="NSWindow"/>
+                                                                                                       <reference key="NSNextKeyView" ref="1036252745"/>
                                                                                                        <bool key="NSEnabled">YES</bool>
                                                                                                        <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                                                        <bool key="NSControlAllowsExpansionToolTips">YES</bool>
@@ -658,6 +665,7 @@ aW5nLg</string>
                                                                                        </array>
                                                                                        <string key="NSFrame">{{1, 1}, {232, 321}}</string>
                                                                                        <reference key="NSSuperview" ref="364857164"/>
+                                                                                       <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="365506042"/>
                                                                                        <reference key="NSDocView" ref="365506042"/>
                                                                                        <reference key="NSBGColor" ref="834857663"/>
@@ -668,6 +676,7 @@ aW5nLg</string>
                                                                                        <int key="NSvFlags">-2147483392</int>
                                                                                        <string key="NSFrame">{{1, 1}, {8, 298}}</string>
                                                                                        <reference key="NSSuperview" ref="364857164"/>
+                                                                                       <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="12898323"/>
                                                                                        <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                                        <reference key="NSTarget" ref="364857164"/>
@@ -679,6 +688,7 @@ aW5nLg</string>
                                                                                        <int key="NSvFlags">-2147483392</int>
                                                                                        <string key="NSFrame">{{-100, -100}, {473, 15}}</string>
                                                                                        <reference key="NSSuperview" ref="364857164"/>
+                                                                                       <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="698362889"/>
                                                                                        <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                                        <int key="NSsFlags">1</int>
@@ -689,7 +699,8 @@ aW5nLg</string>
                                                                        </array>
                                                                        <string key="NSFrameSize">{234, 323}</string>
                                                                        <reference key="NSSuperview" ref="734312853"/>
-                                                                       <reference key="NSNextKeyView" ref="698362889"/>
+                                                                       <reference key="NSWindow"/>
+                                                                       <reference key="NSNextKeyView" ref="892486973"/>
                                                                        <int key="NSsFlags">150034</int>
                                                                        <reference key="NSVScroller" ref="1036252745"/>
                                                                        <reference key="NSHScroller" ref="892486973"/>
@@ -702,6 +713,7 @@ aW5nLg</string>
                                                        </array>
                                                        <string key="NSFrameSize">{234, 323}</string>
                                                        <reference key="NSSuperview" ref="177223957"/>
+                                                       <reference key="NSWindow"/>
                                                        <reference key="NSNextKeyView" ref="364857164"/>
                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                        <string key="NSClassName">NSView</string>
@@ -715,6 +727,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">268</int>
                                                                        <string key="NSFrame">{{197, 157}, {193, 21}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="875916470"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                        <bool key="NSEnabled">YES</bool>
@@ -739,6 +752,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">265</int>
                                                                        <string key="NSFrame">{{189, 117}, {224, 20}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="385416822"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                        <bool key="NSEnabled">YES</bool>
@@ -780,6 +794,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">268</int>
                                                                        <string key="NSFrame">{{343, 31}, {70, 18}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                        <bool key="NSEnabled">YES</bool>
                                                                        <object class="NSButtonCell" key="NSCell" id="868379451">
@@ -810,6 +825,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">265</int>
                                                                        <string key="NSFrame">{{189, 33}, {150, 20}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="792189805"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                        <bool key="NSEnabled">YES</bool>
@@ -854,6 +870,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">265</int>
                                                                        <string key="NSFrame">{{191, 24}, {146, 16}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="20704797"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                        <bool key="NSEnabled">YES</bool>
@@ -879,6 +896,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">265</int>
                                                                        <string key="NSFrame">{{189, 70}, {224, 24}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="921829691"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                        <bool key="NSEnabled">YES</bool>
@@ -932,6 +950,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">265</int>
                                                                        <string key="NSFrame">{{191, 108}, {220, 16}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="125828224"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                        <bool key="NSEnabled">YES</bool>
@@ -957,6 +976,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">265</int>
                                                                        <string key="NSFrame">{{191, 196}, {220, 23}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="194275224"/>
                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                        <string key="NSClassName">NJKeyInputField</string>
@@ -966,6 +986,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">265</int>
                                                                        <string key="NSFrame">{{188, 153}, {226, 26}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="529992855"/>
                                                                        <bool key="NSEnabled">YES</bool>
                                                                        <object class="NSPopUpButtonCell" key="NSCell" id="74311158">
@@ -998,6 +1019,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">268</int>
                                                                        <string key="NSFrame">{{24, 20}, {163, 250}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="57697638"/>
                                                                        <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                        <int key="NSNumRows">6</int>
@@ -1128,6 +1150,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">266</int>
                                                                        <string key="NSFrame">{{9, 286}, {412, 17}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="497528019"/>
                                                                        <bool key="NSEnabled">YES</bool>
                                                                        <object class="NSTextFieldCell" key="NSCell" id="853503577">
@@ -1151,6 +1174,7 @@ aW5nLg</string>
                                                                        <int key="NSvFlags">10</int>
                                                                        <string key="NSFrame">{{12, 276}, {406, 5}}</string>
                                                                        <reference key="NSSuperview" ref="471332453"/>
+                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="120408205"/>
                                                                        <string key="NSOffsets">{0, 0}</string>
                                                                        <object class="NSTextFieldCell" key="NSTitleCell">
@@ -1177,6 +1201,7 @@ aW5nLg</string>
                                                        </array>
                                                        <string key="NSFrame">{{233, 0}, {431, 323}}</string>
                                                        <reference key="NSSuperview" ref="177223957"/>
+                                                       <reference key="NSWindow"/>
                                                        <reference key="NSNextKeyView" ref="1016088174"/>
                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                        <string key="NSClassName">NSView</string>
@@ -1184,6 +1209,7 @@ aW5nLg</string>
                                        </array>
                                        <string key="NSFrameSize">{664, 323}</string>
                                        <reference key="NSSuperview"/>
+                                       <reference key="NSWindow"/>
                                        <reference key="NSNextKeyView" ref="734312853"/>
                                </object>
                                <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
@@ -1209,7 +1235,8 @@ aW5nLg</string>
                                                                                <int key="NSvFlags">256</int>
                                                                                <string key="NSFrameSize">{198, 198}</string>
                                                                                <reference key="NSSuperview" ref="947403733"/>
-                                                                               <reference key="NSNextKeyView" ref="553414014"/>
+                                                                               <reference key="NSWindow"/>
+                                                                               <reference key="NSNextKeyView" ref="968378655"/>
                                                                                <bool key="NSEnabled">YES</bool>
                                                                                <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                                <bool key="NSControlAllowsExpansionToolTips">YES</bool>
@@ -1266,6 +1293,7 @@ aW5nLg</string>
                                                                </array>
                                                                <string key="NSFrame">{{1, 1}, {198, 198}}</string>
                                                                <reference key="NSSuperview" ref="443618264"/>
+                                                               <reference key="NSWindow"/>
                                                                <reference key="NSNextKeyView" ref="762432499"/>
                                                                <reference key="NSDocView" ref="762432499"/>
                                                                <reference key="NSBGColor" ref="834857663"/>
@@ -1276,6 +1304,7 @@ aW5nLg</string>
                                                                <int key="NSvFlags">-2147483392</int>
                                                                <string key="NSFrame">{{306, 1}, {15, 403}}</string>
                                                                <reference key="NSSuperview" ref="443618264"/>
+                                                               <reference key="NSWindow"/>
                                                                <reference key="NSNextKeyView" ref="861276216"/>
                                                                <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                <reference key="NSTarget" ref="443618264"/>
@@ -1287,6 +1316,7 @@ aW5nLg</string>
                                                                <int key="NSvFlags">-2147483392</int>
                                                                <string key="NSFrame">{{-100, -100}, {366, 16}}</string>
                                                                <reference key="NSSuperview" ref="443618264"/>
+                                                               <reference key="NSWindow"/>
                                                                <reference key="NSNextKeyView" ref="947403733"/>
                                                                <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                <int key="NSsFlags">1</int>
@@ -1297,7 +1327,8 @@ aW5nLg</string>
                                                </array>
                                                <string key="NSFrame">{{0, 20}, {200, 200}}</string>
                                                <reference key="NSSuperview" ref="671181514"/>
-                                               <reference key="NSNextKeyView" ref="947403733"/>
+                                               <reference key="NSWindow"/>
+                                               <reference key="NSNextKeyView" ref="553414014"/>
                                                <int key="NSsFlags">150034</int>
                                                <reference key="NSVScroller" ref="968378655"/>
                                                <reference key="NSHScroller" ref="553414014"/>
@@ -1312,6 +1343,7 @@ aW5nLg</string>
                                                <int key="NSvFlags">268</int>
                                                <string key="NSFrame">{{66, -1}, {68, 23}}</string>
                                                <reference key="NSSuperview" ref="671181514"/>
+                                               <reference key="NSWindow"/>
                                                <reference key="NSNextKeyView" ref="1023366520"/>
                                                <string key="NSReuseIdentifierKey">_NS:22</string>
                                                <bool key="NSEnabled">YES</bool>
@@ -1340,6 +1372,7 @@ aW5nLg</string>
                                                <int key="NSvFlags">292</int>
                                                <string key="NSFrame">{{0, -1}, {34, 23}}</string>
                                                <reference key="NSSuperview" ref="671181514"/>
+                                               <reference key="NSWindow"/>
                                                <reference key="NSNextKeyView" ref="456935010"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSButtonCell" key="NSCell" id="867532725">
@@ -1366,6 +1399,7 @@ aW5nLg</string>
                                                <int key="NSvFlags">292</int>
                                                <string key="NSFrame">{{166, -1}, {34, 23}}</string>
                                                <reference key="NSSuperview" ref="671181514"/>
+                                               <reference key="NSWindow"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSButtonCell" key="NSCell" id="828611353">
                                                        <int key="NSCellFlags">67108864</int>
@@ -1387,6 +1421,7 @@ aW5nLg</string>
                                                <int key="NSvFlags">292</int>
                                                <string key="NSFrame">{{133, -1}, {34, 23}}</string>
                                                <reference key="NSSuperview" ref="671181514"/>
+                                               <reference key="NSWindow"/>
                                                <reference key="NSNextKeyView" ref="1043784903"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSButtonCell" key="NSCell" id="57592747">
@@ -1409,6 +1444,7 @@ aW5nLg</string>
                                                <int key="NSvFlags">292</int>
                                                <string key="NSFrame">{{33, -1}, {34, 23}}</string>
                                                <reference key="NSSuperview" ref="671181514"/>
+                                               <reference key="NSWindow"/>
                                                <reference key="NSNextKeyView" ref="149148392"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSButtonCell" key="NSCell" id="1008023024">
@@ -1433,6 +1469,7 @@ aW5nLg</string>
                                </array>
                                <string key="NSFrameSize">{200, 220}</string>
                                <reference key="NSSuperview"/>
+                               <reference key="NSWindow"/>
                                <reference key="NSNextKeyView" ref="443618264"/>
                                <string key="NSClassName">NSView</string>
                        </object>
@@ -1669,30 +1706,6 @@ aW5nLg</string>
                                        </object>
                                        <int key="connectionID">822</int>
                                </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBOutletConnection" key="connection">
-                                               <string key="label">outputController</string>
-                                               <reference key="source" ref="1007832501"/>
-                                               <reference key="destination" ref="801536542"/>
-                                       </object>
-                                       <int key="connectionID">826</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBActionConnection" key="connection">
-                                               <string key="label">simulatingEventsChanged:</string>
-                                               <reference key="source" ref="1007832501"/>
-                                               <reference key="destination" ref="385218002"/>
-                                       </object>
-                                       <int key="connectionID">978</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBOutletConnection" key="connection">
-                                               <string key="label">simulatingEventsButton</string>
-                                               <reference key="source" ref="1007832501"/>
-                                               <reference key="destination" ref="385218002"/>
-                                       </object>
-                                       <int key="connectionID">982</int>
-                               </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
                                                <string key="label">delegate</string>
@@ -1789,6 +1802,22 @@ aW5nLg</string>
                                        </object>
                                        <int key="connectionID">1027</int>
                                </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">simulatingEventsChanged:</string>
+                                               <reference key="source" ref="207406104"/>
+                                               <reference key="destination" ref="385218002"/>
+                                       </object>
+                                       <int key="connectionID">1030</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">simulatingEventsButton</string>
+                                               <reference key="source" ref="207406104"/>
+                                               <reference key="destination" ref="385218002"/>
+                                       </object>
+                                       <int key="connectionID">1031</int>
+                               </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBActionConnection" key="connection">
                                                <string key="label">performClick:</string>
@@ -3344,9 +3373,418 @@ aW5nLg</string>
                        <nil key="activeLocalization"/>
                        <dictionary class="NSMutableDictionary" key="localizations"/>
                        <nil key="sourceID"/>
-                       <int key="maxID">1029</int>
+                       <int key="maxID">1031</int>
+               </object>
+               <object class="IBClassDescriber" key="IBDocument.Classes">
+                       <array class="NSMutableArray" key="referencedPartialClassDescriptions">
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">EnjoyableApplicationDelegate</string>
+                                       <string key="superclassName">NSObject</string>
+                                       <dictionary class="NSMutableDictionary" key="actions">
+                                               <string key="exportMappingClicked:">id</string>
+                                               <string key="importMappingClicked:">id</string>
+                                               <string key="restoreToForeground:">id</string>
+                                               <string key="simulatingEventsChanged:">NSButton</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="actionInfosByName">
+                                               <object class="IBActionInfo" key="exportMappingClicked:">
+                                                       <string key="name">exportMappingClicked:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="importMappingClicked:">
+                                                       <string key="name">importMappingClicked:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="restoreToForeground:">
+                                                       <string key="name">restoreToForeground:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="simulatingEventsChanged:">
+                                                       <string key="name">simulatingEventsChanged:</string>
+                                                       <string key="candidateClassName">NSButton</string>
+                                               </object>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="outlets">
+                                               <string key="deviceController">NJDeviceController</string>
+                                               <string key="dockMenu">NSMenu</string>
+                                               <string key="dvc">NJDeviceViewController</string>
+                                               <string key="mappingsController">NJMappingsController</string>
+                                               <string key="mvc">NJMappingsViewController</string>
+                                               <string key="outputController">NJOutputController</string>
+                                               <string key="simulatingEventsButton">NSButton</string>
+                                               <string key="statusItemMenu">NSMenu</string>
+                                               <string key="window">NSWindow</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+                                               <object class="IBToOneOutletInfo" key="deviceController">
+                                                       <string key="name">deviceController</string>
+                                                       <string key="candidateClassName">NJDeviceController</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="dockMenu">
+                                                       <string key="name">dockMenu</string>
+                                                       <string key="candidateClassName">NSMenu</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="dvc">
+                                                       <string key="name">dvc</string>
+                                                       <string key="candidateClassName">NJDeviceViewController</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mappingsController">
+                                                       <string key="name">mappingsController</string>
+                                                       <string key="candidateClassName">NJMappingsController</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mvc">
+                                                       <string key="name">mvc</string>
+                                                       <string key="candidateClassName">NJMappingsViewController</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="outputController">
+                                                       <string key="name">outputController</string>
+                                                       <string key="candidateClassName">NJOutputController</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="simulatingEventsButton">
+                                                       <string key="name">simulatingEventsButton</string>
+                                                       <string key="candidateClassName">NSButton</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="statusItemMenu">
+                                                       <string key="name">statusItemMenu</string>
+                                                       <string key="candidateClassName">NSMenu</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="window">
+                                                       <string key="name">window</string>
+                                                       <string key="candidateClassName">NSWindow</string>
+                                               </object>
+                                       </dictionary>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/EnjoyableApplicationDelegate.h</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">NJDeviceController</string>
+                                       <string key="superclassName">NSObject</string>
+                                       <dictionary class="NSMutableDictionary" key="outlets">
+                                               <string key="delegate">id</string>
+                                               <string key="mappingsController">NJMappingsController</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+                                               <object class="IBToOneOutletInfo" key="delegate">
+                                                       <string key="name">delegate</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mappingsController">
+                                                       <string key="name">mappingsController</string>
+                                                       <string key="candidateClassName">NJMappingsController</string>
+                                               </object>
+                                       </dictionary>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/NJDeviceController.h</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">NJDeviceViewController</string>
+                                       <string key="superclassName">NSObject</string>
+                                       <dictionary class="NSMutableDictionary" key="outlets">
+                                               <string key="delegate">id</string>
+                                               <string key="hidStoppedNotice">NSView</string>
+                                               <string key="inputsTree">NSOutlineView</string>
+                                               <string key="noDevicesNotice">NSView</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+                                               <object class="IBToOneOutletInfo" key="delegate">
+                                                       <string key="name">delegate</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="hidStoppedNotice">
+                                                       <string key="name">hidStoppedNotice</string>
+                                                       <string key="candidateClassName">NSView</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="inputsTree">
+                                                       <string key="name">inputsTree</string>
+                                                       <string key="candidateClassName">NSOutlineView</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="noDevicesNotice">
+                                                       <string key="name">noDevicesNotice</string>
+                                                       <string key="candidateClassName">NSView</string>
+                                               </object>
+                                       </dictionary>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/NJDeviceViewController.h</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">NJKeyInputField</string>
+                                       <string key="superclassName">NSControl</string>
+                                       <object class="NSMutableDictionary" key="outlets">
+                                               <string key="NS.key.0">delegate</string>
+                                               <string key="NS.object.0">id</string>
+                                       </object>
+                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+                                               <string key="NS.key.0">delegate</string>
+                                               <object class="IBToOneOutletInfo" key="NS.object.0">
+                                                       <string key="name">delegate</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                       </object>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/NJKeyInputField.h</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">NJMappingMenuController</string>
+                                       <string key="superclassName">NSObject</string>
+                                       <dictionary class="NSMutableDictionary" key="outlets">
+                                               <string key="delegate">id</string>
+                                               <string key="eventSimulationToggle">NSMenuItem</string>
+                                               <string key="menu">NSMenu</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+                                               <object class="IBToOneOutletInfo" key="delegate">
+                                                       <string key="name">delegate</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="eventSimulationToggle">
+                                                       <string key="name">eventSimulationToggle</string>
+                                                       <string key="candidateClassName">NSMenuItem</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="menu">
+                                                       <string key="name">menu</string>
+                                                       <string key="candidateClassName">NSMenu</string>
+                                               </object>
+                                       </dictionary>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/NJMappingMenuController.h</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">NJMappingsController</string>
+                                       <string key="superclassName">NSObject</string>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/NJMappingsController.h</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">NJMappingsViewController</string>
+                                       <string key="superclassName">NSViewController</string>
+                                       <dictionary class="NSMutableDictionary" key="actions">
+                                               <string key="addClicked:">id</string>
+                                               <string key="mappingTriggerClicked:">id</string>
+                                               <string key="moveDownClicked:">id</string>
+                                               <string key="moveUpClicked:">id</string>
+                                               <string key="removeClicked:">id</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="actionInfosByName">
+                                               <object class="IBActionInfo" key="addClicked:">
+                                                       <string key="name">addClicked:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="mappingTriggerClicked:">
+                                                       <string key="name">mappingTriggerClicked:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="moveDownClicked:">
+                                                       <string key="name">moveDownClicked:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="moveUpClicked:">
+                                                       <string key="name">moveUpClicked:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="removeClicked:">
+                                                       <string key="name">removeClicked:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="outlets">
+                                               <string key="delegate">id</string>
+                                               <string key="mappingList">NSTableView</string>
+                                               <string key="mappingListPopover">NSPopover</string>
+                                               <string key="mappingListTrigger">NSButton</string>
+                                               <string key="moveDown">NSButton</string>
+                                               <string key="moveUp">NSButton</string>
+                                               <string key="removeMapping">NSButton</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+                                               <object class="IBToOneOutletInfo" key="delegate">
+                                                       <string key="name">delegate</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mappingList">
+                                                       <string key="name">mappingList</string>
+                                                       <string key="candidateClassName">NSTableView</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mappingListPopover">
+                                                       <string key="name">mappingListPopover</string>
+                                                       <string key="candidateClassName">NSPopover</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mappingListTrigger">
+                                                       <string key="name">mappingListTrigger</string>
+                                                       <string key="candidateClassName">NSButton</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="moveDown">
+                                                       <string key="name">moveDown</string>
+                                                       <string key="candidateClassName">NSButton</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="moveUp">
+                                                       <string key="name">moveUp</string>
+                                                       <string key="candidateClassName">NSButton</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="removeMapping">
+                                                       <string key="name">removeMapping</string>
+                                                       <string key="candidateClassName">NSButton</string>
+                                               </object>
+                                       </dictionary>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/NJMappingsViewController.h</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">NJOutputController</string>
+                                       <string key="superclassName">NSObject</string>
+                                       <dictionary class="NSMutableDictionary" key="actions">
+                                               <string key="mbtnChanged:">id</string>
+                                               <string key="mdirChanged:">id</string>
+                                               <string key="mouseSpeedChanged:">id</string>
+                                               <string key="radioChanged:">id</string>
+                                               <string key="scrollSpeedChanged:">id</string>
+                                               <string key="scrollTypeChanged:">id</string>
+                                               <string key="sdirChanged:">id</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="actionInfosByName">
+                                               <object class="IBActionInfo" key="mbtnChanged:">
+                                                       <string key="name">mbtnChanged:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="mdirChanged:">
+                                                       <string key="name">mdirChanged:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="mouseSpeedChanged:">
+                                                       <string key="name">mouseSpeedChanged:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="radioChanged:">
+                                                       <string key="name">radioChanged:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="scrollSpeedChanged:">
+                                                       <string key="name">scrollSpeedChanged:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="scrollTypeChanged:">
+                                                       <string key="name">scrollTypeChanged:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="sdirChanged:">
+                                                       <string key="name">sdirChanged:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="outlets">
+                                               <string key="keyInput">NJKeyInputField</string>
+                                               <string key="mappingPopup">NSPopUpButton</string>
+                                               <string key="mappingsController">NJMappingsController</string>
+                                               <string key="mouseBtnSelect">NSSegmentedControl</string>
+                                               <string key="mouseDirSelect">NSSegmentedControl</string>
+                                               <string key="mouseSpeedSlider">NSSlider</string>
+                                               <string key="radioButtons">NSMatrix</string>
+                                               <string key="scrollDirSelect">NSSegmentedControl</string>
+                                               <string key="scrollSpeedSlider">NSSlider</string>
+                                               <string key="smoothCheck">NSButton</string>
+                                               <string key="title">NSTextField</string>
+                                               <string key="unknownMapping">NSButton</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+                                               <object class="IBToOneOutletInfo" key="keyInput">
+                                                       <string key="name">keyInput</string>
+                                                       <string key="candidateClassName">NJKeyInputField</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mappingPopup">
+                                                       <string key="name">mappingPopup</string>
+                                                       <string key="candidateClassName">NSPopUpButton</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mappingsController">
+                                                       <string key="name">mappingsController</string>
+                                                       <string key="candidateClassName">NJMappingsController</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mouseBtnSelect">
+                                                       <string key="name">mouseBtnSelect</string>
+                                                       <string key="candidateClassName">NSSegmentedControl</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mouseDirSelect">
+                                                       <string key="name">mouseDirSelect</string>
+                                                       <string key="candidateClassName">NSSegmentedControl</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="mouseSpeedSlider">
+                                                       <string key="name">mouseSpeedSlider</string>
+                                                       <string key="candidateClassName">NSSlider</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="radioButtons">
+                                                       <string key="name">radioButtons</string>
+                                                       <string key="candidateClassName">NSMatrix</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="scrollDirSelect">
+                                                       <string key="name">scrollDirSelect</string>
+                                                       <string key="candidateClassName">NSSegmentedControl</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="scrollSpeedSlider">
+                                                       <string key="name">scrollSpeedSlider</string>
+                                                       <string key="candidateClassName">NSSlider</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="smoothCheck">
+                                                       <string key="name">smoothCheck</string>
+                                                       <string key="candidateClassName">NSButton</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="title">
+                                                       <string key="name">title</string>
+                                                       <string key="candidateClassName">NSTextField</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="unknownMapping">
+                                                       <string key="name">unknownMapping</string>
+                                                       <string key="candidateClassName">NSButton</string>
+                                               </object>
+                                       </dictionary>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/NJOutputController.h</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">SUUpdater</string>
+                                       <string key="superclassName">NSObject</string>
+                                       <object class="NSMutableDictionary" key="actions">
+                                               <string key="NS.key.0">checkForUpdates:</string>
+                                               <string key="NS.object.0">id</string>
+                                       </object>
+                                       <object class="NSMutableDictionary" key="actionInfosByName">
+                                               <string key="NS.key.0">checkForUpdates:</string>
+                                               <object class="IBActionInfo" key="NS.object.0">
+                                                       <string key="name">checkForUpdates:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                       </object>
+                                       <object class="NSMutableDictionary" key="outlets">
+                                               <string key="NS.key.0">delegate</string>
+                                               <string key="NS.object.0">id</string>
+                                       </object>
+                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+                                               <string key="NS.key.0">delegate</string>
+                                               <object class="IBToOneOutletInfo" key="NS.object.0">
+                                                       <string key="name">delegate</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                       </object>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/SUUpdater.h</string>
+                                       </object>
+                               </object>
+                       </array>
                </object>
-               <object class="IBClassDescriber" key="IBDocument.Classes"/>
                <int key="IBDocument.localizationMode">0</int>
                <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
                <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>