Rename from Enjoy/Enjoy2 to 'Enjoyable'. While I'm mucking in the project file, enabl...
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Fri, 1 Mar 2013 02:03:51 +0000 (03:03 +0100)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Fri, 1 Mar 2013 02:03:51 +0000 (03:03 +0100)
25 files changed:
ApplicationController.m
ConfigsController.h
ConfigsController.m
English.lproj/MainMenu.xib
Enjoy.xcodeproj/TemplateIcon.icns [deleted file]
Enjoy.xcodeproj/project.pbxproj [deleted file]
Enjoy_Prefix.pch [deleted file]
Enjoyable.xcodeproj/TemplateIcon.icns [new file with mode: 0644]
Enjoyable.xcodeproj/project.pbxproj [new file with mode: 0644]
Enjoyable_Prefix.pch [new file with mode: 0644]
Info.plist
JSAction.h
JSActionAnalog.h
JSActionAnalog.m
JSActionButton.h
JSActionButton.m
JSActionHat.m
Joystick.m
JoystickController.h
JoystickController.m
NJEvents.h [new file with mode: 0644]
README.md
TargetController.m
TargetMouseBtn.m
TargetMouseMove.m

index dd3832367854af3fe0c8472987539074a6650aec..a3ad5ed24955f095252f004086bf8835f1532761 100644 (file)
@@ -49,8 +49,8 @@
     activeMenuItem.state = sendRealEvents;
 }
 
