#pragma once
#if PLATFORM(MAC)
#if USE(APPLE_INTERNAL_SDK)
#import <IOKit/hid/IOHIDEventSystemClient.h>
#else
#define kIOHIDVendorIDKey "VendorID"
#define kIOHIDProductIDKey "ProductID"
WTF_EXTERN_C_BEGIN
typedef struct CF_BRIDGED_TYPE(id) __IOHIDServiceClient * IOHIDServiceClientRef;
typedef struct CF_BRIDGED_TYPE(id) __IOHIDEventSystemClient * IOHIDEventSystemClientRef;
typedef void (^IOHIDServiceClientBlock)(void *, void *, IOHIDServiceClientRef);
typedef CF_ENUM(int, IOHIDEventSystemClientType)
{
kIOHIDEventSystemClientTypeAdmin,
kIOHIDEventSystemClientTypeMonitor,
kIOHIDEventSystemClientTypePassive,
kIOHIDEventSystemClientTypeRateControlled,
kIOHIDEventSystemClientTypeSimple
};
IOHIDEventSystemClientRef IOHIDEventSystemClientCreateWithType(CFAllocatorRef, IOHIDEventSystemClientType, CFDictionaryRef);
IOHIDEventSystemClientRef IOHIDEventSystemClientCreate(CFAllocatorRef);
void IOHIDEventSystemClientSetMatching(IOHIDEventSystemClientRef, CFDictionaryRef);
void IOHIDEventSystemClientSetMatchingMultiple(IOHIDEventSystemClientRef, CFArrayRef);
IOHIDServiceClientRef IOHIDEventSystemClientCopyServiceForRegistryID(IOHIDEventSystemClientRef, uint64_t registryID);
void IOHIDEventSystemClientRegisterDeviceMatchingBlock(IOHIDEventSystemClientRef, IOHIDServiceClientBlock, void *, void *);
void IOHIDEventSystemClientUnregisterDeviceMatchingBlock(IOHIDEventSystemClientRef);
void IOHIDEventSystemClientScheduleWithDispatchQueue(IOHIDEventSystemClientRef, dispatch_queue_t);
CFTypeRef IOHIDServiceClientCopyProperty(IOHIDServiceClientRef service, CFStringRef key);
WTF_EXTERN_C_END
#endif // USE(APPLE_INTERNAL_SDK)
#endif // PLATFORM(MAC)