Overview
Comment: | OFGameController: Report vendor ID and product ID |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | gamecontroller |
Files: | files | file ages | folders |
SHA3-256: |
c0735ac803fe4651daed80162b990bd8 |
User & Date: | js on 2024-05-11 10:06:31 |
Other Links: | branch diff | manifest | tags |
Context
2024-05-11
| ||
10:19 | OFGameController: Add quirks for Joycons check-in: 1da303e600 user: js tags: gamecontroller | |
10:06 | OFGameController: Report vendor ID and product ID check-in: c0735ac803 user: js tags: gamecontroller | |
09:56 | OFGameController: Remove Mega Drive quirk check-in: 4f69c96c54 user: js tags: gamecontroller | |
Changes
Modified src/OFGameController.h from [92436c98c4] to [8e114313d9].
︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 32 33 34 35 | OF_ASSUME_NONNULL_BEGIN /** @file */ @class OFArray OF_GENERIC(ObjectType); @class OFMutableSet OF_GENERIC(ObjectType); @class OFSet OF_GENERIC(ObjectType); /** * @brief A button on a controller. * * Possible values are: * | > | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | OF_ASSUME_NONNULL_BEGIN /** @file */ @class OFArray OF_GENERIC(ObjectType); @class OFMutableSet OF_GENERIC(ObjectType); @class OFNumber; @class OFSet OF_GENERIC(ObjectType); /** * @brief A button on a controller. * * Possible values are: * |
︙ | ︙ | |||
233 234 235 236 237 238 239 240 241 242 243 244 245 246 | #endif /** * @brief The name of the controller. */ @property (readonly, nonatomic, copy) OFString *name; /** * @brief The buttons the controller has. */ @property (readonly, nonatomic, copy) OFSet OF_GENERIC(OFGameControllerButton) *buttons; /** | > > > > > > > > > > | 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | #endif /** * @brief The name of the controller. */ @property (readonly, nonatomic, copy) OFString *name; /** * @brief The vendor ID of the controller or `nil` if unavailable. */ @property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFNumber *vendorID; /** * @brief The product ID of the controller or `nil` if unavailable. */ @property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFNumber *productID; /** * @brief The buttons the controller has. */ @property (readonly, nonatomic, copy) OFSet OF_GENERIC(OFGameControllerButton) *buttons; /** |
︙ | ︙ |
Modified src/OFGameController.m from [1fb5242392] to [0e2f40500d].
︙ | ︙ | |||
66 67 68 69 70 71 72 73 74 75 76 77 78 79 | return [OFArray array]; } - (instancetype)init { OF_INVALID_INIT_METHOD } - (void)retrieveState { } - (float)pressureForButton: (OFGameControllerButton)button { | > > > > > > > > > > | 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | return [OFArray array]; } - (instancetype)init { OF_INVALID_INIT_METHOD } - (OFNumber *)vendorID { return nil; } - (OFNumber *)productID { return nil; } - (void)retrieveState { } - (float)pressureForButton: (OFGameControllerButton)button { |
︙ | ︙ |
Modified src/platform/Linux/OFGameController.m from [fb841c3ea2] to [8a31fda877].
︙ | ︙ | |||
23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <fcntl.h> #include <unistd.h> #import "OFGameController.h" #import "OFArray.h" #import "OFFileManager.h" #import "OFLocale.h" #import "OFSet.h" #include <sys/ioctl.h> #include <linux/input.h> #import "OFInitializationFailedException.h" #import "OFInvalidArgumentException.h" | > | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <fcntl.h> #include <unistd.h> #import "OFGameController.h" #import "OFArray.h" #import "OFFileManager.h" #import "OFLocale.h" #import "OFNumber.h" #import "OFSet.h" #include <sys/ioctl.h> #include <linux/input.h> #import "OFInitializationFailedException.h" #import "OFInvalidArgumentException.h" |
︙ | ︙ | |||
347 348 349 350 351 352 353 354 355 356 357 358 359 360 | [_name release]; [_buttons release]; [_pressedButtons release]; [super dealloc]; } - (void)retrieveState { struct input_event event; for (;;) { errno = 0; | > > > > > > > > > > | 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 | [_name release]; [_buttons release]; [_pressedButtons release]; [super dealloc]; } - (OFNumber *)vendorID { return [OFNumber numberWithUnsignedShort: _vendorID]; } - (OFNumber *)productID { return [OFNumber numberWithUnsignedShort: _productID]; } - (void)retrieveState { struct input_event event; for (;;) { errno = 0; |
︙ | ︙ |
Modified src/platform/Nintendo3DS/OFGameController.m from [52a27f332c] to [e9a5f2027b].
︙ | ︙ | |||
141 142 143 144 145 146 147 148 149 150 151 152 153 154 | (float)pos.dy / (pos.dy < 0 ? -INT16_MIN : INT16_MAX)); } - (OFString *)name { return @"Nintendo 3DS"; } - (OFSet OF_GENERIC(OFGameControllerButton) *)buttons { return [OFSet setWithObjects: OFGameControllerButtonA, OFGameControllerButtonB, OFGameControllerButtonSelect, OFGameControllerButtonStart, OFGameControllerButtonDPadRight, OFGameControllerButtonDPadLeft, OFGameControllerButtonDPadUp, | > > > > > > > > > > | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | (float)pos.dy / (pos.dy < 0 ? -INT16_MIN : INT16_MAX)); } - (OFString *)name { return @"Nintendo 3DS"; } - (OFNumber *)vendorID { return nil; } - (OFNumber *)productID { return nil; } - (OFSet OF_GENERIC(OFGameControllerButton) *)buttons { return [OFSet setWithObjects: OFGameControllerButtonA, OFGameControllerButtonB, OFGameControllerButtonSelect, OFGameControllerButtonStart, OFGameControllerButtonDPadRight, OFGameControllerButtonDPadLeft, OFGameControllerButtonDPadUp, |
︙ | ︙ |
Modified src/platform/NintendoDS/OFGameController.m from [4b17f6e4a3] to [a3027c8fb5].
︙ | ︙ | |||
121 122 123 124 125 126 127 128 129 130 131 132 133 134 | [_pressedButtons addObject: OFGameControllerButtonY]; } - (OFString *)name { return @"Nintendo DS"; } - (OFSet OF_GENERIC(OFGameControllerButton) *)buttons { return [OFSet setWithObjects: OFGameControllerButtonA, OFGameControllerButtonB, OFGameControllerButtonSelect, OFGameControllerButtonStart, OFGameControllerButtonDPadRight, OFGameControllerButtonDPadLeft, OFGameControllerButtonDPadUp, | > > > > > > > > > > | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | [_pressedButtons addObject: OFGameControllerButtonY]; } - (OFString *)name { return @"Nintendo DS"; } - (OFNumber *)vendorID { return nil; } - (OFNumber *)productID { return nil; } - (OFSet OF_GENERIC(OFGameControllerButton) *)buttons { return [OFSet setWithObjects: OFGameControllerButtonA, OFGameControllerButtonB, OFGameControllerButtonSelect, OFGameControllerButtonStart, OFGameControllerButtonDPadRight, OFGameControllerButtonDPadLeft, OFGameControllerButtonDPadUp, |
︙ | ︙ |
Modified src/platform/Windows/OFGameController.m from [c6002b84b2] to [0f49be7a6d].
︙ | ︙ | |||
175 176 177 178 179 180 181 182 183 184 185 186 187 188 | (state.Gamepad.sThumbRY < 0 ? -INT16_MIN : INT16_MAX)); } - (OFString *)name { return @"XInput 1.3"; } - (OFSet OF_GENERIC(OFGameControllerButton) *)buttons { return [OFSet setWithObjects: OFGameControllerButtonA, OFGameControllerButtonB, OFGameControllerButtonX, OFGameControllerButtonY, OFGameControllerButtonL, OFGameControllerButtonR, | > > > > > > > > > > | 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | (state.Gamepad.sThumbRY < 0 ? -INT16_MIN : INT16_MAX)); } - (OFString *)name { return @"XInput 1.3"; } - (OFNumber *)vendorID { return nil; } - (OFNumber *)productID { return nil; } - (OFSet OF_GENERIC(OFGameControllerButton) *)buttons { return [OFSet setWithObjects: OFGameControllerButtonA, OFGameControllerButtonB, OFGameControllerButtonX, OFGameControllerButtonY, OFGameControllerButtonL, OFGameControllerButtonR, |
︙ | ︙ |
Modified tests/gamecontroller/GameControllerTests.m from [97e82caa67] to [77c7b12639].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include "config.h" #import "OFApplication.h" #import "OFArray.h" #import "OFColor.h" #import "OFGameController.h" #import "OFSet.h" #import "OFStdIOStream.h" #import "OFThread.h" @interface GameControllerTests: OFObject <OFApplicationDelegate> @end | > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include "config.h" #import "OFApplication.h" #import "OFArray.h" #import "OFColor.h" #import "OFGameController.h" #import "OFNumber.h" #import "OFSet.h" #import "OFStdIOStream.h" #import "OFThread.h" @interface GameControllerTests: OFObject <OFApplicationDelegate> @end |
︙ | ︙ | |||
44 45 46 47 48 49 50 | for (OFGameController *controller in controllers) { OFArray OF_GENERIC(OFGameControllerButton) *buttons = controller.buttons.allObjects.sortedArray; size_t i = 0; [OFStdOut setForegroundColor: [OFColor green]]; | | > > > > > > > > > > | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | for (OFGameController *controller in controllers) { OFArray OF_GENERIC(OFGameControllerButton) *buttons = controller.buttons.allObjects.sortedArray; size_t i = 0; [OFStdOut setForegroundColor: [OFColor green]]; [OFStdOut writeString: controller.name]; if (controller.vendorID != nil && controller.productID != nil) { [OFStdOut setForegroundColor: [OFColor teal]]; [OFStdOut writeFormat: @" [%04X:%04X]", controller.vendorID.unsignedShortValue, controller.productID.unsignedShortValue]; } [OFStdOut writeString: @"\n"]; [controller retrieveState]; for (OFGameControllerButton button in buttons) { float pressure = [controller pressureForButton: button]; |
︙ | ︙ |