-- (NSUInteger)firstConfigMenuIndex {
-    NSUInteger count = dockMenuBase.numberOfItems;
+- (NSInteger)firstConfigMenuIndex {
+    NSInteger count = dockMenuBase.numberOfItems;
     for (int i = 0; i < count; ++i)
         if ([dockMenuBase itemAtIndex:i].isSeparatorItem)
             return i + 1;
@@ -58,7 +58,7 @@
 }
 
 - (void)configsChanged {
-    NSUInteger removeFrom = [self firstConfigMenuIndex];
+    NSInteger removeFrom = [self firstConfigMenuIndex];
     while (dockMenuBase.numberOfItems > removeFrom)
         [dockMenuBase removeItemAtIndex:dockMenuBase.numberOfItems - 1];
     for (Config *config in self.configsController.configs)
@@ -68,7 +68,7 @@
 }
 
 - (void)configChanged {
-    NSUInteger firstConfig = [self firstConfigMenuIndex];
+    NSInteger firstConfig = [self firstConfigMenuIndex];
     Config *current = self.configsController.currentConfig;
     NSArray *configs = self.configsController.configs;
     for (int i = 0; i < configs.count; ++i)
@@ -76,7 +76,7 @@
 }
 
 - (void)chooseConfig:(id)sender {
-    int idx = [dockMenuBase indexOfItem:sender] - [self firstConfigMenuIndex];
+    NSInteger idx = [dockMenuBase indexOfItem:sender] - [self firstConfigMenuIndex];
     Config *chosen = self.configsController.configs[idx];
     [_configsController activateConfig:chosen];
 }
index e616e1e9d89ff354c1afcf696382ba35b3e7377a..9d6d9a1d5d1e5c3a1ead35fe32f878adcfae4014 100644 (file)
@@ -9,7 +9,7 @@
 @class Config;
 @class TargetController;
 
-@interface ConfigsController : NSObject {
+@interface ConfigsController : NSObject <NSTableViewDataSource, NSTableViewDelegate> {
     IBOutlet NSButton *removeButton;
     IBOutlet NSTableView *tableView;
     IBOutlet TargetController *targetController;
index b4db790889fb9118a80b8aeec634631e463f3286..8870fab6d0aa3715c7fe1a9fde681601b38e7759 100644 (file)
@@ -60,7 +60,7 @@
     [(ApplicationController *)[[NSApplication sharedApplication] delegate] configsChanged];
     [tableView reloadData];
     [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:_configs.count - 1] byExtendingSelection:NO];
-    [tableView editColumn:0 row:[_configs count] - 1 withEvent:nil select:YES];
+    [tableView editColumn:0 row:_configs.count - 1 withEvent:nil select:YES];
 }
 
 - (IBAction)removePressed:(id)sender {
         [self activateConfig:_configs[tableView.selectedRow]];
 }
 
-- (id)tableView:(NSTableView *)view objectValueForTableColumn:(NSTableColumn *)column row:(int)index {
+- (id)tableView:(NSTableView *)view objectValueForTableColumn:(NSTableColumn *)column row:(NSInteger)index {
     return [_configs[index] name];
 }
 
-- (void)tableView:(NSTableView *)view setObjectValue:(NSString *)obj forTableColumn:(NSTableColumn *)col row:(int)index {
+- (void)tableView:(NSTableView *)view setObjectValue:(NSString *)obj forTableColumn:(NSTableColumn *)col row:(NSInteger)index {
     [(Config *)_configs[index] setName:obj];
     [tableView reloadData];
     [(ApplicationController *)[[NSApplication sharedApplication] delegate] configsChanged];
 }
 
-- (int)numberOfRowsInTableView:(NSTableView*)table {
-    return [_configs count];
+- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
+    return _configs.count;
 }
 
-- (BOOL)tableView:(NSTableView *)view shouldEditTableColumn:(NSTableColumn *)column row:(int)index {
+- (BOOL)tableView:(NSTableView *)view shouldEditTableColumn:(NSTableColumn *)column row:(NSInteger)index {
     return index > 0;
 }
 
         [newConfigs addObject:cfg];
     }
 
-    for (int i = 0; i < storedConfigs.count; ++i) {
+    for (unsigned i = 0; i < storedConfigs.count; ++i) {
         NSDictionary *entries = storedConfigs[i][@"entries"];
         Config *config = newConfigs[i];
         for (id key in entries)
     }
     
     if (newConfigs.count) {
-        int current = [envelope[@"selectedConfiguration"] unsignedIntValue];
+        unsigned current = [envelope[@"selectedConfiguration"] unsignedIntValue];
         if (current >= newConfigs.count)
             current = 0;
         _configs = newConfigs;
index d9cfe8e178571f797f7f25c1d6830f0b5673cc57..1b4989d5e28b06c4930b58d8e3b27d618b8d7dc3 100644 (file)
@@ -62,7 +62,7 @@
                                <array class="NSMutableArray" key="NSMenuItems">
                                        <object class="NSMenuItem" id="694149608">
                                                <reference key="NSMenu" ref="649796088"/>
-                                               <string key="NSTitle">Enjoy</string>
+                                               <string key="NSTitle">Enjoyable</string>
                                                <string key="NSKeyEquiv"/>
                                                <int key="NSKeyEquivModMask">1048576</int>
                                                <int key="NSMnemonicLoc">2147483647</int>
                                                </object>
                                                <string key="NSAction">submenuAction:</string>
                                                <object class="NSMenu" key="NSSubmenu" id="110575045">
-                                                       <string key="NSTitle">Enjoy</string>
+                                                       <string key="NSTitle">Enjoyable</string>
                                                        <array class="NSMutableArray" key="NSMenuItems">
                                                                <object class="NSMenuItem" id="238522557">
                                                                        <reference key="NSMenu" ref="110575045"/>
-                                                                       <string key="NSTitle">About Enjoy</string>
+                                                                       <string key="NSTitle">About Enjoyable</string>
                                                                        <string key="NSKeyEquiv"/>
                                                                        <int key="NSMnemonicLoc">2147483647</int>
                                                                        <reference key="NSOnImage" ref="35465992"/>
                                                                </object>
                                                                <object class="NSMenuItem" id="755159360">
                                                                        <reference key="NSMenu" ref="110575045"/>
-                                                                       <string key="NSTitle">Hide Enjoy</string>
+                                                                       <string key="NSTitle">Hide Enjoyable</string>
                                                                        <string key="NSKeyEquiv">h</string>
                                                                        <int key="NSKeyEquivModMask">1048576</int>
                                                                        <int key="NSMnemonicLoc">2147483647</int>
                                                                </object>
                                                                <object class="NSMenuItem" id="632727374">
                                                                        <reference key="NSMenu" ref="110575045"/>
-                                                                       <string key="NSTitle">Quit Enjoy</string>
+                                                                       <string key="NSTitle">Quit Enjoyable</string>
                                                                        <string key="NSKeyEquiv">q</string>
                                                                        <int key="NSKeyEquivModMask">1048576</int>
                                                                        <int key="NSMnemonicLoc">2147483647</int>
                                <int key="NSWindowBacking">2</int>
                                <string key="NSWindowRect">{{355, 59}, {640, 300}}</string>
                                <int key="NSWTFlags">1685585920</int>
-                               <string key="NSWindowTitle">Enjoy</string>
+                               <string key="NSWindowTitle">Enjoyable</string>
                                <string key="NSWindowClass">NSWindow</string>
                                <object class="NSToolbar" key="NSViewClass" id="1043384830">
                                        <object class="NSMutableString" key="NSToolbarIdentifier">
                                <nil key="NSUserInterfaceItemIdentifier"/>
                                <string key="NSWindowContentMinSize">{640, 300}</string>
                                <object class="NSView" key="NSWindowView" id="177223957">
-                                       <reference key="NSNextResponder"/>
+                                       <nil key="NSNextResponder"/>
                                        <int key="NSvFlags">256</int>
                                        <array class="NSMutableArray" key="NSSubviews">
                                                <object class="NSSplitView" id="206489479">
                                                                                                                        <int key="NSvFlags">256</int>
                                                                                                                        <string key="NSFrameSize">{200, 298}</string>
                                                                                                                        <reference key="NSSuperview" ref="698362889"/>
-                                                                                                                       <reference key="NSWindow"/>
                                                                                                                        <reference key="NSNextKeyView" ref="892486973"/>
                                                                                                                        <bool key="NSEnabled">YES</bool>
                                                                                                                        <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                                                        </array>
                                                                                                        <string key="NSFrame">{{1, 1}, {200, 298}}</string>
                                                                                                        <reference key="NSSuperview" ref="364857164"/>
-                                                                                                       <reference key="NSWindow"/>
                                                                                                        <reference key="NSNextKeyView" ref="365506042"/>
                                                                                                        <reference key="NSDocView" ref="365506042"/>
                                                                                                        <reference key="NSBGColor" ref="834857663"/>
                                                                                                        <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="606740242"/>
                                                                                                        <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                                                        <reference key="NSTarget" ref="364857164"/>
                                                                                                        <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>
                                                                                        </array>
                                                                                        <string key="NSFrameSize">{202, 300}</string>
                                                                                        <reference key="NSSuperview" ref="977242492"/>
-                                                                                       <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="698362889"/>
                                                                                        <int key="NSsFlags">133650</int>
                                                                                        <reference key="NSVScroller" ref="1036252745"/>
                                                                        </array>
                                                                        <string key="NSFrameSize">{202, 300}</string>
                                                                        <reference key="NSSuperview" ref="206489479"/>
-                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="364857164"/>
                                                                        <string key="NSClassName">NSView</string>
                                                                </object>
                                                                                        <int key="NSvFlags">268</int>
                                                                                        <string key="NSFrame">{{227, 123}, {180, 24}}</string>
                                                                                        <reference key="NSSuperview" ref="606740242"/>
-                                                                                       <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="125828224"/>
                                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                                        <bool key="NSEnabled">YES</bool>
                                                                                        <int key="NSvFlags">268</int>
                                                                                        <string key="NSFrame">{{227, 55}, {180, 24}}</string>
                                                                                        <reference key="NSSuperview" ref="606740242"/>
-                                                                                       <reference key="NSWindow"/>
                                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                                        <bool key="NSEnabled">YES</bool>
                                                                                        <object class="NSSegmentedCell" key="NSCell" id="301345285">
                                                                                        <int key="NSvFlags">268</int>
                                                                                        <string key="NSFrame">{{227, 89}, {180, 24}}</string>
                                                                                        <reference key="NSSuperview" ref="606740242"/>
-                                                                                       <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="921829691"/>
                                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                                        <bool key="NSEnabled">YES</bool>
                                                                                        <int key="NSvFlags">268</int>
                                                                                        <string key="NSFrame">{{20, 16}, {201, 236}}</string>
                                                                                        <reference key="NSSuperview" ref="606740242"/>
-                                                                                       <reference key="NSWindow"/>
                                                                                        <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                                        <int key="NSNumRows">7</int>
                                                                                        <int key="NSNumCols">1</int>
                                                                                                        <int key="NSTag">1</int>
                                                                                                        <int key="NSButtonFlags">1211912448</int>
                                                                                                        <int key="NSButtonFlags2">0</int>
+                                                                                                       <object class="NSCustomResource" key="NSNormalImage" id="421587711">
+                                                                                                               <string key="NSClassName">NSImage</string>
+                                                                                                               <string key="NSResourceName">NSRadioButton</string>
+                                                                                                       </object>
                                                                                                        <object class="NSButtonImageSource" key="NSAlternateImage" id="68833793">
                                                                                                                <string key="NSImageName">NSRadioButton</string>
                                                                                                        </object>
                                                                                                        <reference key="NSControlView" ref="120408205"/>
                                                                                                        <int key="NSButtonFlags">1211912448</int>
                                                                                                        <int key="NSButtonFlags2">0</int>
-                                                                                                       <object class="NSImage" key="NSNormalImage">
-                                                                                                               <int key="NSImageFlags">549453824</int>
-                                                                                                               <string key="NSSize">{18, 18}</string>
-                                                                                                               <array class="NSMutableArray" key="NSReps">
-                                                                                                                       <array>
-                                                                                                                               <integer value="0"/>
-                                                                                                                               <object class="NSBitmapImageRep">
-                                                                                                                                       <object class="NSData" key="NSTIFFRepresentation">
-                                                                                                                                               <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
-cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBs2U706y3Sst1fqit5+wYbUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
-BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
-AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
-AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
-cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
-AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
-SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
-hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
-vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
-7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
-Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
-aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
-n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
-2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
-FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
-Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
-ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
-rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
-AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
-AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
-A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
-DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
-HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
-MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
-UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
-eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
-rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
-5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
-AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
-CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
-GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
-MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
-UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
-d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
-pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
-0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
-AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
-BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
-FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
-LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
-Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
-h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
-svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
-1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
-8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
-AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
-QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
-                                                                                                                                       </object>
-                                                                                                                               </object>
-                                                                                                                       </array>
-                                                                                                               </array>
-                                                                                                               <object class="NSColor" key="NSColor" id="390477704">
-                                                                                                                       <int key="NSColorSpace">3</int>
-                                                                                                                       <bytes key="NSWhite">MCAwAA</bytes>
-                                                                                                               </object>
-                                                                                                       </object>
+                                                                                                       <reference key="NSNormalImage" ref="421587711"/>
                                                                                                        <reference key="NSAlternateImage" ref="68833793"/>
+                                                                                                       <string key="NSAlternateContents"/>
                                                                                                        <int key="NSPeriodicDelay">400</int>
                                                                                                        <int key="NSPeriodicInterval">75</int>
                                                                                                </object>
@@ -850,114 +752,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
                                                                                                        <reference key="NSControlView" ref="120408205"/>
                                                                                                        <int key="NSButtonFlags">1211912448</int>
                                                                                                        <int key="NSButtonFlags2">0</int>
-                                                                                                       <object class="NSImage" key="NSNormalImage">
-                                                                                                               <int key="NSImageFlags">549453824</int>
-                                                                                                               <string key="NSSize">{18, 18}</string>
-                                                                                                               <array class="NSMutableArray" key="NSReps">
-                                                                                                                       <array>
-                                                                                                                               <integer value="0"/>
-                                                                                                                               <object class="NSBitmapImageRep">
-                                                                                                                                       <object class="NSData" key="NSTIFFRepresentation">
-                                                                                                                                               <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAA/IAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAPyGFw
-cGwCAAAAbW50clJHQiBYWVogB9kAAQADAAMAKAAGYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBsb8eVHQFOPjN5TLvuA3pUdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAA
-B+wAAAY+ZGVzYwAADiwAAABfZHNjbQAADowAAADwbW1vZAAAD3wAAAAoY3BydAAAD6QAAAAkWFlaIAAA
-AAAAAHebAAA+KgAAAWRYWVogAAAAAAAAWbgAAK3VAAAZCFhZWiAAAAAAAAAlggAAFBwAALi5WFlaIAAA
-AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
-cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
-AQAAAgAAABAAOAB0AMIBMgHaArQDvgT0BnEIEAnrC+YN9hAXEkYUaRaHGJUanRyjHqkgsSK7JM8m5Cju
-KvwtCC8UMQ4zBjT5Ntw4tDp9PEQ99D+fQUdC1ERURalHA0hVSalK+ExBTYpOy1AMUUtShFO7VO5WH1dP
-WIBZrlrbXAddNV5dX5BgwmHvYxtkRWVqZopnqWjEadxq8mwGbRhuK286cEpxXnJvc390k3Wjdqh3pnij
-eaB6nnudfJt9mX6Yf5uAnYGhgqaDr4S7hcaG1ofoiP2KEYsljD2NV45uj4iQoJG+ktmT9JURliyXRJhb
-mW2af5uTnJudp56un7Ggs6GxoqyjsqSwpbOmsKevqKipnqqWq4eseK1lrlKvPLAjsQix7bLRs7C0kLVy
-tle3Q7gyuSC6Drr6u+S8y72wvpS/d8BZwTvCHML7w9zEvMWdxn3HYMhCyR3J68qny2LMHMzXzZPOUM8N
-z8vQjNFO0hHS19Oe1GbVL9X71sXXk9hj2S7Z7tqV2zvb4dyN3Trd596Y30nf/OCx4WXiGuLP44LkNeTo
-5ZfmRub0557oNOi86TvpuOo16rPrMuux7DPstu067b/uRe7M71Tv3fBo8PPxffII8pTzIfOy9ET01/Vo
-9fn2jPcf97H4RPjZ+W/6Bfqd+zj71fxz/RP9t/5b/wD/f///AAAADwA0AGsAtAERAaYCWgM3BE0Fogcl
-CN8KzwzSDukRBRMZFSYXHBkGGucc0x61IKMikySEJm4oYCpJLDUuEy/rMbwzgjU8Nug4kDopO7Y9Qz61
-QBpBXEKgQ91FGUZUR4VItUniSwxMMk1UTnRPj1CoUcBS11PtVQFWElcnWDpZXlqCW6JcwV3fXvlgEGEm
-YjhjSGRVZWJmamd4aH9pimqUa59sqW21brxvtnCocZhyhnN1dGd1V3ZIdzl4LHkhehZ7DHwFfQB9+375
-f/uA/YH/gwCEAYUAhf6G/ogAiQaKDYsUjB6NKY40jz6QRZFNklaTWpRelWCWX5dcmFaZUJpQm02cS51I
-nkOfPKAzoSmiHKMNo/yk66XZpsGnqKiPqXaqV6s6rB2tBK30ruev27DOsb+yr7OctIi1c7Zdt0e4MLkY
-uf+65rvNvLW9m76Ev2vAT8EswgDC0MOkxHTFRMYUxuTHtciGyVfKKcr7y87Moc10zkjPHc/z0MzRo9Jz
-0z7UB9TO1ZzWaNc12AHYzdmb2mfbMtv83MTdid5N3w/fz+CN4UniAuK643HkKOTg5ZLmReb356XoUuj/
-6anqUer465zsP+zh7YPuJO7F72XwBvCu8WjyLfL187j0fPU/9gD2vPd3+DD45/ma+kv6+/up/Fb9Af2t
-/lf+//9///8AAAANAC4AYAChAPEBbgIFAskDsQTGBfsHXgjaCmsMCQ2pD0oQ5BJ1E/kVghcHGIsaFhul
-HToexCBOIdojYyTnJmIn2SlJKq8sCS1iLqov7TEwMl0zfTSINZA2lDeXOJc5kzqMO4E8dj1oPlc/REAu
-QRVB/ELhQ8dEqkWNRnFHU0hJST9KMksmTBlNCU34TuVP0lC+UapSlVN/VGxVV1ZEVzNYIVkPWf9a6VvE
-XJVdZF4xXwBfz2CfYW5iPWMNY95krmWAZlRnKGf8aNNprWqHa19sNW0Dbc1uk29ccCZw83HBco9zX3Qv
-dP51y3aWd2B4KXjuebF6c3sue+h8o31mflF/O4AmgRCB9oLZg7qEmoV2hlCHKYgAiNeJq4p+i1KMJYz3
-jcmOno90kFqRQpIpkw+T9JTYlbuWnJd8mF2ZPpohmwSb6JzNnbSenZ+HoHShYqJKoyWj9aTApZCmXqcu
-qACo0qmoqoKrXqw8rR6uAq7or8+wvbGnspazibR4tVq2MbcEt9i4tLmRunC7Urw3vR6+B77xv9vAxcGt
-wpbDfcRixUbGJ8cGx+fI2cnKysLLs8ypzZ3OkM+C0HfRatJc007UP9Ux1iHXEtgE2PTZ49rU28fc4N4G
-3zDgXOGP4svkE+Vo5sroR+nU637tPO8X8Q/zHPVE94f53Pw//pP//wAAbmRpbgAAAAAAAAY2AACl8AAA
-VwMAAEopAACaUQAAJhgAABL1AABQDQAAVDkAAtR6AAJ9cAABq4UAAwEAAAIAAAAxAFIAbgCIAKEAtwDO
-AOQA+QEOASMBOAFNAWMBeAGPAaUBvAHUAewCBgIfAjoCVgJyApACrQLMAusDCwMrA0wDbQOPA7ED0wP2
-BBkEPQRiBIgErgTUBPsFIwVLBXQFnwXKBfYGIwZQBn8GrwbhBxMHSAd+B7QH7AgnCGMIoAjfCR4JYgmo
-CfEKRAqXCusLQwuaC/QMUAyvDQ4NcQ3WDjwOpA8PD3wP6xBdENERRhG8EjUSrxMsE6oUKBSrFSoVqxYu
-FrUXPRfHGFUY5xl6GhEaqxtIG+ccih0uHdQefh8oH9IgfyEvId0ijiNJJAwk0SWZJmInKyf3KMUplCpi
-KzIsAizULaQucy9FMBUw5DGzMoMzVjQpNPk1zDaiN3c4TzkjOfw61TuwPIs9aj5MPzFAHEEHQfJC6UPe
-RNlF2kbdR+ZI9Un5SwhME00lTjhPUlByUZJSvFPoVRtWUFeLWM9aFVtcXK5eAV9TYKFh42MqZHFlv2cQ
-aGhpxWsnbItt9G9fcNByQHO1dSl2oHgVeY57JnzwfsGAloJnhD2GEIfeia6LeI1BjwyQz5KZlFyWHJf9
-mjKccp6eoMui8KUTpzOpVKt6raiv2LIWtFy2trmrvO3AKcNhxofJqczEz9rS6dX+2RPcD98I4gzlDegV
-6xbuEvEH8+v2yfmT/F7//wAAADUAWgB7AJgAsgDKAOIA+QEPASQBOgFQAWYBfAGTAaoBwgHbAfQCDgIp
-AkYCYwKCAqECwgLjAwQDJgNKA20DkQO1A9oD/wQlBEwEdAScBMQE7gUYBUMFbgWbBckF+AYoBlkGiwa/
-BvQHKwdkB54H2QgWCFYImAjaCR4JZwmyCgIKWwqzCw8LbQvMDC0Mkgz5DWINzg48Dq0PIQ+XEBAQjREL
-EYsSDhKTExoTpRQuFLsVQBXHFlIW3xdtF/4YkxkrGcQaYhsCG6YcSxz1HZ0eSx75H6ggWSEMIcAidSM2
-JAMk0yWnJnwnUSgpKQMp3iq5K5Uscy1RLi4vDC/rMMgxpTKEM2Y0STUvNhk3AzfuONc5vzqqO5Q8fj1p
-PlY/R0A7QS9CI0MhRB1FHkYlRy5IPUlMSlZLaEx3TYxOo0/AUOBSBFMtVFtVjFa/V/xZPVqAW8ZdF15l
-X7dg+WI4Y3hkuWYBZ0pommnua0Vsn238b1twwXImc5B0+XZmd9F5QXq7fEx97H+HgS2C0oR9hieH0omB
-iy+M346QkEKR9JOolVaXCpjVmqycip5boDOiC6PqpcSnp6mOq4Cte698sYqznrXEt++6I7xWvp3A5sNC
-xaXIF8qXzSbPwNJf1QfXttpH3HzequDn4yblb+fJ6i7soO8l8bX0Ufb7+ab8YP//AAAAOwBlAIkAqgDI
-AOYBAgEeAToBVgFzAZABrgHNAe0CDgIxAlUCewKjAssC9AMfA0sDdwOkA9EEAAQuBF8EkQTEBPcFLAVi
-BZkF0gYNBkkGhwbHBwkHTgeWB94IKwh7CM0JIAl6CdgKQQqtCx0LkAwFDH8M/A1+DgIOig8WD6YQOhDS
-EW0SCxKsE1IT+BSjFUIV4xaIFy8X2BiGGTcZ6xqiG1scFxzXHZYeWR8dH+EgqCFxIjkjDyP7JOwl4ibZ
-J9IozynOKs4r0SzWLdou4C/oMO0x9DL/NBA1MDZcN4c4sjnbOwY8Mj1fPpE/zEEKQk5DnUTzRlZHwkke
-SjtLYkyITbVO6FAiUV9SplPwVUFWlFfvWU9ar1wUXX5e5WBLYZdi52Q5ZY9m6mhIaaxrE2x6beNvS3C2
-ch9ziXTwdlh3vHkhepR8Kn3Vf3eBIILFhGqGCoekiT2K0Ixgje2Pe5D/koqUD5WPlxiYwpqDnEed+5+u
-oV6jCaSxplan+6mgq0is9a6ksFeyELPPtZi3ZLkMuri8Wb4Jv7DBXsMQxMPGdMgqyePLoM1dzx3Q4dKi
-1GjWNNf82cPbSdzD3jnfsOEj4o3j7+VJ5prn4ekf6kzrcOyO7Z3up++q8KHxlPJ782H0QfUf9fX2yfeV
-+F/5J/ns+rD7cfwz/O/9qf6S//8AAGRlc2MAAAAAAAAABWlNYWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1s
-dWMAAAAAAAAAEgAAAAxuYk5PAAAACAAAAOhwdFBUAAAACAAAAOhzdlNFAAAACAAAAOhmaUZJAAAACAAA
-AOhkYURLAAAACAAAAOh6aENOAAAACAAAAOhmckZSAAAACAAAAOhqYUpQAAAACAAAAOhlblVTAAAACAAA
-AOhwbFBMAAAACAAAAOhwdEJSAAAACAAAAOhlc0VTAAAACAAAAOh6aFRXAAAACAAAAOhydVJVAAAACAAA
-AOhrb0tSAAAACAAAAOhkZURFAAAACAAAAOhubE5MAAAACAAAAOhpdElUAAAACAAAAOgAaQBNAGEAY21t
-b2QAAAAAAAAGEAAAnGsAAAAAv9OKeAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBs
-ZSwgSW5jLiwgMjAwOQA</bytes>
-                                                                                                                                       </object>
-                                                                                                                               </object>
-                                                                                                                       </array>
-                                                                                                               </array>
-                                                                                                               <reference key="NSColor" ref="390477704"/>
-                                                                                                       </object>
+                                                                                                       <reference key="NSNormalImage" ref="421587711"/>
                                                                                                        <reference key="NSAlternateImage" ref="68833793"/>
+                                                                                                       <string key="NSAlternateContents"/>
                                                                                                        <int key="NSPeriodicDelay">400</int>
                                                                                                        <int key="NSPeriodicInterval">75</int>
                                                                                                </object>
@@ -969,7 +766,9 @@ ZSwgSW5jLiwgMjAwOQA</bytes>
                                                                                                        <reference key="NSControlView" ref="120408205"/>
                                                                                                        <int key="NSButtonFlags">1211912448</int>
                                                                                                        <int key="NSButtonFlags2">0</int>
+                                                                                                       <reference key="NSNormalImage" ref="421587711"/>
                                                                                                        <reference key="NSAlternateImage" ref="68833793"/>
+                                                                                                       <string key="NSAlternateContents"/>
                                                                                                        <int key="NSPeriodicDelay">400</int>
                                                                                                        <int key="NSPeriodicInterval">75</int>
                                                                                                </object>
@@ -981,7 +780,9 @@ ZSwgSW5jLiwgMjAwOQA</bytes>
                                                                                                        <reference key="NSControlView" ref="120408205"/>
                                                                                                        <int key="NSButtonFlags">1211912448</int>
                                                                                                        <int key="NSButtonFlags2">0</int>
+                                                                                                       <reference key="NSNormalImage" ref="421587711"/>
                                                                                                        <reference key="NSAlternateImage" ref="68833793"/>
+                                                                                                       <string key="NSAlternateContents"/>
                                                                                                        <int key="NSPeriodicDelay">400</int>
                                                                                                        <int key="NSPeriodicInterval">75</int>
                                                                                                </object>
@@ -993,7 +794,9 @@ ZSwgSW5jLiwgMjAwOQA</bytes>
                                                                                                        <reference key="NSControlView" ref="120408205"/>
                                                                                                        <int key="NSButtonFlags">1211912448</int>
                                                                                                        <int key="NSButtonFlags2">0</int>
+                                                                                                       <reference key="NSNormalImage" ref="421587711"/>
                                                                                                        <reference key="NSAlternateImage" ref="68833793"/>
+                                                                                                       <string key="NSAlternateContents"/>
                                                                                                        <int key="NSPeriodicDelay">400</int>
                                                                                                        <int key="NSPeriodicInterval">75</int>
                                                                                                </object>
@@ -1005,7 +808,9 @@ ZSwgSW5jLiwgMjAwOQA</bytes>
                                                                                                        <reference key="NSControlView" ref="120408205"/>
                                                                                                        <int key="NSButtonFlags">1211912448</int>
                                                                                                        <int key="NSButtonFlags2">0</int>
+                                                                                                       <reference key="NSNormalImage" ref="421587711"/>
                                                                                                        <reference key="NSAlternateImage" ref="68833793"/>
+                                                                                                       <string key="NSAlternateContents"/>
                                                                                                        <int key="NSPeriodicDelay">400</int>
                                                                                                        <int key="NSPeriodicInterval">75</int>
                                                                                                </object>
@@ -1021,46 +826,9 @@ ZSwgSW5jLiwgMjAwOQA</bytes>
                                                                                                <reference key="NSSupport" ref="45863614"/>
                                                                                                <int key="NSButtonFlags">1211912448</int>
                                                                                                <int key="NSButtonFlags2">0</int>
-                                                                                               <object class="NSImage" key="NSNormalImage">
-                                                                                                       <int key="NSImageFlags">549453824</int>
-                                                                                                       <string key="NSSize">{18, 18}</string>
-                                                                                                       <array class="NSMutableArray" key="NSReps">
-                                                                                                               <array>
-                                                                                                                       <integer value="0"/>
-                                                                                                                       <object class="NSBitmapImageRep">
-                                                                                                                               <object class="NSData" key="NSTIFFRepresentation">
-                                                                                                                                       <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
-                                                                                                                               </object>
-                                                                                                                       </object>
-                                                                                                               </array>
-                                                                                                       </array>
-                                                                                                       <reference key="NSColor" ref="390477704"/>
-                                                                                               </object>
+                                                                                               <reference key="NSNormalImage" ref="421587711"/>
                                                                                                <reference key="NSAlternateImage" ref="68833793"/>
+                                                                                               <string key="NSAlternateContents"/>
                                                                                                <int key="NSPeriodicDelay">400</int>
                                                                                                <int key="NSPeriodicInterval">75</int>
                                                                                        </object>
@@ -1080,7 +848,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                                                                        <int key="NSvFlags">268</int>
                                                                                        <string key="NSFrame">{{226, 156}, {182, 26}}</string>
                                                                                        <reference key="NSSuperview" ref="606740242"/>
-                                                                                       <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="875916470"/>
                                                                                        <bool key="NSEnabled">YES</bool>
                                                                                        <object class="NSPopUpButtonCell" key="NSCell" id="74311158">
@@ -1113,7 +880,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                                                                        <int key="NSvFlags">266</int>
                                                                                        <string key="NSFrame">{{0, 269}, {429, 17}}</string>
                                                                                        <reference key="NSSuperview" ref="606740242"/>
-                                                                                       <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="497528019"/>
                                                                                        <bool key="NSEnabled">YES</bool>
                                                                                        <object class="NSTextFieldCell" key="NSCell" id="853503577">
@@ -1137,7 +903,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                                                                        <int key="NSvFlags">12</int>
                                                                                        <string key="NSFrame">{{0, 258}, {465, 5}}</string>
                                                                                        <reference key="NSSuperview" ref="606740242"/>
-                                                                                       <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="120408205"/>
                                                                                        <string key="NSOffsets">{0, 0}</string>
                                                                                        <object class="NSTextFieldCell" key="NSTitleCell">
@@ -1166,28 +931,23 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                                                                                        <int key="NSvFlags">265</int>
                                                                                        <string key="NSFrame">{{229, 190}, {176, 24}}</string>
                                                                                        <reference key="NSSuperview" ref="606740242"/>
-                                                                                       <reference key="NSWindow"/>
                                                                                        <string key="NSReuseIdentifierKey">_NS:9</string>
                                                                                        <string key="NSClassName">KeyInputTextView</string>
                                                                                </object>
                                                                        </array>
                                                                        <string key="NSFrame">{{211, 0}, {429, 300}}</string>
                                                                        <reference key="NSSuperview" ref="206489479"/>
-                                                                       <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="1016088174"/>
                                                                        <string key="NSClassName">NSView</string>
                                                                </object>
                                                        </array>
                                                        <string key="NSFrameSize">{640, 300}</string>
                                                        <reference key="NSSuperview" ref="177223957"/>
-                                                       <reference key="NSWindow"/>
                                                        <reference key="NSNextKeyView" ref="977242492"/>
                                                        <bool key="NSIsVertical">YES</bool>
                                                </object>
                                        </array>
                                        <string key="NSFrameSize">{640, 300}</string>
-                                       <reference key="NSSuperview"/>
-                                       <reference key="NSWindow"/>
                                        <reference key="NSNextKeyView" ref="206489479"/>
                                </object>
                                <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
@@ -2749,6 +2509,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
                        <string key="NSMenuCheckmark">{11, 11}</string>
                        <string key="NSMenuMixedState">{10, 3}</string>
                        <string key="NSMultipleDocuments">{32, 32}</string>
+                       <string key="NSRadioButton">{16, 15}</string>
                        <string key="NSRemoveTemplate">{8, 8}</string>
                </dictionary>
        </data>
diff --git a/Enjoy.xcodeproj/TemplateIcon.icns b/Enjoy.xcodeproj/TemplateIcon.icns
deleted file mode 100644 (file)
index 62cb701..0000000
Binary files a/Enjoy.xcodeproj/TemplateIcon.icns and /dev/null differ
diff --git a/Enjoy.xcodeproj/project.pbxproj b/Enjoy.xcodeproj/project.pbxproj
deleted file mode 100644 (file)
index 642e5e2..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-// !$*UTF8*$!
-{
-       archiveVersion = 1;
-       classes = {
-       };
-       objectVersion = 46;
-       objects = {
-
-/* Begin PBXBuildFile section */
-               1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
-               8B7E476C15C314A200C588FA /* TargetMouseBtn.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7E476B15C314A200C588FA /* TargetMouseBtn.m */; };
-               8BD9B54315C230FF00929C5D /* TargetMouseMove.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD9B54215C230FE00929C5D /* TargetMouseMove.m */; };
-               8BEFAD9C15C46BFF00823AEC /* TargetMouseScroll.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BEFAD9B15C46BFF00823AEC /* TargetMouseScroll.m */; };
-               8BEFADA015C476DC00823AEC /* TargetToggleMouseScope.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BEFAD9F15C476DC00823AEC /* TargetToggleMouseScope.m */; };
-               8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
-               8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
-               8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
-               D549CA4C0FBB441B00BC8203 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = D549CA4B0FBB441B00BC8203 /* Credits.rtf */; };
-               D5617A360FAEB74000928B3A /* ConfigsController.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617A350FAEB74000928B3A /* ConfigsController.m */; };
-               D5617A390FAEBA1800928B3A /* Config.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617A380FAEBA1800928B3A /* Config.m */; };
-               D5617D1A0FAF568100928B3A /* JSActionButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617D190FAF568100928B3A /* JSActionButton.m */; };
-               D5617D260FAF579300928B3A /* JSActionHat.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617D250FAF579300928B3A /* JSActionHat.m */; };
-               D5617D2B0FAF579A00928B3A /* JSActionAnalog.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617D2A0FAF579A00928B3A /* JSActionAnalog.m */; };
-               D5617FD60FAFD06000928B3A /* Target.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FD50FAFD06000928B3A /* Target.m */; };
-               D5617FD90FAFD1E600928B3A /* TargetKeyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FD80FAFD1E600928B3A /* TargetKeyboard.m */; };
-               D5617FE40FAFD7B000928B3A /* TargetController.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FE30FAFD7B000928B3A /* TargetController.m */; };
-               D5617FE70FAFDB5800928B3A /* KeyInputTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FE60FAFDB5800928B3A /* KeyInputTextView.m */; };
-               D594BE860FAE6219007A85F2 /* Joystick.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BE850FAE6219007A85F2 /* Joystick.m */; };
-               D594BE8A0FAE64AD007A85F2 /* JSAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BE890FAE64AD007A85F2 /* JSAction.m */; };
-               D594BEF90FAE6FF2007A85F2 /* JoystickController.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BEF80FAE6FF2007A85F2 /* JoystickController.m */; };
-               D594BF000FAE7397007A85F2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D594BEFF0FAE7397007A85F2 /* IOKit.framework */; };
-               D594BF830FAE9661007A85F2 /* ApplicationController.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BF820FAE9661007A85F2 /* ApplicationController.m */; };
-               D5F809710FB093400006A4DE /* TargetConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D5F809700FB093400006A4DE /* TargetConfig.m */; };
-               D5F80A9D0FB0A2FF0006A4DE /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = D5617A080FAEAF8300928B3A /* icon.icns */; };
-               EE1D7C9216E01E7000B000EB /* NSView+FirstResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1D7C9116E01E7000B000EB /* NSView+FirstResponder.m */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
-               089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-               1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-               13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
-               1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
-               29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
-               29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
-               29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
-               32CA4F630368D1EE00C91783 /* Enjoy_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Enjoy_Prefix.pch; sourceTree = "<group>"; };
-               8B7E476A15C314A200C588FA /* TargetMouseBtn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetMouseBtn.h; sourceTree = "<group>"; };
-               8B7E476B15C314A200C588FA /* TargetMouseBtn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetMouseBtn.m; sourceTree = "<group>"; };
-               8BD9B54115C230FE00929C5D /* TargetMouseMove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetMouseMove.h; sourceTree = "<group>"; };
-               8BD9B54215C230FE00929C5D /* TargetMouseMove.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetMouseMove.m; sourceTree = "<group>"; };
-               8BEFAD9A15C46BFF00823AEC /* TargetMouseScroll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetMouseScroll.h; sourceTree = "<group>"; };
-               8BEFAD9B15C46BFF00823AEC /* TargetMouseScroll.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetMouseScroll.m; sourceTree = "<group>"; };
-               8BEFAD9E15C476DC00823AEC /* TargetToggleMouseScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetToggleMouseScope.h; sourceTree = "<group>"; };
-               8BEFAD9F15C476DC00823AEC /* TargetToggleMouseScope.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetToggleMouseScope.m; sourceTree = "<group>"; };
-               8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-               8D1107320486CEB800E47090 /* Enjoy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Enjoy.app; sourceTree = BUILT_PRODUCTS_DIR; };
-               D549CA4B0FBB441B00BC8203 /* Credits.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = Credits.rtf; sourceTree = "<group>"; };
-               D5617A080FAEAF8300928B3A /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = "<group>"; };
-               D5617A340FAEB74000928B3A /* ConfigsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfigsController.h; sourceTree = "<group>"; };
-               D5617A350FAEB74000928B3A /* ConfigsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfigsController.m; sourceTree = "<group>"; };
-               D5617A370FAEBA1800928B3A /* Config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = "<group>"; };
-               D5617A380FAEBA1800928B3A /* Config.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Config.m; sourceTree = "<group>"; };
-               D5617D180FAF568100928B3A /* JSActionButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActionButton.h; sourceTree = "<group>"; };
-               D5617D190FAF568100928B3A /* JSActionButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSActionButton.m; sourceTree = "<group>"; };
-               D5617D240FAF579300928B3A /* JSActionHat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActionHat.h; sourceTree = "<group>"; };
-               D5617D250FAF579300928B3A /* JSActionHat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSActionHat.m; sourceTree = "<group>"; };
-               D5617D290FAF579A00928B3A /* JSActionAnalog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActionAnalog.h; sourceTree = "<group>"; };
-               D5617D2A0FAF579A00928B3A /* JSActionAnalog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSActionAnalog.m; sourceTree = "<group>"; };
-               D5617FD40FAFD06000928B3A /* Target.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Target.h; sourceTree = "<group>"; };
-               D5617FD50FAFD06000928B3A /* Target.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Target.m; sourceTree = "<group>"; };
-               D5617FD70FAFD1E600928B3A /* TargetKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetKeyboard.h; sourceTree = "<group>"; };
-               D5617FD80FAFD1E600928B3A /* TargetKeyboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetKeyboard.m; sourceTree = "<group>"; };
-               D5617FE20FAFD7B000928B3A /* TargetController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetController.h; sourceTree = "<group>"; };
-               D5617FE30FAFD7B000928B3A /* TargetController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetController.m; sourceTree = "<group>"; };
-               D5617FE50FAFDB5800928B3A /* KeyInputTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyInputTextView.h; sourceTree = "<group>"; };
-               D5617FE60FAFDB5800928B3A /* KeyInputTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KeyInputTextView.m; sourceTree = "<group>"; };
-               D56180090FAFE8E400928B3A /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
-               D594BE840FAE6219007A85F2 /* Joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Joystick.h; sourceTree = "<group>"; };
-               D594BE850FAE6219007A85F2 /* Joystick.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Joystick.m; sourceTree = "<group>"; };
-               D594BE880FAE64AD007A85F2 /* JSAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAction.h; sourceTree = "<group>"; };
-               D594BE890FAE64AD007A85F2 /* JSAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSAction.m; sourceTree = "<group>"; };
-               D594BEF70FAE6FF2007A85F2 /* JoystickController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JoystickController.h; sourceTree = "<group>"; };
-               D594BEF80FAE6FF2007A85F2 /* JoystickController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JoystickController.m; sourceTree = "<group>"; };
-               D594BEFF0FAE7397007A85F2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
-               D594BF810FAE9661007A85F2 /* ApplicationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationController.h; sourceTree = "<group>"; };
-               D594BF820FAE9661007A85F2 /* ApplicationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApplicationController.m; sourceTree = "<group>"; };
-               D5F8096F0FB093400006A4DE /* TargetConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetConfig.h; sourceTree = "<group>"; };
-               D5F809700FB093400006A4DE /* TargetConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetConfig.m; sourceTree = "<group>"; };
-               EE1D7C9016E01E7000B000EB /* NSView+FirstResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSView+FirstResponder.h"; sourceTree = "<group>"; };
-               EE1D7C9116E01E7000B000EB /* NSView+FirstResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSView+FirstResponder.m"; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-               8D11072E0486CEB800E47090 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
-                               D594BF000FAE7397007A85F2 /* IOKit.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-               080E96DDFE201D6D7F000001 /* Classes */ = {
-                       isa = PBXGroup;
-                       children = (
-                               D5617D290FAF579A00928B3A /* JSActionAnalog.h */,
-                               D5617D2A0FAF579A00928B3A /* JSActionAnalog.m */,
-                               D594BE840FAE6219007A85F2 /* Joystick.h */,
-                               D594BE850FAE6219007A85F2 /* Joystick.m */,
-                               D594BE880FAE64AD007A85F2 /* JSAction.h */,
-                               D594BE890FAE64AD007A85F2 /* JSAction.m */,
-                               D5617D240FAF579300928B3A /* JSActionHat.h */,
-                               D5617D250FAF579300928B3A /* JSActionHat.m */,
-                               D5617D180FAF568100928B3A /* JSActionButton.h */,
-                               D5617D190FAF568100928B3A /* JSActionButton.m */,
-                               D594BEF70FAE6FF2007A85F2 /* JoystickController.h */,
-                               D594BEF80FAE6FF2007A85F2 /* JoystickController.m */,
-                               D594BF810FAE9661007A85F2 /* ApplicationController.h */,
-                               D594BF820FAE9661007A85F2 /* ApplicationController.m */,
-                               D5617A340FAEB74000928B3A /* ConfigsController.h */,
-                               D5617A350FAEB74000928B3A /* ConfigsController.m */,
-                               D5617A370FAEBA1800928B3A /* Config.h */,
-                               D5617A380FAEBA1800928B3A /* Config.m */,
-                               D5F8096F0FB093400006A4DE /* TargetConfig.h */,
-                               D5F809700FB093400006A4DE /* TargetConfig.m */,
-                               D5617FD40FAFD06000928B3A /* Target.h */,
-                               D5617FD50FAFD06000928B3A /* Target.m */,
-                               D5617FD70FAFD1E600928B3A /* TargetKeyboard.h */,
-                               D5617FD80FAFD1E600928B3A /* TargetKeyboard.m */,
-                               D5617FE20FAFD7B000928B3A /* TargetController.h */,
-                               D5617FE30FAFD7B000928B3A /* TargetController.m */,
-                               D5617FE50FAFDB5800928B3A /* KeyInputTextView.h */,
-                               D5617FE60FAFDB5800928B3A /* KeyInputTextView.m */,
-                               8BD9B54115C230FE00929C5D /* TargetMouseMove.h */,
-                               8BD9B54215C230FE00929C5D /* TargetMouseMove.m */,
-                               8B7E476A15C314A200C588FA /* TargetMouseBtn.h */,
-                               8B7E476B15C314A200C588FA /* TargetMouseBtn.m */,
-                               8BEFAD9A15C46BFF00823AEC /* TargetMouseScroll.h */,
-                               8BEFAD9B15C46BFF00823AEC /* TargetMouseScroll.m */,
-                               8BEFAD9E15C476DC00823AEC /* TargetToggleMouseScope.h */,
-                               8BEFAD9F15C476DC00823AEC /* TargetToggleMouseScope.m */,
-                       );
-                       name = Classes;
-                       sourceTree = "<group>";
-               };
-               1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
-                       isa = PBXGroup;
-                       children = (
-                               D594BEFF0FAE7397007A85F2 /* IOKit.framework */,
-                               1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
-                       );
-                       name = "Linked Frameworks";
-                       sourceTree = "<group>";
-               };
-               1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
-                       isa = PBXGroup;
-                       children = (
-                               D56180090FAFE8E400928B3A /* Carbon.framework */,
-                               29B97324FDCFA39411CA2CEA /* AppKit.framework */,
-                               13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
-                               29B97325FDCFA39411CA2CEA /* Foundation.framework */,
-                       );
-                       name = "Other Frameworks";
-                       sourceTree = "<group>";
-               };
-               19C28FACFE9D520D11CA2CBB /* Products */ = {
-                       isa = PBXGroup;
-                       children = (
-                               8D1107320486CEB800E47090 /* Enjoy.app */,
-                       );
-                       name = Products;
-                       sourceTree = "<group>";
-               };
-               29B97314FDCFA39411CA2CEA /* Enjoy */ = {
-                       isa = PBXGroup;
-                       children = (
-                               080E96DDFE201D6D7F000001 /* Classes */,
-                               29B97315FDCFA39411CA2CEA /* Other Sources */,
-                               29B97317FDCFA39411CA2CEA /* Resources */,
-                               29B97323FDCFA39411CA2CEA /* Frameworks */,
-                               19C28FACFE9D520D11CA2CBB /* Products */,
-                       );
-                       name = Enjoy;
-                       sourceTree = "<group>";
-               };
-               29B97315FDCFA39411CA2CEA /* Other Sources */ = {
-                       isa = PBXGroup;
-                       children = (
-                               32CA4F630368D1EE00C91783 /* Enjoy_Prefix.pch */,
-                               29B97316FDCFA39411CA2CEA /* main.m */,
-                               EE1D7C9016E01E7000B000EB /* NSView+FirstResponder.h */,
-                               EE1D7C9116E01E7000B000EB /* NSView+FirstResponder.m */,
-                       );
-                       name = "Other Sources";
-                       sourceTree = "<group>";
-               };
-               29B97317FDCFA39411CA2CEA /* Resources */ = {
-                       isa = PBXGroup;
-                       children = (
-                               D549CA4B0FBB441B00BC8203 /* Credits.rtf */,
-                               D5617A080FAEAF8300928B3A /* icon.icns */,
-                               8D1107310486CEB800E47090 /* Info.plist */,
-                               089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
-                               1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
-                       );
-                       name = Resources;
-                       sourceTree = "<group>";
-               };
-               29B97323FDCFA39411CA2CEA /* Frameworks */ = {
-                       isa = PBXGroup;
-                       children = (
-                               1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
-                               1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
-                       );
-                       name = Frameworks;
-                       sourceTree = "<group>";
-               };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-               8D1107260486CEB800E47090 /* Enjoy */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Enjoy" */;
-                       buildPhases = (
-                               8D1107290486CEB800E47090 /* Resources */,
-                               8D11072C0486CEB800E47090 /* Sources */,
-                               8D11072E0486CEB800E47090 /* Frameworks */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = Enjoy;
-                       productInstallPath = "$(HOME)/Applications";
-                       productName = Enjoy;
-                       productReference = 8D1107320486CEB800E47090 /* Enjoy.app */;
-                       productType = "com.apple.product-type.application";
-               };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-               29B97313FDCFA39411CA2CEA /* Project object */ = {
-                       isa = PBXProject;
-                       attributes = {
-                               LastUpgradeCheck = 0460;
-                       };
-                       buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Enjoy" */;
-                       compatibilityVersion = "Xcode 3.2";
-                       developmentRegion = English;
-                       hasScannedForEncodings = 1;
-                       knownRegions = (
-                               English,
-                               Japanese,
-                               French,
-                               German,
-                       );
-                       mainGroup = 29B97314FDCFA39411CA2CEA /* Enjoy */;
-                       projectDirPath = "";
-                       projectRoot = "";
-                       targets = (
-                               8D1107260486CEB800E47090 /* Enjoy */,
-                       );
-               };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-               8D1107290486CEB800E47090 /* Resources */ = {
-                       isa = PBXResourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
-                               1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
-                               D5F80A9D0FB0A2FF0006A4DE /* icon.icns in Resources */,
-                               D549CA4C0FBB441B00BC8203 /* Credits.rtf in Resources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-               8D11072C0486CEB800E47090 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               8D11072D0486CEB800E47090 /* main.m in Sources */,
-                               D594BE860FAE6219007A85F2 /* Joystick.m in Sources */,
-                               D594BE8A0FAE64AD007A85F2 /* JSAction.m in Sources */,
-                               D594BEF90FAE6FF2007A85F2 /* JoystickController.m in Sources */,
-                               D594BF830FAE9661007A85F2 /* ApplicationController.m in Sources */,
-                               D5617A360FAEB74000928B3A /* ConfigsController.m in Sources */,
-                               D5617A390FAEBA1800928B3A /* Config.m in Sources */,
-                               D5617D1A0FAF568100928B3A /* JSActionButton.m in Sources */,
-                               D5617D260FAF579300928B3A /* JSActionHat.m in Sources */,
-                               D5617D2B0FAF579A00928B3A /* JSActionAnalog.m in Sources */,
-                               D5617FD60FAFD06000928B3A /* Target.m in Sources */,
-                               D5617FD90FAFD1E600928B3A /* TargetKeyboard.m in Sources */,
-                               D5617FE40FAFD7B000928B3A /* TargetController.m in Sources */,
-                               D5617FE70FAFDB5800928B3A /* KeyInputTextView.m in Sources */,
-                               D5F809710FB093400006A4DE /* TargetConfig.m in Sources */,
-                               8BD9B54315C230FF00929C5D /* TargetMouseMove.m in Sources */,
-                               8B7E476C15C314A200C588FA /* TargetMouseBtn.m in Sources */,
-                               8BEFAD9C15C46BFF00823AEC /* TargetMouseScroll.m in Sources */,
-                               8BEFADA015C476DC00823AEC /* TargetToggleMouseScope.m in Sources */,
-                               EE1D7C9216E01E7000B000EB /* NSView+FirstResponder.m in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-               089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
-                       isa = PBXVariantGroup;
-                       children = (
-                               089C165DFE840E0CC02AAC07 /* English */,
-                       );
-                       name = InfoPlist.strings;
-                       sourceTree = "<group>";
-               };
-               1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
-                       isa = PBXVariantGroup;
-                       children = (
-                               1DDD58150DA1D0A300B32029 /* English */,
-                       );
-                       name = MainMenu.xib;
-                       sourceTree = "<group>";
-               };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-               C01FCF4B08A954540054247B /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-                               CLANG_ENABLE_OBJC_ARC = YES;
-                               COMBINE_HIDPI_IMAGES = YES;
-                               COPY_PHASE_STRIP = NO;
-                               FRAMEWORK_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       "\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Frameworks\"",
-                               );
-                               GCC_DYNAMIC_NO_PIC = NO;
-                               GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
-                               GCC_PREFIX_HEADER = Enjoy_Prefix.pch;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Applications";
-                               MACOSX_DEPLOYMENT_TARGET = 10.7;
-                               PRODUCT_NAME = Enjoy;
-                       };
-                       name = Debug;
-               };
-               C01FCF4C08A954540054247B /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-                               CLANG_ENABLE_OBJC_ARC = YES;
-                               COMBINE_HIDPI_IMAGES = YES;
-                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-                               FRAMEWORK_SEARCH_PATHS = (
-                                       "$(inherited)",
-                                       "\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Frameworks\"",
-                               );
-                               GCC_MODEL_TUNING = G5;
-                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
-                               GCC_PREFIX_HEADER = Enjoy_Prefix.pch;
-                               INFOPLIST_FILE = Info.plist;
-                               INSTALL_PATH = "$(HOME)/Applications";
-                               MACOSX_DEPLOYMENT_TARGET = 10.7;
-                               PRODUCT_NAME = Enjoy;
-                       };
-                       name = Release;
-               };
-               C01FCF4F08A954540054247B /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-                               GCC_C_LANGUAGE_STANDARD = c99;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               MACOSX_DEPLOYMENT_TARGET = 10.8;
-                               ONLY_ACTIVE_ARCH = YES;
-                               SDKROOT = macosx;
-                       };
-                       name = Debug;
-               };
-               C01FCF5008A954540054247B /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-                               GCC_C_LANGUAGE_STANDARD = c99;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               MACOSX_DEPLOYMENT_TARGET = 10.8;
-                               SDKROOT = macosx;
-                       };
-                       name = Release;
-               };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-               C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Enjoy" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               C01FCF4B08A954540054247B /* Debug */,
-                               C01FCF4C08A954540054247B /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-               C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Enjoy" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               C01FCF4F08A954540054247B /* Debug */,
-                               C01FCF5008A954540054247B /* Release */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Release;
-               };
-/* End XCConfigurationList section */
-       };
-       rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}
diff --git a/Enjoy_Prefix.pch b/Enjoy_Prefix.pch
deleted file mode 100644 (file)
index 1f44b2f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// Prefix header for all source files of the 'Enjoy' target in the 'Enjoy' project
-//
-
-#ifdef __OBJC__
-    #import <Cocoa/Cocoa.h>
-#endif
-
-#import <IOKit/hid/IOHIDLib.h>
-
-#import "NSView+FirstResponder.h"
diff --git a/Enjoyable.xcodeproj/TemplateIcon.icns b/Enjoyable.xcodeproj/TemplateIcon.icns
new file mode 100644 (file)
index 0000000..62cb701
Binary files /dev/null and b/Enjoyable.xcodeproj/TemplateIcon.icns differ
diff --git a/Enjoyable.xcodeproj/project.pbxproj b/Enjoyable.xcodeproj/project.pbxproj
new file mode 100644 (file)
index 0000000..aac5494
--- /dev/null
@@ -0,0 +1,459 @@
+// !$*UTF8*$!
+{
+       archiveVersion = 1;
+       classes = {
+       };
+       objectVersion = 46;
+       objects = {
+
+/* Begin PBXBuildFile section */
+               1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
+               8B7E476C15C314A200C588FA /* TargetMouseBtn.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7E476B15C314A200C588FA /* TargetMouseBtn.m */; };
+               8BD9B54315C230FF00929C5D /* TargetMouseMove.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD9B54215C230FE00929C5D /* TargetMouseMove.m */; };
+               8BEFAD9C15C46BFF00823AEC /* TargetMouseScroll.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BEFAD9B15C46BFF00823AEC /* TargetMouseScroll.m */; };
+               8BEFADA015C476DC00823AEC /* TargetToggleMouseScope.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BEFAD9F15C476DC00823AEC /* TargetToggleMouseScope.m */; };
+               8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
+               8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
+               8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+               D549CA4C0FBB441B00BC8203 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = D549CA4B0FBB441B00BC8203 /* Credits.rtf */; };
+               D5617A360FAEB74000928B3A /* ConfigsController.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617A350FAEB74000928B3A /* ConfigsController.m */; };
+               D5617A390FAEBA1800928B3A /* Config.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617A380FAEBA1800928B3A /* Config.m */; };
+               D5617D1A0FAF568100928B3A /* JSActionButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617D190FAF568100928B3A /* JSActionButton.m */; };
+               D5617D260FAF579300928B3A /* JSActionHat.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617D250FAF579300928B3A /* JSActionHat.m */; };
+               D5617D2B0FAF579A00928B3A /* JSActionAnalog.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617D2A0FAF579A00928B3A /* JSActionAnalog.m */; };
+               D5617FD60FAFD06000928B3A /* Target.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FD50FAFD06000928B3A /* Target.m */; };
+               D5617FD90FAFD1E600928B3A /* TargetKeyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FD80FAFD1E600928B3A /* TargetKeyboard.m */; };
+               D5617FE40FAFD7B000928B3A /* TargetController.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FE30FAFD7B000928B3A /* TargetController.m */; };
+               D5617FE70FAFDB5800928B3A /* KeyInputTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = D5617FE60FAFDB5800928B3A /* KeyInputTextView.m */; };
+               D594BE860FAE6219007A85F2 /* Joystick.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BE850FAE6219007A85F2 /* Joystick.m */; };
+               D594BE8A0FAE64AD007A85F2 /* JSAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BE890FAE64AD007A85F2 /* JSAction.m */; };
+               D594BEF90FAE6FF2007A85F2 /* JoystickController.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BEF80FAE6FF2007A85F2 /* JoystickController.m */; };
+               D594BF000FAE7397007A85F2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D594BEFF0FAE7397007A85F2 /* IOKit.framework */; };
+               D594BF830FAE9661007A85F2 /* ApplicationController.m in Sources */ = {isa = PBXBuildFile; fileRef = D594BF820FAE9661007A85F2 /* ApplicationController.m */; };
+               D5F809710FB093400006A4DE /* TargetConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D5F809700FB093400006A4DE /* TargetConfig.m */; };
+               D5F80A9D0FB0A2FF0006A4DE /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = D5617A080FAEAF8300928B3A /* icon.icns */; };
+               EE1D7C9216E01E7000B000EB /* NSView+FirstResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1D7C9116E01E7000B000EB /* NSView+FirstResponder.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+               089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+               1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
+               13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
+               1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
+               29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+               29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
+               29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
+               32CA4F630368D1EE00C91783 /* Enjoyable_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Enjoyable_Prefix.pch; sourceTree = "<group>"; };
+               8B7E476A15C314A200C588FA /* TargetMouseBtn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetMouseBtn.h; sourceTree = "<group>"; };
+               8B7E476B15C314A200C588FA /* TargetMouseBtn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetMouseBtn.m; sourceTree = "<group>"; };
+               8BD9B54115C230FE00929C5D /* TargetMouseMove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetMouseMove.h; sourceTree = "<group>"; };
+               8BD9B54215C230FE00929C5D /* TargetMouseMove.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetMouseMove.m; sourceTree = "<group>"; };
+               8BEFAD9A15C46BFF00823AEC /* TargetMouseScroll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetMouseScroll.h; sourceTree = "<group>"; };
+               8BEFAD9B15C46BFF00823AEC /* TargetMouseScroll.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetMouseScroll.m; sourceTree = "<group>"; };
+               8BEFAD9E15C476DC00823AEC /* TargetToggleMouseScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetToggleMouseScope.h; sourceTree = "<group>"; };
+               8BEFAD9F15C476DC00823AEC /* TargetToggleMouseScope.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetToggleMouseScope.m; sourceTree = "<group>"; };
+               8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+               8D1107320486CEB800E47090 /* Enjoyable.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Enjoyable.app; sourceTree = BUILT_PRODUCTS_DIR; };
+               D549CA4B0FBB441B00BC8203 /* Credits.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = Credits.rtf; sourceTree = "<group>"; };
+               D5617A080FAEAF8300928B3A /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = "<group>"; };
+               D5617A340FAEB74000928B3A /* ConfigsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfigsController.h; sourceTree = "<group>"; };
+               D5617A350FAEB74000928B3A /* ConfigsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfigsController.m; sourceTree = "<group>"; };
+               D5617A370FAEBA1800928B3A /* Config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = "<group>"; };
+               D5617A380FAEBA1800928B3A /* Config.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Config.m; sourceTree = "<group>"; };
+               D5617D180FAF568100928B3A /* JSActionButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActionButton.h; sourceTree = "<group>"; };
+               D5617D190FAF568100928B3A /* JSActionButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSActionButton.m; sourceTree = "<group>"; };
+               D5617D240FAF579300928B3A /* JSActionHat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActionHat.h; sourceTree = "<group>"; };
+               D5617D250FAF579300928B3A /* JSActionHat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSActionHat.m; sourceTree = "<group>"; };
+               D5617D290FAF579A00928B3A /* JSActionAnalog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActionAnalog.h; sourceTree = "<group>"; };
+               D5617D2A0FAF579A00928B3A /* JSActionAnalog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSActionAnalog.m; sourceTree = "<group>"; };
+               D5617FD40FAFD06000928B3A /* Target.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Target.h; sourceTree = "<group>"; };
+               D5617FD50FAFD06000928B3A /* Target.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Target.m; sourceTree = "<group>"; };
+               D5617FD70FAFD1E600928B3A /* TargetKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetKeyboard.h; sourceTree = "<group>"; };
+               D5617FD80FAFD1E600928B3A /* TargetKeyboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetKeyboard.m; sourceTree = "<group>"; };
+               D5617FE20FAFD7B000928B3A /* TargetController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetController.h; sourceTree = "<group>"; };
+               D5617FE30FAFD7B000928B3A /* TargetController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetController.m; sourceTree = "<group>"; };
+               D5617FE50FAFDB5800928B3A /* KeyInputTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyInputTextView.h; sourceTree = "<group>"; };
+               D5617FE60FAFDB5800928B3A /* KeyInputTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KeyInputTextView.m; sourceTree = "<group>"; };
+               D56180090FAFE8E400928B3A /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
+               D594BE840FAE6219007A85F2 /* Joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Joystick.h; sourceTree = "<group>"; };
+               D594BE850FAE6219007A85F2 /* Joystick.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Joystick.m; sourceTree = "<group>"; };
+               D594BE880FAE64AD007A85F2 /* JSAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAction.h; sourceTree = "<group>"; };
+               D594BE890FAE64AD007A85F2 /* JSAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSAction.m; sourceTree = "<group>"; };
+               D594BEF70FAE6FF2007A85F2 /* JoystickController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JoystickController.h; sourceTree = "<group>"; };
+               D594BEF80FAE6FF2007A85F2 /* JoystickController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JoystickController.m; sourceTree = "<group>"; };
+               D594BEFF0FAE7397007A85F2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
+               D594BF810FAE9661007A85F2 /* ApplicationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationController.h; sourceTree = "<group>"; };
+               D594BF820FAE9661007A85F2 /* ApplicationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApplicationController.m; sourceTree = "<group>"; };
+               D5F8096F0FB093400006A4DE /* TargetConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetConfig.h; sourceTree = "<group>"; };
+               D5F809700FB093400006A4DE /* TargetConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetConfig.m; sourceTree = "<group>"; };
+               EE1D7C9016E01E7000B000EB /* NSView+FirstResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSView+FirstResponder.h"; sourceTree = "<group>"; };
+               EE1D7C9116E01E7000B000EB /* NSView+FirstResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSView+FirstResponder.m"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+               8D11072E0486CEB800E47090 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
+                               D594BF000FAE7397007A85F2 /* IOKit.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+               080E96DDFE201D6D7F000001 /* Classes */ = {
+                       isa = PBXGroup;
+                       children = (
+                               D5617D290FAF579A00928B3A /* JSActionAnalog.h */,
+                               D5617D2A0FAF579A00928B3A /* JSActionAnalog.m */,
+                               D594BE840FAE6219007A85F2 /* Joystick.h */,
+                               D594BE850FAE6219007A85F2 /* Joystick.m */,
+                               D594BE880FAE64AD007A85F2 /* JSAction.h */,
+                               D594BE890FAE64AD007A85F2 /* JSAction.m */,
+                               D5617D240FAF579300928B3A /* JSActionHat.h */,
+                               D5617D250FAF579300928B3A /* JSActionHat.m */,
+                               D5617D180FAF568100928B3A /* JSActionButton.h */,
+                               D5617D190FAF568100928B3A /* JSActionButton.m */,
+                               D594BEF70FAE6FF2007A85F2 /* JoystickController.h */,
+                               D594BEF80FAE6FF2007A85F2 /* JoystickController.m */,
+                               D594BF810FAE9661007A85F2 /* ApplicationController.h */,
+                               D594BF820FAE9661007A85F2 /* ApplicationController.m */,
+                               D5617A340FAEB74000928B3A /* ConfigsController.h */,
+                               D5617A350FAEB74000928B3A /* ConfigsController.m */,
+                               D5617A370FAEBA1800928B3A /* Config.h */,
+                               D5617A380FAEBA1800928B3A /* Config.m */,
+                               D5F8096F0FB093400006A4DE /* TargetConfig.h */,
+                               D5F809700FB093400006A4DE /* TargetConfig.m */,
+                               D5617FD40FAFD06000928B3A /* Target.h */,
+                               D5617FD50FAFD06000928B3A /* Target.m */,
+                               D5617FD70FAFD1E600928B3A /* TargetKeyboard.h */,
+                               D5617FD80FAFD1E600928B3A /* TargetKeyboard.m */,
+                               D5617FE20FAFD7B000928B3A /* TargetController.h */,
+                               D5617FE30FAFD7B000928B3A /* TargetController.m */,
+                               D5617FE50FAFDB5800928B3A /* KeyInputTextView.h */,
+                               D5617FE60FAFDB5800928B3A /* KeyInputTextView.m */,
+                               8BD9B54115C230FE00929C5D /* TargetMouseMove.h */,
+                               8BD9B54215C230FE00929C5D /* TargetMouseMove.m */,
+                               8B7E476A15C314A200C588FA /* TargetMouseBtn.h */,
+                               8B7E476B15C314A200C588FA /* TargetMouseBtn.m */,
+                               8BEFAD9A15C46BFF00823AEC /* TargetMouseScroll.h */,
+                               8BEFAD9B15C46BFF00823AEC /* TargetMouseScroll.m */,
+                               8BEFAD9E15C476DC00823AEC /* TargetToggleMouseScope.h */,
+                               8BEFAD9F15C476DC00823AEC /* TargetToggleMouseScope.m */,
+                       );
+                       name = Classes;
+                       sourceTree = "<group>";
+               };
+               1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
+                       isa = PBXGroup;
+                       children = (
+                               D594BEFF0FAE7397007A85F2 /* IOKit.framework */,
+                               1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
+                       );
+                       name = "Linked Frameworks";
+                       sourceTree = "<group>";
+               };
+               1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
+                       isa = PBXGroup;
+                       children = (
+                               D56180090FAFE8E400928B3A /* Carbon.framework */,
+                               29B97324FDCFA39411CA2CEA /* AppKit.framework */,
+                               13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
+                               29B97325FDCFA39411CA2CEA /* Foundation.framework */,
+                       );
+                       name = "Other Frameworks";
+                       sourceTree = "<group>";
+               };
+               19C28FACFE9D520D11CA2CBB /* Products */ = {
+                       isa = PBXGroup;
+                       children = (
+                               8D1107320486CEB800E47090 /* Enjoyable.app */,
+                       );
+                       name = Products;
+                       sourceTree = "<group>";
+               };
+               29B97314FDCFA39411CA2CEA /* Enjoy */ = {
+                       isa = PBXGroup;
+                       children = (
+                               080E96DDFE201D6D7F000001 /* Classes */,
+                               29B97315FDCFA39411CA2CEA /* Other Sources */,
+                               29B97317FDCFA39411CA2CEA /* Resources */,
+                               29B97323FDCFA39411CA2CEA /* Frameworks */,
+                               19C28FACFE9D520D11CA2CBB /* Products */,
+                       );
+                       name = Enjoy;
+                       sourceTree = "<group>";
+               };
+               29B97315FDCFA39411CA2CEA /* Other Sources */ = {
+                       isa = PBXGroup;
+                       children = (
+                               32CA4F630368D1EE00C91783 /* Enjoyable_Prefix.pch */,
+                               29B97316FDCFA39411CA2CEA /* main.m */,
+                               EE1D7C9016E01E7000B000EB /* NSView+FirstResponder.h */,
+                               EE1D7C9116E01E7000B000EB /* NSView+FirstResponder.m */,
+                       );
+                       name = "Other Sources";
+                       sourceTree = "<group>";
+               };
+               29B97317FDCFA39411CA2CEA /* Resources */ = {
+                       isa = PBXGroup;
+                       children = (
+                               D549CA4B0FBB441B00BC8203 /* Credits.rtf */,
+                               D5617A080FAEAF8300928B3A /* icon.icns */,
+                               8D1107310486CEB800E47090 /* Info.plist */,
+                               089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
+                               1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
+                       );
+                       name = Resources;
+                       sourceTree = "<group>";
+               };
+               29B97323FDCFA39411CA2CEA /* Frameworks */ = {
+                       isa = PBXGroup;
+                       children = (
+                               1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
+                               1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
+                       );
+                       name = Frameworks;
+                       sourceTree = "<group>";
+               };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+               8D1107260486CEB800E47090 /* Enjoyable */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Enjoyable" */;
+                       buildPhases = (
+                               8D1107290486CEB800E47090 /* Resources */,
+                               8D11072C0486CEB800E47090 /* Sources */,
+                               8D11072E0486CEB800E47090 /* Frameworks */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = Enjoyable;
+                       productInstallPath = "$(HOME)/Applications";
+                       productName = Enjoy;
+                       productReference = 8D1107320486CEB800E47090 /* Enjoyable.app */;
+                       productType = "com.apple.product-type.application";
+               };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+               29B97313FDCFA39411CA2CEA /* Project object */ = {
+                       isa = PBXProject;
+                       attributes = {
+                               LastUpgradeCheck = 0460;
+                       };
+                       buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Enjoyable" */;
+                       compatibilityVersion = "Xcode 3.2";
+                       developmentRegion = English;
+                       hasScannedForEncodings = 1;
+                       knownRegions = (
+                               English,
+                               Japanese,
+                               French,
+                               German,
+                       );
+                       mainGroup = 29B97314FDCFA39411CA2CEA /* Enjoy */;
+                       projectDirPath = "";
+                       projectRoot = "";
+                       targets = (
+                               8D1107260486CEB800E47090 /* Enjoyable */,
+                       );
+               };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+               8D1107290486CEB800E47090 /* Resources */ = {
+                       isa = PBXResourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
+                               1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
+                               D5F80A9D0FB0A2FF0006A4DE /* icon.icns in Resources */,
+                               D549CA4C0FBB441B00BC8203 /* Credits.rtf in Resources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+               8D11072C0486CEB800E47090 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               8D11072D0486CEB800E47090 /* main.m in Sources */,
+                               D594BE860FAE6219007A85F2 /* Joystick.m in Sources */,
+                               D594BE8A0FAE64AD007A85F2 /* JSAction.m in Sources */,
+                               D594BEF90FAE6FF2007A85F2 /* JoystickController.m in Sources */,
+                               D594BF830FAE9661007A85F2 /* ApplicationController.m in Sources */,
+                               D5617A360FAEB74000928B3A /* ConfigsController.m in Sources */,
+                               D5617A390FAEBA1800928B3A /* Config.m in Sources */,
+                               D5617D1A0FAF568100928B3A /* JSActionButton.m in Sources */,
+                               D5617D260FAF579300928B3A /* JSActionHat.m in Sources */,
+                               D5617D2B0FAF579A00928B3A /* JSActionAnalog.m in Sources */,
+                               D5617FD60FAFD06000928B3A /* Target.m in Sources */,
+                               D5617FD90FAFD1E600928B3A /* TargetKeyboard.m in Sources */,
+                               D5617FE40FAFD7B000928B3A /* TargetController.m in Sources */,
+                               D5617FE70FAFDB5800928B3A /* KeyInputTextView.m in Sources */,
+                               D5F809710FB093400006A4DE /* TargetConfig.m in Sources */,
+                               8BD9B54315C230FF00929C5D /* TargetMouseMove.m in Sources */,
+                               8B7E476C15C314A200C588FA /* TargetMouseBtn.m in Sources */,
+                               8BEFAD9C15C46BFF00823AEC /* TargetMouseScroll.m in Sources */,
+                               8BEFADA015C476DC00823AEC /* TargetToggleMouseScope.m in Sources */,
+                               EE1D7C9216E01E7000B000EB /* NSView+FirstResponder.m in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+               089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               089C165DFE840E0CC02AAC07 /* English */,
+                       );
+                       name = InfoPlist.strings;
+                       sourceTree = "<group>";
+               };
+               1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               1DDD58150DA1D0A300B32029 /* English */,
+                       );
+                       name = MainMenu.xib;
+                       sourceTree = "<group>";
+               };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+               C01FCF4B08A954540054247B /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               COPY_PHASE_STRIP = NO;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Frameworks\"",
+                               );
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_MODEL_TUNING = G5;
+                               GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                               GCC_PREFIX_HEADER = Enjoyable_Prefix.pch;
+                               INFOPLIST_FILE = Info.plist;
+                               INSTALL_PATH = "$(HOME)/Applications";
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
+                               PRODUCT_NAME = Enjoyable;
+                       };
+                       name = Debug;
+               };
+               C01FCF4C08A954540054247B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Frameworks\"",
+                               );
+                               GCC_MODEL_TUNING = G5;
+                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                               GCC_PREFIX_HEADER = Enjoyable_Prefix.pch;
+                               INFOPLIST_FILE = Info.plist;
+                               INSTALL_PATH = "$(HOME)/Applications";
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
+                               PRODUCT_NAME = Enjoyable;
+                       };
+                       name = Release;
+               };
+               C01FCF4F08A954540054247B /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_IMPLICIT_SIGN_CONVERSION = NO;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               GCC_C_LANGUAGE_STANDARD = c99;
+                               GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
+                               GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = YES;
+                               GCC_WARN_STRICT_SELECTOR_MATCH = YES;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
+                               GCC_WARN_UNUSED_FUNCTION = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
+                               ONLY_ACTIVE_ARCH = YES;
+                               SDKROOT = macosx;
+                       };
+                       name = Debug;
+               };
+               C01FCF5008A954540054247B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+                               CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_IMPLICIT_SIGN_CONVERSION = NO;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               GCC_C_LANGUAGE_STANDARD = c99;
+                               GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
+                               GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = YES;
+                               GCC_WARN_STRICT_SELECTOR_MATCH = YES;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
+                               GCC_WARN_UNUSED_FUNCTION = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
+                               SDKROOT = macosx;
+                       };
+                       name = Release;
+               };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+               C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Enjoyable" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               C01FCF4B08A954540054247B /* Debug */,
+                               C01FCF4C08A954540054247B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Enjoyable" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               C01FCF4F08A954540054247B /* Debug */,
+                               C01FCF5008A954540054247B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+/* End XCConfigurationList section */
+       };
+       rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}
diff --git a/Enjoyable_Prefix.pch b/Enjoyable_Prefix.pch
new file mode 100644 (file)
index 0000000..1f44b2f
--- /dev/null
@@ -0,0 +1,11 @@
+//
+// Prefix header for all source files of the 'Enjoy' target in the 'Enjoy' project
+//
+
+#ifdef __OBJC__
+    #import <Cocoa/Cocoa.h>
+#endif
+
+#import <IOKit/hid/IOHIDLib.h>
+
+#import "NSView+FirstResponder.h"
index e7d0890f3be6df6549673828bccc244c9831f8e2..167e1f4558b52a63ce90b5ebd0630cb8bf79e87f 100644 (file)
@@ -9,7 +9,7 @@
        <key>CFBundleIconFile</key>
        <string>icon.icns</string>
        <key>CFBundleIdentifier</key>
