Fix for dropping input events in OS X 10.10.
[enjoyable.git] / Classes / NJHIDManager.h
1 #import <Foundation/Foundation.h>
2 #import <IOKit/hid/IOHIDLib.h>
3
4 @protocol NJHIDManagerDelegate;
5
6 @interface NJHIDManager : NSObject
7 // Light OO wrapper around IOKit callbacks.
8
9 - (id)initWithCriteria:(NSArray *)criteria
10 delegate:(id <NJHIDManagerDelegate>)delegate;
11
12 @property (nonatomic, weak) id <NJHIDManagerDelegate> delegate;
13
14 @property (nonatomic, copy) NSArray *criteria;
15 // Changing the criteria may trigger a stop and restart. If this
16 // happens, messages will be sent to the delegate as usual.
17
18 @property (nonatomic, assign) BOOL running;
19 // Assigning YES is like sending start; NO like stop.
20
21 - (void)start;
22 - (void)stop;
23
24 @end
25
26 @protocol NJHIDManagerDelegate
27
28 - (void)HIDManagerDidStart:(NJHIDManager *)manager;
29 - (void)HIDManagerDidStop:(NJHIDManager *)manager;
30 // Stopping the device will not trigger any removal messages, so any
31 // cleanup in the delegate must be done here.
32
33 - (void)HIDManager:(NJHIDManager *)manager deviceAdded:(IOHIDDeviceRef)device;
34 - (void)HIDManager:(NJHIDManager *)manager deviceRemoved:(IOHIDDeviceRef)device;
35
36 - (void)HIDManager:(NJHIDManager *)manager valueChanged:(IOHIDValueRef)value;
37
38 - (void)HIDManager:(NJHIDManager *)manager didError:(NSError *)error;
39
40 @end