Index: src/hid/OHEvdevGamepad.m ================================================================== --- src/hid/OHEvdevGamepad.m +++ src/hid/OHEvdevGamepad.m @@ -45,11 +45,11 @@ self.rightTriggerButton == nil || self.leftThumbstickButton == nil || self.rightThumbstickButton == nil || self.menuButton == nil || self.optionsButton == nil || self.homeButton == nil || self.leftThumbstick == nil || - self.rightThumbstick == nil || self.directionalPad == nil) + self.rightThumbstick == nil || self.dPad == nil) @throw [OFInvalidArgumentException exception]; objc_autoreleasePoolPop(pool); } @catch (id e) { [self release]; @@ -93,11 +93,11 @@ directionalPads { return [OFDictionary dictionaryWithKeysAndObjects: @"Left Thumbstick", self.leftThumbstick, @"Right Thumbstick", self.rightThumbstick, - @"D-Pad", self.directionalPad, nil]; + @"D-Pad", self.dPad, nil]; } - (OHGameControllerButton *)northButton { return [_rawProfile.buttons objectForKey: @"Y"]; @@ -201,11 +201,11 @@ initWithName: @"Right Thumbstick" xAxis: xAxis yAxis: yAxis] autorelease]; } -- (OHGameControllerDirectionalPad *)directionalPad +- (OHGameControllerDirectionalPad *)dPad { OHGameControllerAxis *xAxis = [_rawProfile.axes objectForKey: @"HAT0X"]; OHGameControllerAxis *yAxis = [_rawProfile.axes objectForKey: @"HAT0Y"]; OHGameControllerButton *upButton, *downButton; OHGameControllerButton *leftButton, *rightButton; Index: src/hid/OHGamepad.h ================================================================== --- src/hid/OHGamepad.h +++ src/hid/OHGamepad.h @@ -29,24 +29,90 @@ @interface OHGamepad: OHGameControllerProfile { OF_RESERVE_IVARS(OHGamepad, 4) } +/** + * @brief The north button on the gamepad's diamond pad. + */ @property (readonly, nonatomic) OHGameControllerButton *northButton; + +/** + * @brief The south button on the gamepad's diamond pad. + */ @property (readonly, nonatomic) OHGameControllerButton *southButton; + +/** + * @brief The west button on the gamepad's diamond pad. + */ @property (readonly, nonatomic) OHGameControllerButton *westButton; + +/** + * @brief The east button on the gamepad's diamond pad. + */ @property (readonly, nonatomic) OHGameControllerButton *eastButton; + +/** + * @brief The left shoulder button. + */ @property (readonly, nonatomic) OHGameControllerButton *leftShoulderButton; + +/** + * @brief The right shoulder button. + */ @property (readonly, nonatomic) OHGameControllerButton *rightShoulderButton; + +/** + * @brief The left trigger button. + */ @property (readonly, nonatomic) OHGameControllerButton *leftTriggerButton; + +/** + * @brief The right trigger button. + */ @property (readonly, nonatomic) OHGameControllerButton *rightTriggerButton; + +/** + * @brief The left thumb stick button. + */ @property (readonly, nonatomic) OHGameControllerButton *leftThumbstickButton; + +/** + * @brief The right thumb stick button. + */ @property (readonly, nonatomic) OHGameControllerButton *rightThumbstickButton; + +/** + * @brief The menu button, sometimes also called start button. + */ @property (readonly, nonatomic) OHGameControllerButton *menuButton; + +/** + * @brief The options button, sometimes also called select button. + */ @property (readonly, nonatomic) OHGameControllerButton *optionsButton; -@property (readonly, nonatomic) OHGameControllerButton *homeButton; + +/** + * @brief The home button. + * + * This button is optional and may be `nil`. + */ +@property OF_NULLABLE_PROPERTY (readonly, nonatomic) + OHGameControllerButton *homeButton; + +/** + * @brief The left thumb stick. + */ @property (readonly, nonatomic) OHGameControllerDirectionalPad *leftThumbstick; + +/** + * @brief The right thumb stick. + */ @property (readonly, nonatomic) OHGameControllerDirectionalPad *rightThumbstick; -@property (readonly, nonatomic) OHGameControllerDirectionalPad *directionalPad; + +/** + * @brief The D-Pad. + */ +@property (readonly, nonatomic) OHGameControllerDirectionalPad *dPad; @end OF_ASSUME_NONNULL_END Index: src/hid/OHGamepad.m ================================================================== --- src/hid/OHGamepad.m +++ src/hid/OHGamepad.m @@ -23,7 +23,7 @@ @implementation OHGamepad @dynamic northButton, southButton, westButton, eastButton, leftShoulderButton; @dynamic rightShoulderButton, leftTriggerButton, rightTriggerButton; @dynamic leftThumbstickButton, rightThumbstickButton, menuButton, optionsButton; -@dynamic homeButton, leftThumbstick, rightThumbstick, directionalPad; +@dynamic homeButton, leftThumbstick, rightThumbstick, dPad; @end Index: src/hid/OHXInputGameController.m ================================================================== --- src/hid/OHXInputGameController.m +++ src/hid/OHXInputGameController.m @@ -209,17 +209,17 @@ (state.Gamepad.sThumbRX < 0 ? -INT16_MIN : INT16_MAX); _gamepad.rightThumbstick.yAxis.value = -(float)state.Gamepad.sThumbRY / (state.Gamepad.sThumbRY < 0 ? -INT16_MIN : INT16_MAX); - _gamepad.directionalPad.upButton.value = + _gamepad.dPad.upButton.value = !!(state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP); - _gamepad.directionalPad.downButton.value = + _gamepad.dPad.downButton.value = !!(state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN); - _gamepad.directionalPad.leftButton.value = + _gamepad.dPad.leftButton.value = !!(state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT); - _gamepad.directionalPad.rightButton.value = + _gamepad.dPad.rightButton.value = !!(state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT); } - (OFString *)name {