-       <string>net.tunah.${PRODUCT_NAME:identifier}</string>
+       <string>com.korewanetadesu.${PRODUCT_NAME:identifier}</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleName</key>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>1.2</string>
+       <string>0.5</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>2</string>
+       <string>3</string>
+       <key>LSApplicationCategoryType</key>
+       <string>public.app-category.utilities</string>
        <key>NSHumanReadableCopyright</key>
        <string>Copyright (c) 2009 Sam McCall</string>
        <key>NSMainNibFile</key>
index 5f61191b0b5f15a29361c00c6fc302e2cf888c0e..551eb0ffe7c4774245f4849dde28cf75ecfd032a 100644 (file)
@@ -8,7 +8,7 @@
 
 @interface JSAction : NSObject
 
-@property (assign) void *cookie;
+@property (assign) IOHIDElementCookie cookie;
 @property (copy) NSArray *children;
 @property (weak) id base;
 @property (copy) NSString *name;
index c2660c04fa7edf614a63069dda153fb755b9c4a3..deaf3a596637659ca552f2847d2d611a26008345 100644 (file)
@@ -12,6 +12,6 @@
 
 @interface JSActionAnalog : JSAction
 
-- (id)initWithIndex:(int)index rawMin:(int)rawMin rawMax:(int)rawMax;
+- (id)initWithIndex:(int)index rawMin:(long)rawMin rawMax:(long)rawMax;
 
 @end
