Value callbacks no longer include the device in the sender
(or at least, IOHIDQueueGetDevice now returns NULL). Instead, you need
to query the device directly from the IOHIDValueRef via its
IOHIDElementRef.
- (void)HIDManager:(NJHIDManager *)manager deviceAdded:(IOHIDDeviceRef)device;
- (void)HIDManager:(NJHIDManager *)manager deviceRemoved:(IOHIDDeviceRef)device;
- (void)HIDManager:(NJHIDManager *)manager deviceAdded:(IOHIDDeviceRef)device;
- (void)HIDManager:(NJHIDManager *)manager deviceRemoved:(IOHIDDeviceRef)device;
-- (void)HIDManager:(NJHIDManager *)manager
- valueChanged:(IOHIDValueRef)value
- fromDevice:(IOHIDDeviceRef)device;
+- (void)HIDManager:(NJHIDManager *)manager valueChanged:(IOHIDValueRef)value;
- (void)HIDManager:(NJHIDManager *)manager didError:(NSError *)error;
- (void)HIDManager:(NJHIDManager *)manager didError:(NSError *)error;
static void _input(void *ctx, IOReturn inResult, void *inSender, IOHIDValueRef value) {
NJHIDManager *self = (__bridge NJHIDManager *)ctx;
static void _input(void *ctx, IOReturn inResult, void *inSender, IOHIDValueRef value) {
NJHIDManager *self = (__bridge NJHIDManager *)ctx;
- IOHIDDeviceRef device = IOHIDQueueGetDevice(inSender);
- [self.delegate HIDManager:self valueChanged:value fromDevice:device];
+ [self.delegate HIDManager:self valueChanged:value];
}
static void _add(void *ctx, IOReturn inResult, void *inSender, IOHIDDeviceRef device) {
}
static void _add(void *ctx, IOReturn inResult, void *inSender, IOHIDDeviceRef device) {
CVDisplayLinkStart(_displayLink);
}
CVDisplayLinkStart(_displayLink);
}
-- (void)runOutputForDevice:(IOHIDDeviceRef)device value:(IOHIDValueRef)value {
+- (void)runOutputForValue:(IOHIDValueRef)value {
+ IOHIDElementRef elt = value ? IOHIDValueGetElement(value) : NULL;
+ IOHIDDeviceRef device = elt ? IOHIDElementGetDevice(elt) : NULL;
NJDevice *dev = [self findDeviceByRef:device];
NJInput *mainInput = [dev inputForEvent:value];
[mainInput notifyEvent:value];
NJDevice *dev = [self findDeviceByRef:device];
NJInput *mainInput = [dev inputForEvent:value];
[mainInput notifyEvent:value];
-- (void)showOutputForDevice:(IOHIDDeviceRef)device value:(IOHIDValueRef)value {
+- (void)showOutputForValue:(IOHIDValueRef)value {
+ IOHIDElementRef elt = value ? IOHIDValueGetElement(value) : NULL;
+ IOHIDDeviceRef device = elt ? IOHIDElementGetDevice(elt) : NULL;
NJDevice *dev = [self findDeviceByRef:device];
NJInput *handler = [dev handlerForEvent:value];
if (!handler)
NJDevice *dev = [self findDeviceByRef:device];
NJInput *handler = [dev handlerForEvent:value];
if (!handler)
[self.delegate inputController:self didInput:handler];
}
[self.delegate inputController:self didInput:handler];
}
-- (void)HIDManager:(NJHIDManager *)manager
- valueChanged:(IOHIDValueRef)value
- fromDevice:(IOHIDDeviceRef)device {
- if (self.simulatingEvents
- && !NSApplication.sharedApplication.isActive) {
- [self runOutputForDevice:device value:value];
+- (void)HIDManager:(NJHIDManager *)manager valueChanged:(IOHIDValueRef)value {
+ if (self.simulatingEvents && !NSApplication.sharedApplication.isActive) {
+ [self runOutputForValue:value];
- [self showOutputForDevice:device value:value];
+ [self showOutputForValue:value];
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>NSHumanReadableCopyright</key>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>NSHumanReadableCopyright</key>