// // HIDEventService.m // HID // // Created by dekom on 9/13/18. // #import "HIDEventServicePrivate.h" #import <Foundation/Foundation.h> #import <IOKit/hid/IOHIDServicePrivate.h> @implementation HIDEventService (HIDFramework) - (id)propertyForKey:(NSString *)key { return (id)CFBridgingRelease(IOHIDServiceCopyProperty( (__bridge IOHIDServiceRef)self, (__bridge CFStringRef)key)); } - (BOOL)setProperty:(id)value forKey:(NSString *)key { return IOHIDServiceSetProperty((__bridge IOHIDServiceRef)self, (__bridge CFStringRef)key, (__bridge CFTypeRef)value); } - (BOOL)conformsToUsagePage:(NSInteger)usagePage usage:(NSInteger)usage { return IOHIDServiceConformsTo((__bridge IOHIDServiceRef)self, (uint32_t)usagePage, (uint32_t)usage); } - (HIDEvent *)eventMatching:(NSDictionary *)matching { return (HIDEvent *)CFBridgingRelease(IOHIDServiceCopyMatchingEvent( (__bridge IOHIDServiceRef)self, (__bridge CFDictionaryRef)matching, NULL)); } - (uint64_t)serviceID { id regID = (__bridge id)IOHIDServiceGetRegistryID( (__bridge IOHIDServiceRef)self); return regID ? [regID unsignedLongLongValue] : 0; } @end @implementation HIDEventService (HIDFrameworkPrivate) - (void)dispatchEvent:(HIDEvent *)event { _IOHIDServiceDispatchEvent((__bridge IOHIDServiceRef)self, (__bridge IOHIDEventRef)event); } @end