#ifndef IOHIDElement_h
#define IOHIDElement_h
#import <IOKit/hid/IOHIDKeys.h>
#import <IOKit/hid/IOHIDElement.h>
#import <IOKit/hid/IOHIDValue.h>
#import "IOHIDLibUserClient.h"
@interface HIDLibElement : NSObject {
IOHIDElementRef _element;
IOHIDValueRef _value;
IOHIDValueRef _defaultValue;
NSString *_psKey;
IOHIDElementStruct _elementStruct;
BOOL _isConstant;
BOOL _isUpdated;
}
- (nullable instancetype)initWithElementRef:(nonnull IOHIDElementRef)elementRef;
- (nullable instancetype)initWithElementStruct:(nonnull IOHIDElementStruct *)elementStruct
parent:(nullable IOHIDElementRef)parent
index:(uint32_t)index;
- (void)setIntegerValue:(NSInteger)integerValue;
@property (nullable) IOHIDElementRef elementRef;
@property (nullable) IOHIDValueRef valueRef;
@property (nullable) IOHIDValueRef defaultValueRef;
@property NSInteger integerValue;
@property (nullable) NSData *dataValue;
@property (nullable, copy) NSString *psKey;
@property (readonly) uint64_t timestamp;
@property (readonly) NSInteger length;
@property (readonly) IOHIDElementStruct elementStruct;
@property BOOL isConstant;
@property BOOL isUpdated;
@property (readonly) uint32_t elementCookie;
@property (readonly) uint32_t collectionCookie;
@property (readonly) IOHIDElementType type;
@property (readonly) uint32_t usage;
@property (readonly) uint32_t usagePage;
@property (readonly) uint32_t unit;
@property (readonly) uint8_t unitExponent;
@property (readonly) uint8_t reportID;
@property (readonly) uint32_t usageMin;
@property (readonly) uint32_t usageMax;
@property (readonly) IOHIDElementCollectionType collectionType;
@end
#endif