[self.jsController setup];
[self.configsController load];
[NSNotificationCenter.defaultCenter
- addObserver:self
- selector:@selector(mappingDidChange:)
- name:NJEventMappingChanged
- object:nil];
+ addObserver:self
+ selector:@selector(mappingDidChange:)
+ name:NJEventMappingChanged
+ object:nil];
+ [NSNotificationCenter.defaultCenter
+ addObserver:self
+ selector:@selector(eventTranslationActivated:)
+ name:NJEventTranslationActivated
+ object:nil];
+ [NSNotificationCenter.defaultCenter
+ addObserver:self
+ selector:@selector(eventTranslationDeactivated:)
+ name:NJEventTranslationDeactivated
+ object:nil];
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
[NSUserDefaults.standardUserDefaults synchronize];
}
-- (IBAction)toggleActivity:(id)sender {
- BOOL sendRealEvents = !self.jsController.sendingRealEvents;
- self.jsController.sendingRealEvents = sendRealEvents;
- activeButton.image = [NSImage imageNamed:sendRealEvents ? @"NSStopProgressFreestandingTemplate" : @"NSGoRightTemplate"];
- activeMenuItem.state = sendRealEvents;
-
- if (sendRealEvents) {
- [NSWorkspace.sharedWorkspace.notificationCenter
- addObserver:self
- selector:@selector(didSwitchApplication:)
- name:NSWorkspaceDidActivateApplicationNotification
- object:nil];
- NSLog(@"Listening for application changes.");
- } else {
- [NSWorkspace.sharedWorkspace.notificationCenter
- removeObserver:self
- name:NSWorkspaceDidActivateApplicationNotification
- object:nil];
- NSLog(@"Ignoring application changes.");
- }
+- (void)eventTranslationActivated:(NSNotification *)note {
+ activeButton.image = [NSImage imageNamed:@"NSStopProgressFreestandingTemplate"];
+ activeMenuItem.state = [note.object translatingEvents];
+ [NSWorkspace.sharedWorkspace.notificationCenter
+ addObserver:self
+ selector:@selector(didSwitchApplication:)
+ name:NSWorkspaceDidActivateApplicationNotification
+ object:nil];
+ NSLog(@"Listening for application changes.");
+}
+
+- (void)eventTranslationDeactivated:(NSNotification *)note {
+ activeButton.image = [NSImage imageNamed:@"NSGoRightTemplate"];
+ activeMenuItem.state = [note.object translatingEvents];
+ [NSWorkspace.sharedWorkspace.notificationCenter
+ removeObserver:self
+ name:NSWorkspaceDidActivateApplicationNotification
+ object:nil];
+ NSLog(@"Ignoring application changes.");
+}
+- (IBAction)toggleActivity:(id)sender {
+ self.jsController.translatingEvents = !self.jsController.translatingEvents;
}
- (NSInteger)firstConfigMenuIndex {
#import "JSAction.h"
#import "Target.h"
#import "TargetController.h"
+#import "NJEvents.h"
@implementation JoystickController {
IOHIDManagerRef hidManager;
JoystickController *controller = (__bridge JoystickController *)ctx;
IOHIDDeviceRef device = IOHIDQueueGetDevice(inSender);
- if (controller.sendingRealEvents) {
+ if (controller.translatingEvents) {
[controller runTargetForDevice:device value:value];
} else if ([NSApplication sharedApplication].mainWindow.isVisible) {
[controller showTargetForDevice:device value:value];
}
- (void)outlineViewSelectionDidChange:(NSNotification *)notification {
+
[targetController loadCurrent];
}
+- (void)setTranslatingEvents:(BOOL)translatingEvents {
+ if (translatingEvents != _translatingEvents) {
+ _translatingEvents = translatingEvents;
+ NSString *name = translatingEvents
+ ? NJEventTranslationActivated
+ : NJEventTranslationDeactivated;
+ [NSNotificationCenter.defaultCenter postNotificationName:name
+ object:self];
+ }
+}
+
@end