static boolean_t eventCallback(void * target, void * refcon, void * sender, IOHIDEventRef event)
{
    __eventCount++;
    __eventCounts[IOHIDEventGetType(event)]++;
    __eventLatencyTotal += IOHIDEventGetLatency(event, kMicrosecondScale);
    
    if ( ((1<<IOHIDEventGetType(event)) & __eventMask) != 0 ) {
    
        CFStringRef outputString = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%@\n"), event);
        
        if ( outputString ) {
            printf("%s", CFStringGetCStringPtr(outputString, kCFStringEncodingMacRoman));
            CFRelease(outputString);
        }
    }
    
    return false;
}
boolean_t isNXEvent (IOHIDEventRef event) {
  CFIndex usage = IOHIDEventGetIntegerValue(event, kIOHIDEventFieldVendorDefinedUsage);
  if (IOHIDEventGetType(event) == kIOHIDEventTypeVendorDefined &&
      IOHIDEventGetIntegerValue(event, kIOHIDEventFieldVendorDefinedUsagePage) == kHIDPage_AppleVendor &&
      (usage == kHIDUsage_AppleVendor_NXEvent ||
       usage == kHIDUsage_AppleVendor_NXEvent_Translated ||
       usage == kHIDUsage_AppleVendor_NXEvent_Diagnostic)) {
        return true;
      }
    return false;
}
void printNXEvents (IOHIDEventRef event) {
  if (isNXEvent (event)) {
    printNXEventInfo (event);
  }
  CFArrayRef childrens = IOHIDEventGetChildren (event);
  for (CFIndex index = 0 , count = childrens ? CFArrayGetCount(childrens) : 0 ; index < count ; index++) {
    IOHIDEventRef child = (IOHIDEventRef)CFArrayGetValueAtIndex(childrens, index);
    if (isNXEvent (child)) {
      printNXEventInfo (child);
    }
  }
}

IOHIDEventBlock eventBlock = ^(void * target __unused, void * refcon, void * sender __unused, IOHIDEventRef event)
{
    IOHIDEventType  type        = IOHIDEventGetType(event);
    uint64_t        timestamp   = IOHIDEventGetTimeStamp(event);
    uint64_t        interval    = 0;
    
    // RY: This should really be tracked per service, but I'm lazy
    __eventCount++;
    __eventCounts[type]++;
    __eventLatencyTotal += IOHIDEventGetLatency(event, kMicrosecondScale);
    
    if ( __eventLastTimestamps[type] ) {
        
        CFNumberRef number = NULL;
        
        interval = timestamp - __eventLastTimestamps[type];
        
        interval *= __timeBaseinfo.numer;