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 printNXEventInfo (IOHIDEventRef event) {
  CFIndex usage = IOHIDEventGetIntegerValue(event, kIOHIDEventFieldVendorDefinedUsage);
  if (__nxUsageMask & (1 << usage))
  {
    
    NXEvent *nxEvent = NULL;
    CFIndex nxEventLength = 0;
    IOHIDEventGetVendorDefinedData (event, (uint8_t**)&nxEvent, &nxEventLength);
    if (nxEvent && (nxEventLength == sizeof(NXEvent) || nxEventLength == sizeof(NXEventExt)))
    {
      if (__nxTypeMask & (1 << nxEvent->type))
      {
         CFStringRef nxEventDescription;
         if (nxEventLength == sizeof(NXEventExt)) {
            nxEventDescription = NxEventExtCreateDescription (nxEvent);
         } else {
            nxEventDescription = NxEventCreateDescription (nxEvent);
         }
        printf("[NXEvent Dispatch Type: %s]\n%s",
               (usage == kHIDUsage_AppleVendor_NXEvent) ? "Kernel" : (
               (usage == kHIDUsage_AppleVendor_NXEvent_Translated) ? "Translated" : "Diagnostic"),
               CFStringGetCStringPtr(nxEventDescription, kCFStringEncodingMacRoman)
               );
        CFRelease(nxEventDescription);
      }
    }
    else
    {
      printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
      printf("ERROR!!! NXEventData %p, nxEventLength = 0x%lx (expected length 0x%lx)\n", nxEvent, nxEventLength, sizeof(NXEvent));
      printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
    }
  }
}
static bool button_pressed(void *event_system, uint32_t usage_page, uint32_t usage) {
    /* This magic comes straight from Substrate... I don't really understand
     * what it's doing.  In particular, where is the equivalent kernel
     * implementation on OS X?  Does it not exist?  But I guess Substrate is
     * emulating backboardd. */
    void *dummy = IOHIDEventCreateKeyboardEvent(NULL, mach_absolute_time(),
                                                usage_page, usage,
                                                0, 0);
    if (!dummy) {
        ib_log("couldn't create dummy HID event");
        return false;
    }
    void *event = IOHIDEventSystemCopyEvent(event_system,
                                            kIOHIDEventTypeKeyboard,
                                            dummy, 0);
    if (!event)
        return false;
    CFIndex ival = IOHIDEventGetIntegerValue(event, kIOHIDEventFieldKeyboardDown);
    return ival;
}