#import #import "JOYButton.h" #import "JOYAxis.h" #import "JOYAxes2D.h" #import "JOYAxes3D.h" #import "JOYHat.h" static NSString const *JOYAxes2DEmulateButtonsKey = @"JOYAxes2DEmulateButtons"; static NSString const *JOYHatsEmulateButtonsKey = @"JOYHatsEmulateButtons"; @class JOYController; @protocol JOYListener @optional -(void) controllerConnected:(JOYController *)controller; -(void) controllerDisconnected:(JOYController *)controller; -(void) controller:(JOYController *)controller buttonChangedState:(JOYButton *)button; -(void) controller:(JOYController *)controller movedAxis:(JOYAxis *)axis; -(void) controller:(JOYController *)controller movedAxes2D:(JOYAxes2D *)axes; -(void) controller:(JOYController *)controller movedAxes3D:(JOYAxes3D *)axes; -(void) controller:(JOYController *)controller movedHat:(JOYHat *)hat; @end typedef enum { JOYControllerCombinedTypeSingle, JOYControllerCombinedTypeComponent, JOYControllerCombinedTypeCombined, } JOYControllerCombinedType; typedef enum { JOYJoyConTypeNone, JOYJoyConTypeLeft, JOYJoyConTypeRight, JOYJoyConTypeDual, } JOYJoyConType; @interface JOYController : NSObject + (void)startOnRunLoop:(NSRunLoop *)runloop withOptions: (NSDictionary *)options; + (NSArray *) allControllers; + (void) registerListener:(id)listener; + (void) unregisterListener:(id)listener; - (JOYControllerCombinedType)combinedControllerType; - (NSArray *) buttons; - (NSArray *) axes; - (NSArray *) axes2D; - (NSArray *) axes3D; - (NSArray *) hats; - (NSArray *) allInputs; - (void)setRumbleAmplitude:(double)amp; - (void)setPlayerLEDs:(uint8_t)mask; - (uint8_t)LEDMaskForPlayer:(unsigned)player; @property (readonly, getter=isConnected) bool connected; @property (readonly) JOYJoyConType joyconType; @property (readonly) NSString *deviceName; @property (readonly) NSString *uniqueID; @property (nonatomic) bool usesHorizontalJoyConGrip; @end @interface JOYCombinedController : JOYController - (instancetype)initWithChildren:(NSArray *)children; - (void)breakApart; @property (readonly) NSArray *children; @end