[_continuousOutputsTick invalidate];
}
-- (id)elementForUID:(NSString *)uid {
- for (NJDevice *dev in _devices) {
- id item = [dev elementForUID:uid];
- if (item)
- return item;
- }
- return nil;
-}
-
- (void)addRunningOutput:(NJOutput *)output {
// Axis events will trigger every small movement, don't keep
// re-adding them or they trigger multiple times each time.
}
}
-- (void)hidManager:(NJHIDManager *)manager deviceAdded:(IOHIDDeviceRef)device {
- NJDevice *match = [[NJDevice alloc] initWithDevice:device];
- match.index = 1;
+- (void)addDevice:(NJDevice *)device {
BOOL available;
do {
available = YES;
for (NJDevice *used in _devices) {
- if ([used isEqual:match]) {
- match.index += 1;
+ if ([used isEqual:device]) {
+ device.index += 1;
available = NO;
}
}
} while (!available);
+
+ [_devices addObject:device];
+}
- [_devices addObject:match];
+- (void)hidManager:(NJHIDManager *)manager deviceAdded:(IOHIDDeviceRef)device {
+ NJDevice *match = [[NJDevice alloc] initWithDevice:device];
+ [devicesViewController beginUpdates];
+ [self addDevice:match];
[devicesViewController addedDevice:match atIndex:_devices.count - 1];
+ [devicesViewController endUpdates];
}
- (NJDevice *)findDeviceByRef:(IOHIDDeviceRef)device {
IOHIDDeviceRegisterInputValueCallback(device, NULL, NULL);
if (match) {
NSInteger idx = [_devices indexOfObjectIdenticalTo:match];
+ [devicesViewController beginUpdates];
[_devices removeObjectAtIndex:idx];
[devicesViewController removedDevice:match atIndex:idx];
+ [devicesViewController endUpdates];
}
}
}
- (void)stopHidIfDisabled:(NSNotification *)application {
- if (!self.simulatingEvents)
+ if (!self.simulatingEvents && !NSProcessInfo.processInfo.isBeingDebugged)
[self stopHid];
}
self.simulatingEvents = sender.state == NSOnState;
}
-- (void)deviceViewControllerDidSelectNothing:(NJDeviceViewController *)devices {
+- (NSInteger)numberOfDevicesInDeviceList:(NJDeviceViewController *)dvc {
+ return _devices.count;
+}
+
+- (NJDevice *)deviceViewController:(NJDeviceViewController *)dvc
+ deviceForIndex:(NSUInteger)idx {
+ return _devices[idx];
+}
+
+- (id)deviceViewController:(NJDeviceViewController *)dvc
+ elementForUID:(NSString *)uid {
+ for (NJDevice *dev in _devices) {
+ id item = [dev elementForUID:uid];
+ if (item)
+ return item;
+ }
+ return nil;
+}
+
+- (void)deviceViewControllerDidSelectNothing:(NJDeviceViewController *)dvc {
[outputController loadCurrent];
}
-- (void)deviceViewController:(NJDeviceViewController *)devices
+- (void)deviceViewController:(NJDeviceViewController *)dvc
didSelectBranch:(NJInputPathElement *)handler {
[outputController loadCurrent];
}
-- (void)deviceViewController:(NJDeviceViewController *)devices
+- (void)deviceViewController:(NJDeviceViewController *)dvc
didSelectHandler:(NJInputPathElement *)handler {
[outputController loadCurrent];
}
-- (void)deviceViewController:(NJDeviceViewController *)devices
+- (void)deviceViewController:(NJDeviceViewController *)dvc
didSelectDevice:(NJInputPathElement *)device {
[outputController loadCurrent];
}