index 30838868e1a46cb184bae13ef84d9aa649afb68e..9c98f21593c20c0bde263ff9148def7c2aff8a89 100644 (file)
@@ -9,17 +9,17 @@
 
 #import "JSActionAnalog.h"
 
-static float normalize(int p, int min, int max) {
+static float normalize(long p, long min, long max) {
     return 2 * (p - min) / (float)(max - min) - 1;
 }
 
 @implementation JSActionAnalog {
     float magnitude;
-    int rawMin;
-    int rawMax;
+    long rawMin;
+    long rawMax;
 }
 
-- (id)initWithIndex:(int)index rawMin:(int)rawMin_ rawMax:(int)rawMax_ {
+- (id)initWithIndex:(int)index rawMin:(long)rawMin_ rawMax:(long)rawMax_ {
     if ((self = [super init])) {
         self.name = [[NSString alloc] initWithFormat: @"Axis %d", index];
         self.children = @[[[JSAction alloc] initWithName:@"Low" base:self],
index 927606d4bd80f5f315c7431815e64160a9c68856..8a4bdc6aa837ac1f8aff4d7009c2284fee83b144 100644 (file)
@@ -10,6 +10,6 @@
 
 @interface JSActionButton : JSAction
 
-- (id)initWithName:(NSString *)name idx:(int)idx max:(int)max;
+- (id)initWithName:(NSString *)name idx:(int)idx max:(long)max;
 
 @end
index c74c0e295ea01bbd345ee00ef155f21e4db9272d..7d2572a32a09f4a92c0074eed851fbcdc80975e1 100644 (file)
@@ -8,10 +8,10 @@
 #import "JSActionButton.h"
 
 @implementation JSActionButton {
-    int _max;
+    long _max;
 }
 
-- (id)initWithName:(NSString *)name idx:(int)idx max:(int)max {
+- (id)initWithName:(NSString *)name idx:(int)idx max:(long)max {
     if ((self = [super init])) {
         _max = max;
         if (name.length)
index 174d2df484b406eaa19ee9dd99ef54f2e856673c..2cac39c77c4a22e4148be01fe6e78c52d6a82540 100644 (file)
@@ -41,7 +41,7 @@ static BOOL active_fourway[20] = {
 }
 
 - (id)findSubActionForValue:(IOHIDValueRef)value {
-    int parsed = IOHIDValueGetIntegerValue(value);
+    long parsed = IOHIDValueGetIntegerValue(value);
     switch (IOHIDElementGetLogicalMax(IOHIDValueGetElement(value))) {
         case 7: // 8-way switch, 0-7.
             switch (parsed) {
@@ -81,8 +81,8 @@ static BOOL active_fourway[20] = {
 }
 
 - (void)notifyEvent:(IOHIDValueRef)value {
-    int parsed = IOHIDValueGetIntegerValue(value);
-    int size = IOHIDElementGetLogicalMax(IOHIDValueGetElement(value));
+    long parsed = IOHIDValueGetIntegerValue(value);
+    long size = IOHIDElementGetLogicalMax(IOHIDValueGetElement(value));
     // Skip first row in table if 0 is not neutral.
     if (size & 1) {
         parsed++;
index 35b40c57acc1bb98ca48bfa032fa7d76c2c0ecec..3b43e4e3249ba57c158e1f1947681d765b87bfdb 100644 (file)
@@ -23,10 +23,10 @@ static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) {
     for (int i = 0; i < CFArrayGetCount(elements); i++) {
         IOHIDElementRef element = (IOHIDElementRef)CFArrayGetValueAtIndex(elements, i);
         int type = IOHIDElementGetType(element);
-        int usage = IOHIDElementGetUsage(element);
-        int usagePage = IOHIDElementGetUsagePage(element);
-        int max = IOHIDElementGetPhysicalMax(element);
-        int min = IOHIDElementGetPhysicalMin(element);
+        unsigned usage = IOHIDElementGetUsage(element);
+        unsigned usagePage = IOHIDElementGetUsagePage(element);
+        long max = IOHIDElementGetPhysicalMax(element);
+        long min = IOHIDElementGetPhysicalMin(element);
         CFStringRef elName = IOHIDElementGetName(element);
         
         JSAction *action = nil;
@@ -88,7 +88,7 @@ static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) {
     return [NSString stringWithFormat: @"%d:%d:%d", vendorId, productId, _index];
 }
 
-- (JSAction *)findActionByCookie:(void *)cookie {
+- (JSAction *)findActionByCookie:(IOHIDElementCookie)cookie {
     for (JSAction *child in _children)
         if (child.cookie == cookie)
             return child;
@@ -102,7 +102,7 @@ static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) {
 
 - (JSAction *)actionForEvent:(IOHIDValueRef)value {
     IOHIDElementRef elt = IOHIDValueGetElement(value);
-    void *cookie = IOHIDElementGetCookie(elt);
+    IOHIDElementCookie cookie = IOHIDElementGetCookie(elt);
     return [self findActionByCookie:cookie];
 }
 
index 4da83cd4f91d81b4eeba079154f9cdfbb18bc74e..7282093ff87238ea85ca3113b9c65f1e9202fb70 100644 (file)
@@ -11,7 +11,7 @@
 @class ConfigsController;
 @class TargetController;
 
-@interface JoystickController : NSObject {
+@interface JoystickController : NSObject <NSOutlineViewDataSource, NSOutlineViewDelegate> {
        IBOutlet NSOutlineView *outlineView;
        IBOutlet TargetController *targetController;
        IBOutlet ConfigsController *configsController;
index cd513de0dde7024c2cc5c9144db16ef1f99818b6..33201f5ba2b98e6235f6f5506c2fc129591785fd 100644 (file)
@@ -189,7 +189,7 @@ static void remove_callback(void *ctx, IOReturn inResult, void *inSender, IOHIDD
     return [item children] ? nil : item;
 }
 
-- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
+- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
     return item ? [[item children] count] : _joysticks.count;
 }
 
@@ -197,7 +197,7 @@ static void remove_callback(void *ctx, IOReturn inResult, void *inSender, IOHIDD
     return item ? [[item children] count] > 0: YES;
 }
 
-- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item {
+- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
     return item ? [item children][index] : _joysticks[index];
 }
 
diff --git a/NJEvents.h b/NJEvents.h
new file mode 100644 (file)
index 0000000..1d718d9
--- /dev/null
@@ -0,0 +1,14 @@
+//
+//  NJEvents.h
+//  Enjoy
+//
+//  Created by Joe Wreschnig on 3/1/13.
+//
+//
+
+#ifndef Enjoy_NJEvents_h
+#define Enjoy_NJEvents_h
+
+
+
+#endif
index 2a7c478dc6be9d5f2d616e76611ad3373f847aca..a188dd83dfcc464faa5d47613539774ef91c7a61 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,40 +1,83 @@
-Enjoy2
-======
+Enjoyable
+=========
 
-Enjoy2 is a simple program for Mac OSX that allows you to transform joystick inputs into keyboard or mouse events.
+Enjoyable is a simple program for Mac OS X which allows you to use
+joystick 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 is the program for you.
 
-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 Enjoy2 is the program for you. Enjoy2 lets you map your joystick inputs to:
+Enjoyable supports multiple configurations (for different games or
+programs) and you can even map joystick buttons to change
+configurations on-the-fly.
 
-* Key events
-* Mouse clicks
-* Mouse movement (for analog sticks)
-* Scrolling
+Enjoyable is free software written by Joe Wreschnig and is based on
+the Enjoy codebase written by [Yifeng Huang](htty://nongraphical.com)
+and [Sam McCall](http://abstractable.net/enjoy/).
 
-Enjoy2 supports multiple configurations (for different games or programs) and you can even map joystick buttons to change configurations on-the-fly.
+## How to Use
 
-Enjoy2 is written by [Yifeng Huang](htty://nongraphical.com) and is based on [Enjoy by Sam McCall](http://abstractable.net/enjoy/). Enjoy is MIT-licensed.
+At startup, and when Enjoyable is paused, press any button or move any
+analog stick to jump to the configuration for that button or stick.
+From there, select one of the mapping options from the choices on the
+right.
 
-## How to use
+To quickly map a joystick to keyboard actions, you can simply press
+the joystick button or axis, then the keyboard key you wish to map
+it to, and repeat.
 
-At startup, and when Enjoy2 is paused, press any button or move any analog stick to jump to the configuration for that button or stick. From there, select one of the mapping options from the choices on the right.
+Once you've done that, click the Start button and begin using your
+joystick as a keyboard and mouse.
 
-To use an analog axis to move the mouse, select the "Analog" sub-item on the left.
+If you name a configuration after the title of a program (e.g. what
+appears when you hover over it in the dock) that configuration will
+automatically be selected when you switch to that program.
 
-### Mapping modes
+### Mouse Mapping Compatibility
 
-Enjoy2 offers two mouse mapping modes: global and single-window. Enjoy2 starts in global mode, but you can set any joystick button to the "toggle mouse scope" action, which will change the mode. If you are using Enjoy2 to play a video game, you may find that one or the other mode offers better compatibility with your game's specific requirements.
+Enjoyable offers two mouse mapping modes: global and single-window.
+Enjoyable starts in global mode, but you can set any joystick button to
+the "toggle mouse scope" action, which will change the mode. If you
+are using Enjoy2 to play a video game, you may find that one or the
+other mode offers better compatibility with your game's specific
+requirements.
 
 ## Requirements
 
-* Mac OS X 10.6 (Snow Leopard) or higher
-* USB gamepad/joystick/controller
+* Mac OS X 10.7+
+* HID-compatible (e.g. USB or Bluetooth) input device
 
-## Changelog
+## Changes
 
-Version 1.1
+Version 1
 
-* Forked from Enjoy
-* Mouse movement support
-* Mouse button support
-* Scrollwheel support
-* Support for two mouse movement modes
+* Forked from Enjoy/Enjoy2. The code has been modernized and optimized.
+  Many bugs and UI issues were fixed.
+
+## License
+
+Enjoyable is based on Enjoy and Enjoy2, by Sam McCall and Yifeng Huang.
+
+Copyright 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
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+The joystick icon is from the Tango icon set and is public domain.
index a7dbd2c6535bb89e75e108d9d66196f54455f74c..9aad491d17eb41a936d21e08f37e4eda7ef781fe 100644 (file)
 
 - (void)refreshConfigs {
     // TODO: This doesn't work when removing configs.
-    int initialIndex = configPopup.indexOfSelectedItem;
+    NSInteger initialIndex = configPopup.indexOfSelectedItem;
     [configPopup removeAllItems];
     for (Config *config in configsController.configs)
         [configPopup addItemWithTitle:config.name];
index 3efb88a95fab47472647a2d9be5c6c7139dc90a1..46234ec7c3155c0d99e2ae0e34c5867c524fa486 100644 (file)
@@ -27,7 +27,7 @@
 
 -(void) trigger {
     NSRect screenRect = [[NSScreen mainScreen] frame];
-    NSInteger height = screenRect.size.height;
+    CGFloat height = screenRect.size.height;
     NSPoint mouseLoc = [NSEvent mouseLocation];
     CGEventType eventType = (_button == kCGMouseButtonLeft) ? kCGEventLeftMouseDown : kCGEventRightMouseDown;
     CGEventRef click = CGEventCreateMouseEvent(NULL,
@@ -40,7 +40,7 @@
 
 -(void) untrigger {
     NSRect screenRect = [[NSScreen mainScreen] frame];
-    NSInteger height = screenRect.size.height;
+    CGFloat height = screenRect.size.height;
     NSPoint mouseLoc = [NSEvent mouseLocation];
     CGEventType eventType = (_button == kCGMouseButtonLeft) ? kCGEventLeftMouseUp : kCGEventRightMouseUp;
     CGEventRef click = CGEventCreateMouseEvent(NULL,
index 8bbfd42f7d366e1383e245ad4d8fa7e295a81359..52f241a0640952f8c16ea49276eea9c4c7a9e1e8 100644 (file)
@@ -48,7 +48,7 @@
     }
     
     NSRect screenRect = [[NSScreen mainScreen] frame];
-    NSInteger height = screenRect.size.height;
+    CGFloat height = screenRect.size.height;
     
     // TODO
     float speed = 4.f;
@@ -68,8 +68,8 @@
                                               CGPointMake(mouseLoc.x, height - mouseLoc.y),
                                               0);
     CGEventSetType(move, kCGEventMouseMoved);
-    CGEventSetIntegerValueField(move, kCGMouseEventDeltaX, dx);
-    CGEventSetIntegerValueField(move, kCGMouseEventDeltaY, dy);
+    CGEventSetIntegerValueField(move, kCGMouseEventDeltaX, (int)dx);
+    CGEventSetIntegerValueField(move, kCGMouseEventDeltaY, (int)dy);
     
     if ([jc frontWindowOnly]) {
         ProcessSerialNumber psn;