Skip to content

GameController MacCatalyst xcode16.3 b1

Rolf Bjarne Kvinge edited this page Dec 12, 2024 · 1 revision

#GameController.framework

diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCController.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCController.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCController.h	2024-11-10 11:08:14
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCController.h	2025-02-07 23:23:34
@@ -48,8 +48,8 @@
  @see NSNotificationCenter
  @see GCController.controllers
  */
-GAMECONTROLLER_EXTERN NSString *const GCControllerDidConnectNotification API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0));
-GAMECONTROLLER_EXTERN NSString *const GCControllerDidDisconnectNotification API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0));
+GAMECONTROLLER_EXPORT NSString *const GCControllerDidConnectNotification API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
+GAMECONTROLLER_EXPORT NSString *const GCControllerDidDisconnectNotification API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 
 /**
 Use these constants with NSNotificationCenter to listen to a controller becoming the most recently used controller.
@@ -69,8 +69,8 @@
 @see NSNotificationCenter
 @see GCController.controllers
 */
-GAMECONTROLLER_EXTERN NSString *const GCControllerDidBecomeCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN NSString *const GCControllerDidStopBeingCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT NSString *const GCControllerDidBecomeCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT NSString *const GCControllerDidStopBeingCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /**
  Use this constant with NSNotificationCenter to listen to controller user customization events.
@@ -92,7 +92,7 @@
  @see NSNotificationCenter
  @see GCController.controllers
  */
-GAMECONTROLLER_EXTERN NSString *const GCControllerUserCustomizationsDidChangeNotification API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0));
+GAMECONTROLLER_EXPORT NSString *const GCControllerUserCustomizationsDidChangeNotification API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0));
 
 /**
  This is the player index that a connected controller will have if it has never been assigned a player index on the current system.
@@ -100,12 +100,12 @@
  controller set it back to this value.
  */
 typedef NS_ENUM(NSInteger, GCControllerPlayerIndex) {
-    GCControllerPlayerIndexUnset = -1,
-    GCControllerPlayerIndex1 = 0,
-    GCControllerPlayerIndex2,
-    GCControllerPlayerIndex3,
-    GCControllerPlayerIndex4,
-};
+    GCControllerPlayerIndexUnset API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) = -1,
+    GCControllerPlayerIndex1 API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)) = 0,
+    GCControllerPlayerIndex2 API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)),
+    GCControllerPlayerIndex3 API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)),
+    GCControllerPlayerIndex4 API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)),
+} API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 
 
 /**
@@ -119,10 +119,30 @@
  supported before using a controller in your application. Ignore a controller that doesn't support a profile that suits
  your application, as the user will expect their controller to either be fully supported or not supported at all.
   */
-API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0))
-@interface GCController : NSObject<GCDevice>
+API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0))
+@interface GCController : NSObject <GCDevice>
 
 /**
+ *  Get a list of controllers currently attached to the system.
+ *
+ *  @see GCControllerDidConnectNotification
+ *  @see GCControllerDidDisconnectNotification
+ */
++ (NSArray<GCController *> *)controllers API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
+
+/**
+ *  The most recently used game controller. If a user actuates a game controller
+ *  input, that controller will become the current one.
+ *
+ *  @note
+ *  This is useful for single player games where you only care about whether an
+ *  input is pressed, and not where it came from.  You will still need to
+ *  register for changes to GCController.current so that your UI can remain
+ *  up-to-date with the current controller.
+ */
+@property (class, atomic, strong, readonly, nullable) GCController *current API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+
+/**
  Set this block to be notified when a user intends to suspend or resume the current game state. A controller will have a button
  dedicated to suspending and resuming play and invoking context sensitive actions. During event handling the system will
  notify the application using this block such that the application can handle the suspension and resumption from the given controller.
@@ -135,18 +155,9 @@
  @see microGamepad
  @see extendedGamepad
  */
-@property (nonatomic, copy, nullable) void (^controllerPausedHandler)(GCController *controller) API_DEPRECATED("controllerPausedHandler has been deprecated. Use the Menu button found on the controller's profile, if it exists.", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0));
+@property (nonatomic, copy, nullable) void (^controllerPausedHandler)(GCController *controller) API_DEPRECATED("Use the Menu button found on the controller's input profile, if it exists.", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0));
 
-
 /**
- The most recently used game controller. If a user actuates a game controller input, that controller will become the current one.
- 
- @note This is useful for single player games where you only care about whether an input is pressed, and not where it came from. You
- will still need to register for changes to GCController.current so that your UI can remain up-to-date with the current controller.
- */
-@property (class, atomic, strong, readonly, nullable) GCController *current API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-
-/**
  Whether the current application should monitor and respond to game controller events when it is not the frontmost application.
  
  @example If shouldMonitorBackgroundEvents is NO, and the application is not the frontmost application, any inputs from a game controller will
@@ -157,26 +168,14 @@
  */
 @property (class, nonatomic, readwrite) BOOL shouldMonitorBackgroundEvents API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
 
-
 /**
  A controller may be form fitting or otherwise closely attached to the device. This closeness to other inputs on the device
  may suggest that interaction with the device may use other inputs easily. This is presented to developers to allow them to
  make informed decisions about UI and interactions to choose for their game in this situation.
  */
-@property (nonatomic, readonly, getter = isAttachedToDevice) BOOL attachedToDevice;
+@property (nonatomic, readonly, getter = isAttachedToDevice) BOOL attachedToDevice API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 
 /**
- A controller may represent a real device managed by the operating system, or a virtual snapshot created by the developer.
- If a controller is directly created by the developer, it is considered to be a snapshot, allowing direct writes to any
- GCControllerElement of its profiles. If the controller is not snapshot, the system will reject any write requests to GCControllerElement.
- 
- @see controllerWithMicroGamepad
- @see controllerWithExtendedGamepad
- @see capture
- */
-@property (atomic, readonly, getter = isSnapshot) BOOL snapshot API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
-
-/**
  A player index for the controller, defaults to GCControllerPlayerIndexUnset.
  
  This can be set both for the application to keep track of controllers and as a signal to make a controller display a player
@@ -187,7 +186,7 @@
  
  Negative values less than GCControllerPlayerIndexUnset will just map back to GCControllerPlayerIndexUnset when read back.
  */
-@property (nonatomic) GCControllerPlayerIndex playerIndex;
+@property (nonatomic) GCControllerPlayerIndex playerIndex API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 
 /**
  Gets the input profile for the controller.
@@ -228,17 +227,16 @@
  @see motion
  */
 @property (nonatomic, strong, readonly, nullable) GCGamepad *gamepad API_DEPRECATED_WITH_REPLACEMENT("extendedGamepad", macos(10.9, 10.12), ios(7.0, 10.0), tvos(7.0, 10.0));
-@property (nonatomic, strong, readonly, nullable) GCMicroGamepad *microGamepad;
-@property (nonatomic, strong, readonly, nullable) GCExtendedGamepad *extendedGamepad;
+@property (nonatomic, strong, readonly, nullable) GCMicroGamepad *microGamepad API_AVAILABLE(macos(10.12), ios(10.0), tvos(9.0));
+@property (nonatomic, strong, readonly, nullable) GCExtendedGamepad *extendedGamepad API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 
-
 /**
  Gets the motion input profile. This profile is optional and may be available if the controller is attached to a device that supports motion.
  If this is nil the controller does not support motion input and only the gamepad & extendedGamepad profiles are available.
  @see gamepad
  @see extendedGamepad
  */
-@property (nonatomic, strong, readonly, nullable) GCMotion *motion API_AVAILABLE(macos(10.10), ios(8.0), tvos(8.0));
+@property (nonatomic, strong, readonly, nullable) GCMotion *motion API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0));
 
 /**
  Gets the light for the controller, if one exists.
@@ -258,26 +256,65 @@
 @property (nonatomic, retain, readonly, nullable) GCDeviceHaptics *haptics API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 
+@end
+
+
+
+@interface GCController (Snapshot)
+
 /**
- Polls the state vector of the controller and saves it to a new and writable instance of GCController.
- 
- If your application is heavily multithreaded this may also be useful to guarantee atomicity of input handling as
- a snapshot will not change based on user input once it is taken.
- 
- @see snapshot
- @return A new controller with the duplicated state vector of the current controller
+ *  A controller may represent a real device managed by the operating system,
+ *  or a virtual snapshot created by the developer.  If a controller is created
+ *  by the developer, it is considered to be a snapshot, allowing direct writes
+ *  to any GCControllerElement of its profiles.  If the controller is not
+ *  snapshot, the system will reject any write requests to GCControllerElement.
+ *
+ *  @see controllerWithMicroGamepad
+ *  @see controllerWithExtendedGamepad
+ *  @see capture
  */
+@property (readonly, getter=isSnapshot) BOOL snapshot API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
+
+/**
+ *  Polls the state vector of the controller and saves it to a new and writable
+ *  instance of GCController.
+ *
+ *  If your application is heavily multithreaded this may also be useful to
+ *  guarantee atomicity of input handling as a snapshot will not change based
+ *  on user input once it is taken.
+ *
+ *  @see snapshot
+ *  @return A new controller with the duplicated state vector of the current
+ *  controller.
+ */
 - (GCController *)capture API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
 
 /**
- Get a list of controllers currently attached to the system.
+ *  Creates a controller with a micro gamepad profile.
+ *
+ *  This controller will be considered a snapshot, allowing developers to write 
+ *  to any GCControllerElement of its profiles.
+ *
+ *  @see snapshot
+ *  @return A new controller with a micro gamepad profile
+ */
++ (GCController *)controllerWithMicroGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
+
+/**
+ Creates a controller with an extended gamepad profile.
  
- @see GCControllerDidConnectNotification
- @see GCControllerDidDisconnectNotification
+ This controller will be considered a snapshot, allowing developers to write to any GCControllerElement of its profiles.
+ 
+ @see snapshot
+ @return A new controller with an extended gamepad profile
  */
-+ (NSArray<GCController *> *)controllers;
++ (GCController *)controllerWithExtendedGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
 
+@end
 
+
+@interface GCController (Discovery)
+
 /**
  Start discovery of new wireless controllers that are discoverable. This is an asynchronous and the supplied completionHandler
  will get called once no more devices can be found. If there are already multiple controllers available for use, there
@@ -302,7 +339,7 @@
  @see stopWirelessControllerDiscovery
  @see controllers
  */
-+ (void)startWirelessControllerDiscoveryWithCompletionHandler:(nullable void (^)(void))completionHandler;
++ (void)startWirelessControllerDiscoveryWithCompletionHandler:(nullable void (^)(void))completionHandler API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 
 /**
  If no more controllers are needed, depending on game state or number of controllers supported by a game, the discovery
@@ -312,28 +349,7 @@
  
  @see startWirelessControllerDiscoveryWithCompletionHandler:
  */
-+ (void)stopWirelessControllerDiscovery;
-
-/**
- Creates a controller with a micro gamepad profile.
- 
- This controller will be considered a snapshot, allowing developers to write to any GCControllerElement of its profiles.
- 
- @see snapshot
- @return A new controller with a micro gamepad profile
- */
-+ (GCController *)controllerWithMicroGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
-
-/**
- Creates a controller with an extended gamepad profile.
- 
- This controller will be considered a snapshot, allowing developers to write to any GCControllerElement of its profiles.
- 
- @see snapshot
- @return A new controller with an extended gamepad profile
- */
-+ (GCController *)controllerWithExtendedGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
-
++ (void)stopWirelessControllerDiscovery API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 
 @end
 
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerAxisInput.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerAxisInput.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerAxisInput.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerAxisInput.h	2025-02-07 23:23:34
@@ -9,7 +9,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0))
+API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0))
 @interface GCControllerAxisInput : GCControllerElement
 
 /**
@@ -18,7 +18,7 @@
  @param axis the element that has been modified.
  @param value the value the axis was set to at the time the valueChangedHandler fired.
  */
-typedef void (^GCControllerAxisValueChangedHandler)(GCControllerAxisInput *axis, float value);
+typedef void (^GCControllerAxisValueChangedHandler)(GCControllerAxisInput *axis, float value) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 @property (nonatomic, copy, nullable) GCControllerAxisValueChangedHandler valueChangedHandler;
 
 /**
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerButtonInput.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerButtonInput.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerButtonInput.h	2024-11-10 09:39:49
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerButtonInput.h	2025-02-07 23:23:33
@@ -9,7 +9,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0))
+API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0))
 @interface GCControllerButtonInput : GCControllerElement
 
 /**
@@ -21,7 +21,7 @@
  @see value
  @see pressed
  */
-typedef void (^GCControllerButtonValueChangedHandler)(GCControllerButtonInput *button, float value, BOOL pressed);
+typedef void (^GCControllerButtonValueChangedHandler)(GCControllerButtonInput *button, float value, BOOL pressed) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 @property (nonatomic, copy, nullable) GCControllerButtonValueChangedHandler valueChangedHandler;
 
 /**
@@ -29,7 +29,7 @@
  will get called less often than the valueChangedHandler with the additional feature of the pressed state
  being different to the last time it was called.
  */
-@property (nonatomic, copy, nullable) GCControllerButtonValueChangedHandler pressedChangedHandler API_AVAILABLE(macos(10.10), ios(8.0), tvos(8.0));
+@property (nonatomic, copy, nullable) GCControllerButtonValueChangedHandler pressedChangedHandler API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0));
 
 /**
  Set this block if you want to be notified when the touched state on this button changes.
@@ -41,7 +41,7 @@
  @see value
  @see pressed
 */
-typedef void (^GCControllerButtonTouchedChangedHandler)(GCControllerButtonInput *button, float value, BOOL pressed, BOOL touched);
+typedef void (^GCControllerButtonTouchedChangedHandler)(GCControllerButtonInput *button, float value, BOOL pressed, BOOL touched) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 @property (nonatomic, copy, nullable) GCControllerButtonTouchedChangedHandler touchedChangedHandler API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /**
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerDirectionPad.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerDirectionPad.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerDirectionPad.h	2024-11-10 09:39:49
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerDirectionPad.h	2025-02-07 23:23:33
@@ -16,7 +16,7 @@
  A direction pad is a common grouping of 2 axis inputs where the input can also be interpreted as 2 sets of mutually exclusive button pairs.
  Only one button in each pair, {up, down} and {left, right}, can be pressed at any one time.
  */
-API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0))
+API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0))
 @interface GCControllerDirectionPad : GCControllerElement
 
 /**
@@ -26,7 +26,7 @@
  @param xValue the value the x axis was set to at the time the valueChangedHandler fired.
  @param yValue the value the y axis was set to at the time the valueChangedHandler fired.
  */
-typedef void (^GCControllerDirectionPadValueChangedHandler)(GCControllerDirectionPad *dpad, float xValue, float yValue);
+typedef void (^GCControllerDirectionPadValueChangedHandler)(GCControllerDirectionPad *dpad, float xValue, float yValue) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 @property (nonatomic, copy, nullable) GCControllerDirectionPadValueChangedHandler valueChangedHandler;
 
 @property (nonatomic, readonly) GCControllerAxisInput *xAxis;
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerElement.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerElement.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerElement.h	2024-11-10 11:55:45
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerElement.h	2025-02-07 22:58:19
@@ -29,7 +29,6 @@
  @see GCControllerElement.boundToSystemGesture
  @see GCControllerElement.preferredSystemGestureState
  */
-API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
 typedef NS_ENUM(NSInteger, GCSystemGestureState) {
     /** System gesture recognizers will run before input is sent to app, this is the default state */
     GCSystemGestureStateEnabled = 0,
@@ -37,12 +36,12 @@
     GCSystemGestureStateAlwaysReceive,
     /** System gesture recognizers will not run at all. Input is passed directly to app */
     GCSystemGestureStateDisabled
-} NS_SWIFT_NAME(GCControllerElement.SystemGestureState);
+} NS_SWIFT_NAME(GCControllerElement.SystemGestureState) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /**
  Every controller element knows which collection it belongs to and whether its input value is analog or digital.
  */
-API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0))
+API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0))
 @interface GCControllerElement : NSObject
 
 /**
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerTouchpad.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerTouchpad.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerTouchpad.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCControllerTouchpad.h	2025-02-07 23:23:34
@@ -19,14 +19,14 @@
     GCTouchStateUp,
     GCTouchStateDown,
     GCTouchStateMoving
-} NS_SWIFT_NAME(GCControllerTouchpad.TouchState);
+} NS_SWIFT_NAME(GCControllerTouchpad.TouchState) API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
 
 /**
  A touchpad is a touch-based two axis input with a notion of "touch state". It keeps track of
  whether the touchpad is actively being touched, and generates events based on a
  change in touch state.
  */
-API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
+API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0))
 @interface GCControllerTouchpad : GCControllerElement
 
 /**
@@ -44,7 +44,7 @@
  @param buttonValue the value of the touch surface button at the time the handler fired.
  @param buttonPressed the pressed state of the touch surface button at the time the handler fired.
  */
-typedef void (^GCControllerTouchpadHandler)(GCControllerTouchpad *touchpad, float xValue, float yValue, float buttonValue, BOOL buttonPressed);
+typedef void (^GCControllerTouchpadHandler)(GCControllerTouchpad *touchpad, float xValue, float yValue, float buttonValue, BOOL buttonPressed) API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
 
 /**
  Called when a touch event begins on the touchpad.
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDevice.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDevice.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDevice.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDevice.h	2025-02-07 23:23:34
@@ -26,13 +26,13 @@
  @see GCControllerDirectionPad.valueChangedHandler
  @see GCMotion.valueChangedHandler
  */
-@property (nonatomic, strong) dispatch_queue_t handlerQueue API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0));
+@property (nonatomic, strong) dispatch_queue_t handlerQueue API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0));
 
 /**
  A vendor supplied name. May be nil, and is not guaranteed to be unique. This should not be used as a key in a dictionary,
  but simply as a way to present some basic information about the device in testing or to the user.
  */
-@property (nonatomic, readonly, copy, nullable) NSString *vendorName API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0));
+@property (nonatomic, readonly, copy, nullable) NSString *vendorName API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 
 /**
  The product category the device belongs to. This is useful for setting appropriate UI elements based on what type of device is connected.
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDeviceBattery.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDeviceBattery.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDeviceBattery.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDeviceBattery.h	2025-02-07 23:23:34
@@ -22,7 +22,7 @@
     GCDeviceBatteryStateDischarging,
     GCDeviceBatteryStateCharging,
     GCDeviceBatteryStateFull
-} NS_SWIFT_NAME(GCDeviceBattery.State);
+} NS_SWIFT_NAME(GCDeviceBattery.State) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /**
  A controller battery is an abstract representation of the battery level and battery status of a GCController instance.
@@ -30,6 +30,8 @@
 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
 @interface GCDeviceBattery : NSObject
 
+- (instancetype)init NS_UNAVAILABLE;
+
 /**
  This is the battery level for controller.
  Battery level ranges from 0.0 (fully discharged) to 1.0 (100% charged) and defaults to 0
@@ -42,9 +44,6 @@
  @note This property might be useful if you display the information about currently connected controller for player's convenience
  */
 @property(nonatomic, readonly) GCDeviceBatteryState batteryState;
-
-
-- (instancetype)init NS_UNAVAILABLE;
 
 @end
 
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDeviceHaptics.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDeviceHaptics.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDeviceHaptics.h	2024-11-10 09:39:49
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDeviceHaptics.h	2025-02-07 23:23:33
@@ -23,16 +23,16 @@
  @see GCDeviceHaptics
 */
 typedef NSString* GCHapticsLocality NS_TYPED_ENUM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityDefault API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); // guaranteed to be supported
-GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityAll API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); // guaranteed to be supported
-GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityHandles API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityLeftHandle API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityRightHandle API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityTriggers API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityLeftTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCHapticsLocality const GCHapticsLocalityRightTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityDefault API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); // guaranteed to be supported
+GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityAll API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)); // guaranteed to be supported
+GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityHandles API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityLeftHandle API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityRightHandle API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityTriggers API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityLeftTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCHapticsLocality const GCHapticsLocalityRightTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
-GAMECONTROLLER_EXTERN const float GCHapticDurationInfinite API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT const float GCHapticDurationInfinite API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
 @interface GCDeviceHaptics : NSObject
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInputStateDiff.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInputStateDiff.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInputStateDiff.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInputStateDiff.h	2025-02-07 23:23:34
@@ -20,7 +20,7 @@
     GCDevicePhysicalInputElementNoChange = 0,
     /** Indicates that a value of the element changed. */
     GCDevicePhysicalInputElementChanged = 1,
-};
+} API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0));
 
 
 /**
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDirectionalGamepad.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDirectionalGamepad.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDirectionalGamepad.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDirectionalGamepad.h	2025-02-07 23:23:34
@@ -16,7 +16,7 @@
  
  @note For the 2021 2nd generation Siri Remote, this represents touching anywhere on the entire touch surface - including the inner and outer rings.
 */
-GAMECONTROLLER_EXTERN NSString *const GCInputDirectionalDpad API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
+GAMECONTROLLER_EXPORT NSString *const GCInputDirectionalDpad API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
 
 /**
  The button corresponding to pressing anywhere on the primary directional input surface for the directional gamepad
@@ -25,21 +25,21 @@
  
  @note For the 2021 2nd generation Siri Remote, this represents pressing anywhere the entire touch surface - including the inner and outer rings.
 */
-GAMECONTROLLER_EXTERN NSString *const GCInputDirectionalTouchSurfaceButton API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCInputDirectionalTouchSurfaceButton API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /**
  An optional secondary directional input surface for the directional gamepad. This input is guaranteed to be an 8-way digital dpad with physical Up, Down, Left, Right butttons.
  
  @note For the 2021 2nd generation Siri Remote, this represents pressing on the outer ring of the touch surface.
 */
-GAMECONTROLLER_EXTERN NSString *const GCInputDirectionalCardinalDpad API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
+GAMECONTROLLER_EXPORT NSString *const GCInputDirectionalCardinalDpad API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
 
 /**
  An optional button for the directional gamepad. This input represents the center button of the cardinal dpad.
  
  @note For the 2021 2nd generation Siri Remote, this represents pressing anywhere on the inner ring of the touch surface.
 */
-GAMECONTROLLER_EXTERN NSString *const GCInputDirectionalCenterButton API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCInputDirectionalCenterButton API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /**
  Directional Gamepad profile.
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDualSenseAdaptiveTrigger.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDualSenseAdaptiveTrigger.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDualSenseAdaptiveTrigger.h	2024-11-10 12:49:19
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCDualSenseAdaptiveTrigger.h	2025-02-08 06:04:13
@@ -11,7 +11,7 @@
 
 enum {
     /** The number of discrete control positions supported by the DualSense adaptive triggers. Each of these positions can be configured separately in multi-position feedback and multi-position vibration modes. */
-    GCDualSenseAdaptiveTriggerDiscretePositionCount NS_SWIFT_NAME(GCDualSenseAdaptiveTrigger.discretePositionCount) = 10,
+    GCDualSenseAdaptiveTriggerDiscretePositionCount NS_SWIFT_NAME(GCDualSenseAdaptiveTrigger.discretePositionCount) API_AVAILABLE(macos(12.3), ios(15.4), tvos(15.4)) = 10,
 };
 
 typedef NS_ENUM(NSInteger, GCDualSenseAdaptiveTriggerMode) {
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCEventInteraction.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCEventInteraction.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCEventInteraction.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCEventInteraction.h	2025-02-07 23:23:34
@@ -12,7 +12,7 @@
 typedef NS_OPTIONS(NSUInteger, GCUIEventTypes) {
     GCUIEventTypeNone           = (0U),
     GCUIEventTypeGamepad        = (1U << 0),
-};
+} API_AVAILABLE(macCatalyst(18.0), ios(18.0), visionos(2.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos);
 
 /**
  *  An interaction that indicates your views's intent to receive game controller
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepad.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepad.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepad.h	2024-11-10 11:08:14
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepad.h	2025-02-07 19:37:45
@@ -23,7 +23,7 @@
  A profile maps the hardware notion of a controller into a logical controller. One that a developer can
  design for and depend on, no matter the underlying hardware.
  */
-API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0))
+API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0))
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wunguarded-availability"
 @interface GCExtendedGamepad : GCPhysicalInputProfile
@@ -32,11 +32,7 @@
 /**
  A profile keeps a reference to the controller that this profile is mapping input from.
  */
-#if !__has_feature(objc_arc)
-@property (nonatomic, readonly, assign) GCController *controller;
-#else
 @property (nonatomic, readonly, weak) GCController *controller;
-#endif
 
 /**
  Set this block if you want to be notified when a value on a element changed. If multiple elements have changed this block will be called
@@ -46,7 +42,7 @@
  @param gamepad this gamepad that is being used to map the raw input data into logical values on controller elements such as the dpad or the buttons.
  @param element the element that has been modified.
  */
-typedef void (^GCExtendedGamepadValueChangedHandler)(GCExtendedGamepad *gamepad, GCControllerElement *element);
+typedef void (^GCExtendedGamepadValueChangedHandler)(GCExtendedGamepad *gamepad, GCControllerElement *element) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 @property (nonatomic, copy, nullable) GCExtendedGamepadValueChangedHandler valueChangedHandler;
 
 /**
@@ -57,7 +53,7 @@
  If your application is heavily multithreaded this may also be useful to guarantee atomicity of input handling as
  a snapshot will not change based on user input once it is taken.
  */
-- (GCExtendedGamepadSnapshot *)saveSnapshot API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController capture] instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0));
+- (GCExtendedGamepadSnapshot *)saveSnapshot API_DEPRECATED("Use the -[GCController capture] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0));
 
 /**
  Required to be analog in the Extended profile. All the elements of this directional input are thus analog.
@@ -132,7 +128,7 @@
  @note If the controller's snapshot flag is set to NO, this method has no effect.
  @see GCController.snapshot
  */
-- (void) setStateFromExtendedGamepad:(GCExtendedGamepad *)extendedGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
+- (void)setStateFromExtendedGamepad:(GCExtendedGamepad *)extendedGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
 
 @end
 
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepadSnapshot.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepadSnapshot.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepadSnapshot.h	2024-11-10 11:51:05
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepadSnapshot.h	2025-02-07 19:25:59
@@ -20,8 +20,9 @@
 
  @see -[GCExtendedGamepad saveSnapshot]
  */
-API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0))
+API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0))
 @interface GCExtendedGamepadSnapshot : GCExtendedGamepad
+
 @property (atomic, copy) NSData *snapshotData;
 
 - (instancetype)initWithSnapshotData:(NSData *)data;
@@ -29,12 +30,13 @@
 
 @end
 
+
 typedef NS_ENUM(NSInteger, GCExtendedGamepadSnapshotDataVersion) {
     GCExtendedGamepadSnapshotDataVersion1 = 0x0100,
     GCExtendedGamepadSnapshotDataVersion2 = 0x0101
-} API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+} API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0));
 
-extern const GCExtendedGamepadSnapshotDataVersion GCCurrentExtendedGamepadSnapshotDataVersion API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+extern const GCExtendedGamepadSnapshotDataVersion GCCurrentExtendedGamepadSnapshotDataVersion API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
 
 #pragma pack(push, 1)
 typedef struct {
@@ -74,21 +76,21 @@
     BOOL leftThumbstickButton API_AVAILABLE(macos(10.14.1), ios(12.1), tvos(12.1));
     BOOL rightThumbstickButton API_AVAILABLE(macos(10.14.1), ios(12.1), tvos(12.1));
     
-} GCExtendedGamepadSnapshotData API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+} GCExtendedGamepadSnapshotData API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0));
 #pragma pack(pop)
 
 /**Fills out a snapshot from any compatible NSData source
  
  @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases.
  */
-BOOL GCExtendedGamepadSnapshotDataFromNSData(GCExtendedGamepadSnapshotData *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+BOOL GCExtendedGamepadSnapshotDataFromNSData(GCExtendedGamepadSnapshotData * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0));
 
 /**Creates an NSData object from a snapshot.
  If the version and size is not set in the snapshot the data will automatically have the version GCCurrentExtendedGamepadSnapshotDataVersion and sizeof(GCExtendedGamepadSnapshotData) set as the values implicitly.
  
  @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCExtendedGamepadSnapshot.snapshotData
  */
-NSData *__nullable NSDataFromGCExtendedGamepadSnapshotData(GCExtendedGamepadSnapshotData *__nullable snapshotData) API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+NSData * _Nullable NSDataFromGCExtendedGamepadSnapshotData(GCExtendedGamepadSnapshotData * _Nullable snapshotData) API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0));
 
 
 #pragma mark - Deprecated Versioning System
@@ -122,19 +124,20 @@
     float leftTrigger;
     float rightTrigger;
     
-} GCExtendedGamepadSnapShotDataV100 API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+} GCExtendedGamepadSnapShotDataV100 API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0));
 #pragma pack(pop)
 
 /**Fills out a v100 snapshot from any compatible NSData source
  
  @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases.
  */
-BOOL GCExtendedGamepadSnapShotDataV100FromNSData(GCExtendedGamepadSnapShotDataV100 *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+BOOL GCExtendedGamepadSnapShotDataV100FromNSData(GCExtendedGamepadSnapShotDataV100 * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0));
 
 /**Creates an NSData object from a v100 snapshot.
  If the version and size is not set in the snapshot the data will automatically have version 0x100 and sizeof(GCExtendedGamepadSnapShotDataV100) set as the values implicitly.
  
  @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCExtendedGamepadSnapshot.snapshotData
  */
-NSData *__nullable NSDataFromGCExtendedGamepadSnapShotDataV100(GCExtendedGamepadSnapShotDataV100 *__nullable snapshotData) API_DEPRECATED("GCExtendedGamepadSnapshot has been deprecated, use [GCController controllerWithExtendedGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+NSData * _Nullable NSDataFromGCExtendedGamepadSnapShotDataV100(GCExtendedGamepadSnapShotDataV100 * _Nullable snapshotData) API_DEPRECATED("Use the -[GCController controllerWithExtendedGamepad] method instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0));
+
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtern.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtern.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtern.h	2024-11-10 09:39:47
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCExtern.h	2025-02-07 23:23:32
@@ -5,10 +5,17 @@
 //  Copyright (c) 2017 Apple Inc. All rights reserved.
 //
 
-#ifdef __cplusplus
-#define GAMECONTROLLER_EXTERN		extern "C" __attribute__((visibility ("default")))
-#else
-#define GAMECONTROLLER_EXTERN	        extern __attribute__((visibility ("default")))
+#if !defined(GAMECONTROLLER_EXTERN)
+#   if defined(__cplusplus)
+#       define GAMECONTROLLER_EXTERN extern "C"
+#   else
+#       define GAMECONTROLLER_EXTERN extern
+#   endif
 #endif
+
+#if !defined(GAMECONTROLLER_EXPORT)
+#   define GAMECONTROLLER_EXPORT __attribute__((visibility("default"))) GAMECONTROLLER_EXTERN
+#endif
+
 
 
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGameControllerSceneDelegate.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGameControllerSceneDelegate.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGameControllerSceneDelegate.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGameControllerSceneDelegate.h	2025-02-07 23:23:34
@@ -11,7 +11,7 @@
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
-GAMECONTROLLER_EXTERN
+GAMECONTROLLER_EXPORT
 API_AVAILABLE(ios(18.0))
 API_UNAVAILABLE(macCatalyst, tvos, visionos)
 API_UNAVAILABLE(macos)
@@ -31,7 +31,7 @@
 @end
 
 
-GAMECONTROLLER_EXTERN
+GAMECONTROLLER_EXPORT
 API_AVAILABLE(ios(18.0))
 API_UNAVAILABLE(macCatalyst, tvos, visionos)
 API_UNAVAILABLE(macos)
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGamepad.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGamepad.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGamepad.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGamepad.h	2025-02-07 23:23:34
@@ -21,7 +21,7 @@
  and depend on, no matter the underlying hardware.
  */
 
-API_DEPRECATED_WITH_REPLACEMENT("GCExtendedGamepad", macos(10.9, 10.12), ios(7.0, 10.0), tvos(7.0, 10.0))
+API_DEPRECATED_WITH_REPLACEMENT("GCExtendedGamepad", macos(10.9, 10.12), ios(7.0, 10.0), tvos(9.0, 10.0))
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wunguarded-availability"
 @interface GCGamepad : GCPhysicalInputProfile
@@ -30,11 +30,7 @@
 /**
  A profile keeps a reference to the controller that this profile is mapping input from.
  */
-#if !__has_feature(objc_arc)
-@property (nonatomic, readonly, assign) GCController *controller;
-#else
 @property (nonatomic, readonly, weak) GCController *controller;
-#endif
 
 /**
  Set this block if you want to be notified when a value on a element changed. If multiple elements have changed this block will be called
@@ -44,8 +40,7 @@
  @param gamepad this gamepad that is being used to map the raw input data into logical values on controller elements such as the dpad or the buttons.
  @param element the element that has been modified.
  */
-API_DEPRECATED("GCGamepad has been deprecated", macos(10.9, 10.12), ios(7.0, 10.0), tvos(7.0, 10.0))
-typedef void (^GCGamepadValueChangedHandler)(GCGamepad *gamepad, GCControllerElement *element);
+typedef void (^GCGamepadValueChangedHandler)(GCGamepad *gamepad, GCControllerElement *element) API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0));
 @property (nonatomic, copy, nullable) GCGamepadValueChangedHandler valueChangedHandler;
 
 /**
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGamepadSnapshot.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGamepadSnapshot.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGamepadSnapshot.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCGamepadSnapshot.h	2025-02-07 23:23:34
@@ -21,7 +21,7 @@
  
  @see -[GCGamepad saveSnapshot]
  */
-API_DEPRECATED("GCGamepad has been deprecated, use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0))
+API_DEPRECATED("Use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0))
 @interface GCGamepadSnapshot : GCGamepad
 @property (atomic, copy) NSData *snapshotData;
 
@@ -49,20 +49,20 @@
     float leftShoulder;
     float rightShoulder;
     
-} GCGamepadSnapShotDataV100 API_DEPRECATED("GCGamepad has been deprecated, use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0));
+} GCGamepadSnapShotDataV100 API_DEPRECATED("Use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0));
 #pragma pack(pop)
 
 /**Fills out a v100 snapshot from any compatible NSData source
  
  @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases.
  */
-BOOL GCGamepadSnapShotDataV100FromNSData(GCGamepadSnapShotDataV100 *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCGamepad has been deprecated, use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0));
+BOOL GCGamepadSnapShotDataV100FromNSData(GCGamepadSnapShotDataV100 * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0));
 
 /**Creates an NSData object from a v100 snapshot.
  If the version and size is not set in the snapshot the data will automatically have version 0x100 and sizeof(GCGamepadSnapShotDataV100) set as the values implicitly.
  
  @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCGamepadSnapshot.snapshotData
  */
-NSData *__nullable NSDataFromGCGamepadSnapShotDataV100(GCGamepadSnapShotDataV100 *__nullable snapshotData) API_DEPRECATED("GCGamepad has been deprecated, use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0));
+NSData * _Nullable NSDataFromGCGamepadSnapShotDataV100(GCGamepadSnapShotDataV100 * _Nullable snapshotData) API_DEPRECATED("Use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(9.0, 13.0));
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCInputNames.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCInputNames.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCInputNames.h	2024-11-10 09:39:49
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCInputNames.h	2025-02-07 22:58:18
@@ -8,22 +8,27 @@
 #import <Foundation/Foundation.h>
 #import <GameController/GCExtern.h>
 
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
 __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT
 @protocol GCPhysicalInputElementName
 @end
 
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
 __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT
 @protocol GCButtonElementName <GCPhysicalInputElementName>
 @end
 
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
 __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT
 @protocol GCAxisElementName <GCPhysicalInputElementName>
 @end
 
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
 __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT
 @protocol GCSwitchElementName <GCPhysicalInputElementName>
 @end
 
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
 __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT
 @protocol GCDirectionPadElementName <GCPhysicalInputElementName>
 @end
@@ -45,34 +50,34 @@
 @see GCPhysicalInputProfile.h
 */
 
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(a);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(b);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(x);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(y);
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(a);
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(b);
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(x);
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(y);
 
-GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputDirectionPad API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(directionPad);
-GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputLeftThumbstick API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputRightThumbstick API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputDirectionPad API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) NS_SWIFT_NAME(directionPad);
+GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputLeftThumbstick API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputRightThumbstick API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftThumbstickButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightThumbstickButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftThumbstickButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightThumbstickButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /*
  * Shoulder Buttons
  */
 
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftShoulder API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightShoulder API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftShoulder API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightShoulder API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /**
  *  Identifies the button element located at the top-left/right of a gamepad,
  *  between the left/right shoulder button and the gamepad's horizontal center.
  */
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftBumper API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightBumper API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftBumper API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightBumper API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1));
 
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightTrigger API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /*
  * Back Buttons
@@ -101,13 +106,13 @@
  */
 
 /* Note: The `position` argument begins at index 0. */
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputBackLeftButton(NSInteger position) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputBackRightButton(NSInteger position) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputBackLeftButton(NSInteger position) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputBackRightButton(NSInteger position) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), visionos(1.1));
 
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonMenu API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonOptions API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonShare API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonMenu API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonOptions API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputButtonShare API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /**
 A set of strings commonly used to access Xbox buttons
@@ -117,10 +122,10 @@
 @see GCController.h
 @see GCPhysicalInputProfile.h
 */
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputXboxPaddleOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputXboxPaddleTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputXboxPaddleThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputXboxPaddleFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /**
 A set of strings commonly used to access DualShock buttons
@@ -130,20 +135,20 @@
 @see GCController.h
 @see GCPhysicalInputProfile.h
 */
-GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputDualShockTouchpadOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputDualShockTouchpadTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputDualShockTouchpadButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputDualShockTouchpadOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputDirectionPadName GCInputDualShockTouchpadTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputDualShockTouchpadButton API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /**
 A set of strings commonly used by racing wheels.
 */
-GAMECONTROLLER_EXTERN GCInputAxisName GCInputSteeringWheel API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputElementName GCInputShifter API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputPedalAccelerator API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputPedalBrake API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputPedalClutch API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftPaddle API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightPaddle API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+GAMECONTROLLER_EXPORT GCInputAxisName GCInputSteeringWheel API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+GAMECONTROLLER_EXPORT GCInputElementName GCInputShifter API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputPedalAccelerator API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputPedalBrake API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputPedalClutch API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputLeftPaddle API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputRightPaddle API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
 
 /// Gets the name of an arcade button at a certain position.
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputArcadeButtonName(NSInteger row, NSInteger column) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0));
+GAMECONTROLLER_EXPORT GCInputButtonName GCInputArcadeButtonName(NSInteger row, NSInteger column) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0));
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyCodes.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyCodes.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyCodes.h	2024-11-10 12:49:18
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyCodes.h	2025-02-08 06:04:12
@@ -5,8 +5,8 @@
 //  Copyright © 2020 Apple Inc. All rights reserved.
 //
 
-#import <GameController/GCExtern.h>
 #import <Foundation/Foundation.h>
+#import <GameController/GCExtern.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -20,161 +20,161 @@
 
 typedef CFIndex GCKeyCode NS_TYPED_ENUM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* a or A */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* b or B */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyC API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* c or C */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyD API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* d or D */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyE API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* e or E */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyF API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* f or F */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyG API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* g or G */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyH API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* h or H */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* i or I */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyJ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* j or J */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyK API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* k or K */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyL API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* l or L */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* m or M */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyN API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* n or N */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyO API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* o or O */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyP API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* p or P */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyQ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* q or Q */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyR API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* r or R */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyS API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* s or S */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* t or T */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyU API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* u or U */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyV API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* v or V */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyW API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* w or W */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* x or X */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* y or Y */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeyZ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* z or Z */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 1 or ! */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 2 or @ */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 3 or # */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 4 or $ */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeFive API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 5 or % */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSix API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 6 or ^ */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSeven API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 7 or & */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeEight API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 8 or * */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeNine API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 9 or ( */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeZero API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 0 or ) */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeReturnOrEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Return (Enter) */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeEscape API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Escape */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeDeleteOrBackspace API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));           /* Delete (Backspace) */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeTab API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* Tab */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSpacebar API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Spacebar */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* - or _ */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* = or + */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeOpenBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* [ or { */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeCloseBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* ] or } */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* \ or | */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeNonUSPound API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Non-US # or _ */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSemicolon API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* ; or : */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeQuote API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* ' or " */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeGraveAccentAndTilde API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));         /* Grave Accent and Tilde */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeComma API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* , or < */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* . or > */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* / or ? */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeCapsLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Caps Lock */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* a or A */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* b or B */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyC API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* c or C */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyD API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* d or D */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyE API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* e or E */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyF API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* f or F */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyG API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* g or G */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyH API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* h or H */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* i or I */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyJ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* j or J */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyK API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* k or K */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyL API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* l or L */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* m or M */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyN API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* n or N */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyO API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* o or O */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyP API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* p or P */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyQ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* q or Q */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyR API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* r or R */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyS API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* s or S */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* t or T */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyU API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* u or U */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyV API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* v or V */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyW API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* w or W */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* x or X */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* y or Y */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeyZ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* z or Z */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 1 or ! */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 2 or @ */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 3 or # */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 4 or $ */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeFive API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 5 or % */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSix API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 6 or ^ */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSeven API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 7 or & */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeEight API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 8 or * */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeNine API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 9 or ( */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeZero API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 0 or ) */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeReturnOrEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Return (Enter) */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeEscape API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Escape */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeDeleteOrBackspace API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));           /* Delete (Backspace) */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeTab API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* Tab */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSpacebar API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Spacebar */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* - or _ */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* = or + */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeOpenBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* [ or { */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeCloseBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* ] or } */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* \ or | */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeNonUSPound API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Non-US # or _ */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSemicolon API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* ; or : */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeQuote API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* ' or " */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeGraveAccentAndTilde API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));         /* Grave Accent and Tilde */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeComma API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* , or < */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* . or > */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* / or ? */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeCapsLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Caps Lock */
 
 /* Function keys */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F1 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F2 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F3 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F4 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F5 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F6 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F7 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F8 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F9 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF10 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F10 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF11 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F11 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF12 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F12 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF13 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F13 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF14 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F14 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF15 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F15 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF16 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F16 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF17 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F17 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF18 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F18 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF19 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F19 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeF20 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F20 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F1 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F2 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F3 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F4 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F5 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F6 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F7 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F8 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F9 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF10 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F10 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF11 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F11 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF12 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F12 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF13 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F13 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF14 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F14 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF15 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F15 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF16 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F16 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF17 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F17 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF18 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F18 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF19 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F19 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeF20 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F20 */
 
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePrintScreen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Print Screen */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeScrollLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Scroll Lock */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePause API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* Pause */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInsert API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Insert */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* Home */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePageUp API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Page Up */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeDeleteForward API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Delete Forward */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeEnd API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* End */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePageDown API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Page Down */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Right Arrow */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Left Arrow */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeDownArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Down Arrow */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeUpArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Up Arrow */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePrintScreen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Print Screen */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeScrollLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Scroll Lock */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePause API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* Pause */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInsert API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Insert */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* Home */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePageUp API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Page Up */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeDeleteForward API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Delete Forward */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeEnd API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* End */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePageDown API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Page Down */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Right Arrow */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Left Arrow */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeDownArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Down Arrow */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeUpArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Up Arrow */
 
 /* Keypad (numpad) keys */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadNumLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Keypad NumLock or Clear */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Keypad / */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadAsterisk API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* Keypad * */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Keypad - */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadPlus API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Keypad + */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Keypad Enter */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 1 or End */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 2 or Down Arrow */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 3 or Page Down */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 4 or Left Arrow */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 5 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 6 or Right Arrow */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 7 or Home */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 8 or Up Arrow */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 9 or Page Up */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypad0 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 0 or Insert */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Keypad . or Delete */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeKeypadEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));             /* Keypad = */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeNonUSBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* Non-US \ or | */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadNumLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Keypad NumLock or Clear */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Keypad / */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadAsterisk API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* Keypad * */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Keypad - */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadPlus API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Keypad + */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Keypad Enter */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 1 or End */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 2 or Down Arrow */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 3 or Page Down */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 4 or Left Arrow */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 5 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 6 or Right Arrow */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 7 or Home */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 8 or Up Arrow */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 9 or Page Up */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypad0 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 0 or Insert */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Keypad . or Delete */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeKeypadEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));             /* Keypad = */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeNonUSBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* Non-US \ or | */
 
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeApplication API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Application */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodePower API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* Power */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeApplication API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Application */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodePower API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* Power */
 
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International1 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International2 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International3 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International4 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International5 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International6 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International7 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International8 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeInternational9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International9 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International1 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International2 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International3 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International4 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International5 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International6 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International7 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International8 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeInternational9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International9 */
 
 /* LANG1: On Apple keyboard for Japanese, this is the kana switch (かな) key */
 /* On Korean keyboards, this is the Hangul/English toggle key. */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG1 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG1 */
 
 /* LANG2: On Apple keyboards for Japanese, this is the alphanumeric (英数) key */
 /* On Korean keyboards, this is the Hanja conversion key. */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG2 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG2 */
 
 /* LANG3: Defines the Katakana key for Japanese USB word-processing keyboards. */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG3 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG3 */
 
 /* LANG4: Defines the Hiragana key for Japanese USB word-processing keyboards. */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG4 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG4 */
 
 /* LANG5: Defines the Zenkaku/Hankaku key for Japanese USB word-processing keyboards. */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG5 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG5 */
 
 /* LANG6-9: Reserved for language-specific functions, such as Front End Processors and Input Method Editors. */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG6 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG7 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG8 */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLANG9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG9 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG6 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG7 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG8 */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLANG9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG9 */
 
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Left Control */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Left Shift */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Left Alt */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeLeftGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Left GUI */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Right Control */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Right Shift */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Right Alt */
-GAMECONTROLLER_EXTERN GCKeyCode const GCKeyCodeRightGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Right GUI */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Left Control */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Left Shift */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Left Alt */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeLeftGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Left GUI */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Right Control */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Right Shift */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Right Alt */
+GAMECONTROLLER_EXPORT GCKeyCode const GCKeyCodeRightGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Right GUI */
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyNames.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyNames.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyNames.h	2024-11-10 09:39:51
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyNames.h	2025-02-07 22:58:19
@@ -4,8 +4,9 @@
 //
 //  Copyright © 2020 Apple Inc. All rights reserved.
 //
-#import <GameController/GCExtern.h>
+
 #import <Foundation/Foundation.h>
+#import <GameController/GCExtern.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -18,160 +19,160 @@
 @see GCPhysicalInputProfile.h
 */
 
-GAMECONTROLLER_EXTERN NSString *const GCKeyA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* a or A */
-GAMECONTROLLER_EXTERN NSString *const GCKeyB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* b or B */
-GAMECONTROLLER_EXTERN NSString *const GCKeyC API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* c or C */
-GAMECONTROLLER_EXTERN NSString *const GCKeyD API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* d or D */
-GAMECONTROLLER_EXTERN NSString *const GCKeyE API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* e or E */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* f or F */
-GAMECONTROLLER_EXTERN NSString *const GCKeyG API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* g or G */
-GAMECONTROLLER_EXTERN NSString *const GCKeyH API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* h or H */
-GAMECONTROLLER_EXTERN NSString *const GCKeyI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* i or I */
-GAMECONTROLLER_EXTERN NSString *const GCKeyJ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* j or J */
-GAMECONTROLLER_EXTERN NSString *const GCKeyK API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* k or K */
-GAMECONTROLLER_EXTERN NSString *const GCKeyL API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* l or L */
-GAMECONTROLLER_EXTERN NSString *const GCKeyM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* m or M */
-GAMECONTROLLER_EXTERN NSString *const GCKeyN API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* n or N */
-GAMECONTROLLER_EXTERN NSString *const GCKeyO API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* o or O */
-GAMECONTROLLER_EXTERN NSString *const GCKeyP API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* p or P */
-GAMECONTROLLER_EXTERN NSString *const GCKeyQ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* q or Q */
-GAMECONTROLLER_EXTERN NSString *const GCKeyR API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* r or R */
-GAMECONTROLLER_EXTERN NSString *const GCKeyS API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* s or S */
-GAMECONTROLLER_EXTERN NSString *const GCKeyT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* t or T */
-GAMECONTROLLER_EXTERN NSString *const GCKeyU API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* u or U */
-GAMECONTROLLER_EXTERN NSString *const GCKeyV API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* v or V */
-GAMECONTROLLER_EXTERN NSString *const GCKeyW API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* w or W */
-GAMECONTROLLER_EXTERN NSString *const GCKeyX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* x or X */
-GAMECONTROLLER_EXTERN NSString *const GCKeyY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* y or Y */
-GAMECONTROLLER_EXTERN NSString *const GCKeyZ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* z or Z */
-GAMECONTROLLER_EXTERN NSString *const GCKeyOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 1 or ! */
-GAMECONTROLLER_EXTERN NSString *const GCKeyTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 2 or @ */
-GAMECONTROLLER_EXTERN NSString *const GCKeyThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 3 or # */
-GAMECONTROLLER_EXTERN NSString *const GCKeyFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 4 or $ */
-GAMECONTROLLER_EXTERN NSString *const GCKeyFive API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 5 or % */
-GAMECONTROLLER_EXTERN NSString *const GCKeySix API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 6 or ^ */
-GAMECONTROLLER_EXTERN NSString *const GCKeySeven API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 7 or & */
-GAMECONTROLLER_EXTERN NSString *const GCKeyEight API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 8 or * */
-GAMECONTROLLER_EXTERN NSString *const GCKeyNine API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 9 or ( */
-GAMECONTROLLER_EXTERN NSString *const GCKeyZero API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 0 or ) */
-GAMECONTROLLER_EXTERN NSString *const GCKeyReturnOrEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Return (Enter) */
-GAMECONTROLLER_EXTERN NSString *const GCKeyEscape API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Escape */
-GAMECONTROLLER_EXTERN NSString *const GCKeyDeleteOrBackspace API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));           /* Delete (Backspace) */
-GAMECONTROLLER_EXTERN NSString *const GCKeyTab API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* Tab */
-GAMECONTROLLER_EXTERN NSString *const GCKeySpacebar API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Spacebar */
-GAMECONTROLLER_EXTERN NSString *const GCKeyHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* - or _ */
-GAMECONTROLLER_EXTERN NSString *const GCKeyEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* = or + */
-GAMECONTROLLER_EXTERN NSString *const GCKeyOpenBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* [ or { */
-GAMECONTROLLER_EXTERN NSString *const GCKeyCloseBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* ] or } */
-GAMECONTROLLER_EXTERN NSString *const GCKeyBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* \ or | */
-GAMECONTROLLER_EXTERN NSString *const GCKeyNonUSPound API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Non-US # or _ */
-GAMECONTROLLER_EXTERN NSString *const GCKeySemicolon API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* ; or : */
-GAMECONTROLLER_EXTERN NSString *const GCKeyQuote API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* ' or " */
-GAMECONTROLLER_EXTERN NSString *const GCKeyGraveAccentAndTilde API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));         /* Grave Accent and Tilde */
-GAMECONTROLLER_EXTERN NSString *const GCKeyComma API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* , or < */
-GAMECONTROLLER_EXTERN NSString *const GCKeyPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* . or > */
-GAMECONTROLLER_EXTERN NSString *const GCKeySlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* / or ? */
-GAMECONTROLLER_EXTERN NSString *const GCKeyCapsLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Caps Lock */
+GAMECONTROLLER_EXPORT NSString *const GCKeyA API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* a or A */
+GAMECONTROLLER_EXPORT NSString *const GCKeyB API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* b or B */
+GAMECONTROLLER_EXPORT NSString *const GCKeyC API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* c or C */
+GAMECONTROLLER_EXPORT NSString *const GCKeyD API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* d or D */
+GAMECONTROLLER_EXPORT NSString *const GCKeyE API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* e or E */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* f or F */
+GAMECONTROLLER_EXPORT NSString *const GCKeyG API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* g or G */
+GAMECONTROLLER_EXPORT NSString *const GCKeyH API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* h or H */
+GAMECONTROLLER_EXPORT NSString *const GCKeyI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* i or I */
+GAMECONTROLLER_EXPORT NSString *const GCKeyJ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* j or J */
+GAMECONTROLLER_EXPORT NSString *const GCKeyK API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* k or K */
+GAMECONTROLLER_EXPORT NSString *const GCKeyL API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* l or L */
+GAMECONTROLLER_EXPORT NSString *const GCKeyM API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* m or M */
+GAMECONTROLLER_EXPORT NSString *const GCKeyN API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* n or N */
+GAMECONTROLLER_EXPORT NSString *const GCKeyO API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* o or O */
+GAMECONTROLLER_EXPORT NSString *const GCKeyP API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* p or P */
+GAMECONTROLLER_EXPORT NSString *const GCKeyQ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* q or Q */
+GAMECONTROLLER_EXPORT NSString *const GCKeyR API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* r or R */
+GAMECONTROLLER_EXPORT NSString *const GCKeyS API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* s or S */
+GAMECONTROLLER_EXPORT NSString *const GCKeyT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* t or T */
+GAMECONTROLLER_EXPORT NSString *const GCKeyU API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* u or U */
+GAMECONTROLLER_EXPORT NSString *const GCKeyV API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* v or V */
+GAMECONTROLLER_EXPORT NSString *const GCKeyW API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* w or W */
+GAMECONTROLLER_EXPORT NSString *const GCKeyX API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* x or X */
+GAMECONTROLLER_EXPORT NSString *const GCKeyY API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* y or Y */
+GAMECONTROLLER_EXPORT NSString *const GCKeyZ API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                           /* z or Z */
+GAMECONTROLLER_EXPORT NSString *const GCKeyOne API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 1 or ! */
+GAMECONTROLLER_EXPORT NSString *const GCKeyTwo API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 2 or @ */
+GAMECONTROLLER_EXPORT NSString *const GCKeyThree API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 3 or # */
+GAMECONTROLLER_EXPORT NSString *const GCKeyFour API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 4 or $ */
+GAMECONTROLLER_EXPORT NSString *const GCKeyFive API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 5 or % */
+GAMECONTROLLER_EXPORT NSString *const GCKeySix API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* 6 or ^ */
+GAMECONTROLLER_EXPORT NSString *const GCKeySeven API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 7 or & */
+GAMECONTROLLER_EXPORT NSString *const GCKeyEight API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* 8 or * */
+GAMECONTROLLER_EXPORT NSString *const GCKeyNine API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 9 or ( */
+GAMECONTROLLER_EXPORT NSString *const GCKeyZero API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* 0 or ) */
+GAMECONTROLLER_EXPORT NSString *const GCKeyReturnOrEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Return (Enter) */
+GAMECONTROLLER_EXPORT NSString *const GCKeyEscape API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Escape */
+GAMECONTROLLER_EXPORT NSString *const GCKeyDeleteOrBackspace API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));           /* Delete (Backspace) */
+GAMECONTROLLER_EXPORT NSString *const GCKeyTab API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* Tab */
+GAMECONTROLLER_EXPORT NSString *const GCKeySpacebar API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Spacebar */
+GAMECONTROLLER_EXPORT NSString *const GCKeyHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* - or _ */
+GAMECONTROLLER_EXPORT NSString *const GCKeyEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* = or + */
+GAMECONTROLLER_EXPORT NSString *const GCKeyOpenBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* [ or { */
+GAMECONTROLLER_EXPORT NSString *const GCKeyCloseBracket API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* ] or } */
+GAMECONTROLLER_EXPORT NSString *const GCKeyBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* \ or | */
+GAMECONTROLLER_EXPORT NSString *const GCKeyNonUSPound API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Non-US # or _ */
+GAMECONTROLLER_EXPORT NSString *const GCKeySemicolon API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* ; or : */
+GAMECONTROLLER_EXPORT NSString *const GCKeyQuote API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* ' or " */
+GAMECONTROLLER_EXPORT NSString *const GCKeyGraveAccentAndTilde API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));         /* Grave Accent and Tilde */
+GAMECONTROLLER_EXPORT NSString *const GCKeyComma API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* , or < */
+GAMECONTROLLER_EXPORT NSString *const GCKeyPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* . or > */
+GAMECONTROLLER_EXPORT NSString *const GCKeySlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* / or ? */
+GAMECONTROLLER_EXPORT NSString *const GCKeyCapsLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Caps Lock */
 
 /* Function keys */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F1 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F2 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F3 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F4 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F5 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F6 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F7 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F8 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F9 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF10 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F10 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF11 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F11 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF12 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F12 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF13 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F13 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF14 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F14 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF15 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F15 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF16 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F16 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF17 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F17 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF18 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F18 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF19 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F19 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyF20 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F20 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyPrintScreen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Print Screen */
-GAMECONTROLLER_EXTERN NSString *const GCKeyScrollLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Scroll Lock */
-GAMECONTROLLER_EXTERN NSString *const GCKeyPause API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* Pause */
-GAMECONTROLLER_EXTERN NSString *const GCKeyInsert API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Insert */
-GAMECONTROLLER_EXTERN NSString *const GCKeyHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* Home */
-GAMECONTROLLER_EXTERN NSString *const GCKeyPageUp API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Page Up */
-GAMECONTROLLER_EXTERN NSString *const GCKeyDeleteForward API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Delete Forward */
-GAMECONTROLLER_EXTERN NSString *const GCKeyEnd API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* End */
-GAMECONTROLLER_EXTERN NSString *const GCKeyPageDown API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Page Down */
-GAMECONTROLLER_EXTERN NSString *const GCKeyRightArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Right Arrow */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLeftArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Left Arrow */
-GAMECONTROLLER_EXTERN NSString *const GCKeyDownArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Down Arrow */
-GAMECONTROLLER_EXTERN NSString *const GCKeyUpArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Up Arrow */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F1 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F2 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F3 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F4 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F5 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F6 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F7 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F8 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                          /* F9 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF10 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F10 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF11 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F11 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF12 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* F12 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF13 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F13 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF14 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F14 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF15 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F15 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF16 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F16 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF17 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F17 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF18 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F18 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF19 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F19 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyF20 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));                         /* F20 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyPrintScreen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Print Screen */
+GAMECONTROLLER_EXPORT NSString *const GCKeyScrollLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Scroll Lock */
+GAMECONTROLLER_EXPORT NSString *const GCKeyPause API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* Pause */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInsert API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Insert */
+GAMECONTROLLER_EXPORT NSString *const GCKeyHome API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                        /* Home */
+GAMECONTROLLER_EXPORT NSString *const GCKeyPageUp API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                      /* Page Up */
+GAMECONTROLLER_EXPORT NSString *const GCKeyDeleteForward API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Delete Forward */
+GAMECONTROLLER_EXPORT NSString *const GCKeyEnd API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                         /* End */
+GAMECONTROLLER_EXPORT NSString *const GCKeyPageDown API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Page Down */
+GAMECONTROLLER_EXPORT NSString *const GCKeyRightArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Right Arrow */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLeftArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Left Arrow */
+GAMECONTROLLER_EXPORT NSString *const GCKeyDownArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Down Arrow */
+GAMECONTROLLER_EXPORT NSString *const GCKeyUpArrow API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Up Arrow */
 
 /* Keypad (numpad) keys */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadNumLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Keypad NumLock or Clear */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Keypad / */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadAsterisk API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* Keypad * */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Keypad - */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadPlus API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Keypad + */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Keypad Enter */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 1 or End */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 2 or Down Arrow */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 3 or Page Down */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 4 or Left Arrow */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 5 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 6 or Right Arrow */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 7 or Home */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 8 or Up Arrow */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 9 or Page Up */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypad0 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 0 or Insert */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Keypad . or Delete */
-GAMECONTROLLER_EXTERN NSString *const GCKeyKeypadEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));             /* Keypad = */
-GAMECONTROLLER_EXTERN NSString *const GCKeyNonUSBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* Non-US \ or | */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadNumLock API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));               /* Keypad NumLock or Clear */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadSlash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Keypad / */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadAsterisk API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* Keypad * */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadHyphen API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Keypad - */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadPlus API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Keypad + */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadEnter API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Keypad Enter */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 1 or End */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 2 or Down Arrow */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 3 or Page Down */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 4 or Left Arrow */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 5 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 6 or Right Arrow */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 7 or Home */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 8 or Up Arrow */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 9 or Page Up */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypad0 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Keypad 0 or Insert */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadPeriod API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Keypad . or Delete */
+GAMECONTROLLER_EXPORT NSString *const GCKeyKeypadEqualSign API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));             /* Keypad = */
+GAMECONTROLLER_EXPORT NSString *const GCKeyNonUSBackslash API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* Non-US \ or | */
 
-GAMECONTROLLER_EXTERN NSString *const GCKeyApplication API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Application */
-GAMECONTROLLER_EXTERN NSString *const GCKeyPower API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* Power */
+GAMECONTROLLER_EXPORT NSString *const GCKeyApplication API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Application */
+GAMECONTROLLER_EXPORT NSString *const GCKeyPower API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* Power */
 
-GAMECONTROLLER_EXTERN NSString *const GCKeyInternational1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International1 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyInternational2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International2 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyInternational3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International3 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyInternational4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International4 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyInternational5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International5 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyInternational6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International6 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyInternational7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International7 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyInternational8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International8 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyInternational9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International9 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInternational1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International1 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInternational2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International2 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInternational3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International3 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInternational4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International4 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInternational5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International5 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInternational6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International6 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInternational7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International7 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInternational8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International8 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyInternational9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));              /* International9 */
 
 /* LANG1: On Apple keyboard for Japanese, this is the kana switch (かな) key */
 /* On Korean keyboards, this is the Hangul/English toggle key. */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLANG1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG1 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLANG1 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG1 */
 
 /* LANG2: On Apple keyboards for Japanese, this is the alphanumeric (英数) key */
 /* On Korean keyboards, this is the Hanja conversion key. */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLANG2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG2 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLANG2 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG2 */
 
 /* LANG3: Defines the Katakana key for Japanese USB word-processing keyboards. */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLANG3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG3 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLANG3 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG3 */
 
 /* LANG4: Defines the Hiragana key for Japanese USB word-processing keyboards. */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLANG4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG4 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLANG4 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG4 */
 
 /* LANG5: Defines the Zenkaku/Hankaku key for Japanese USB word-processing keyboards. */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLANG5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG5 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLANG5 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG5 */
 
 /* LANG6-9: Reserved for language-specific functions, such as Front End Processors and Input Method Editors. */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLANG6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG6 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLANG7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG7 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLANG8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG8 */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLANG9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG9 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLANG6 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG6 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLANG7 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG7 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLANG8 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG8 */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLANG9 API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                       /* LANG9 */
 
-GAMECONTROLLER_EXTERN NSString *const GCKeyLeftControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Left Control */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLeftShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Left Shift */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLeftAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Left Alt */
-GAMECONTROLLER_EXTERN NSString *const GCKeyLeftGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Left GUI */
-GAMECONTROLLER_EXTERN NSString *const GCKeyRightControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Right Control */
-GAMECONTROLLER_EXTERN NSString *const GCKeyRightShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Right Shift */
-GAMECONTROLLER_EXTERN NSString *const GCKeyRightAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Right Alt */
-GAMECONTROLLER_EXTERN NSString *const GCKeyRightGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Right GUI */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLeftControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                 /* Left Control */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLeftShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                   /* Left Shift */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLeftAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Left Alt */
+GAMECONTROLLER_EXPORT NSString *const GCKeyLeftGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                     /* Left GUI */
+GAMECONTROLLER_EXPORT NSString *const GCKeyRightControl API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                /* Right Control */
+GAMECONTROLLER_EXPORT NSString *const GCKeyRightShift API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                  /* Right Shift */
+GAMECONTROLLER_EXPORT NSString *const GCKeyRightAlt API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Right Alt */
+GAMECONTROLLER_EXPORT NSString *const GCKeyRightGUI API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));                    /* Right GUI */
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyboard.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyboard.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyboard.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyboard.h	2025-02-07 23:23:34
@@ -26,8 +26,8 @@
  @see NSNotificationCetner
  @note All connected keyboards are coalesced into one keyboard object, so notification about connection/disconnection will only be delivered once until last keyboard disconnects.
  */
-GAMECONTROLLER_EXTERN NSString *const GCKeyboardDidConnectNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN NSString *const GCKeyboardDidDisconnectNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT NSString *const GCKeyboardDidConnectNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+GAMECONTROLLER_EXPORT NSString *const GCKeyboardDidDisconnectNotification API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /**
  GCKeyboard is available to an application that links to GameController.framework
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyboardInput.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyboardInput.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyboardInput.h	2024-11-10 09:39:49
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCKeyboardInput.h	2025-02-07 23:23:33
@@ -27,7 +27,7 @@
  @param key the key that has been modified
  @param pressed the state of the key at the moment of block calling
  */
-typedef void (^GCKeyboardValueChangedHandler)(GCKeyboardInput *keyboard, GCDeviceButtonInput *key, GCKeyCode keyCode, BOOL pressed);
+typedef void (^GCKeyboardValueChangedHandler)(GCKeyboardInput *keyboard, GCDeviceButtonInput *key, GCKeyCode keyCode, BOOL pressed) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 @property (nonatomic, copy, nullable) GCKeyboardValueChangedHandler keyChangedHandler;
 
 /**
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepad.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepad.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepad.h	2024-11-10 11:08:13
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepad.h	2025-02-07 19:25:58
@@ -19,14 +19,14 @@
  
  @note For the 1st generation and 2nd generation Siri Remotes, this represents touching anywhere on the entire touch surface.
 */
-GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadDpad API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCInputMicroGamepadDpad API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /**
  The primary button for the microgamepad
  
  @note For the 1st generation and 2nd generation Siri Remotes, this represents pressing anywhere on the touch surface.
 */
-GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadButtonA API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCInputMicroGamepadButtonA API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /**
  The secondary button for the microgamepad
@@ -35,7 +35,7 @@
  
  @note For the 1st and 2nd generation Siri Remotes, this represents pressing the play/pause button.
 */
-GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadButtonX API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCInputMicroGamepadButtonX API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /**
  The primary menu button for the microgamepad
@@ -47,7 +47,7 @@
  @note You should avoid polling this button every frame. tvOS will run a gesture recognizer on events before forwarding them to your application that can reduce the window
     to poll button changes. Instead, register a pressedChangedHandler or a valueChangedHandler.
 */
-GAMECONTROLLER_EXTERN NSString *const GCInputMicroGamepadButtonMenu API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCInputMicroGamepadButtonMenu API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /**
  Micro Gamepad profile.
@@ -66,11 +66,7 @@
 /**
  A profile keeps a reference to the controller that this profile is mapping input from.
  */
-#if !__has_feature(objc_arc)
-@property (nonatomic, readonly, assign) GCController *controller;
-#else
 @property (nonatomic, readonly, weak) GCController *controller;
-#endif
 
 /**
  Set this block if you want to be notified when a value on a element changed. If multiple elements have changed this block will be called
@@ -80,7 +76,7 @@
  @param gamepad this gamepad that is being used to map the raw input data into logical values on controller elements such as the dpad or the buttons.
  @param element the element that has been modified.
  */
-typedef void (^GCMicroGamepadValueChangedHandler)(GCMicroGamepad *gamepad, GCControllerElement *element);
+typedef void (^GCMicroGamepadValueChangedHandler)(GCMicroGamepad *gamepad, GCControllerElement *element) API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0));
 @property (nonatomic, copy, nullable) GCMicroGamepadValueChangedHandler valueChangedHandler;
 
 /**
@@ -93,7 +89,7 @@
  
  @see GCMicroGamepadSnapshot
  */
-- (GCMicroGamepadSnapshot *)saveSnapshot API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController capture] instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0));
+- (GCMicroGamepadSnapshot *)saveSnapshot API_DEPRECATED("Use the -[GCController capture] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
 
 /**
  Optionally analog in the Micro profile. All the elements of this directional input are either analog or digital.
@@ -146,7 +142,7 @@
  @note If the controller's snapshot flag is set to NO, this method has no effect.
  @see GCController.snapshot
  */
-- (void) setStateFromMicroGamepad:(GCMicroGamepad *)microGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
+- (void)setStateFromMicroGamepad:(GCMicroGamepad *)microGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
 
 @end
 
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepadSnapshot.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepadSnapshot.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepadSnapshot.h	2024-11-10 09:09:55
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepadSnapshot.h	2025-02-08 06:04:12
@@ -21,8 +21,9 @@
  
  @see -[GCMicroGamepad saveSnapshot]
  */
-API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0))
+API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0))
 @interface GCMicroGamepadSnapshot : GCMicroGamepad
+
 @property (atomic, copy) NSData *snapshotData;
 
 - (instancetype)initWithSnapshotData:(NSData *)data;
@@ -30,11 +31,12 @@
 
 @end
 
+
 typedef NS_ENUM(NSInteger, GCMicroGamepadSnapshotDataVersion) {
     GCMicroGamepadSnapshotDataVersion1 = 0x0100
-} API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+} API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0));
 
-extern const GCMicroGamepadSnapshotDataVersion GCCurrentMicroGamepadSnapshotDataVersion API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+extern const GCMicroGamepadSnapshotDataVersion GCCurrentMicroGamepadSnapshotDataVersion API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0));
 
 #pragma pack(push, 1)
 typedef struct {
@@ -52,21 +54,21 @@
     float buttonA;
     float buttonX;
     
-} GCMicroGamepadSnapshotData API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+} GCMicroGamepadSnapshotData API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0));
 #pragma pack(pop)
 
 /**Fills out a snapshot from any compatible NSData source
  
  @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases.
  */
-BOOL GCMicroGamepadSnapshotDataFromNSData(GCMicroGamepadSnapshotData *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+BOOL GCMicroGamepadSnapshotDataFromNSData(GCMicroGamepadSnapshotData * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0));
 
 /**Creates an NSData object from a snapshot.
  If the version and size is not set in the snapshot the data will automatically have version GCCurrentMicroGamepadSnapshotDataVersion and sizeof(GCMicroGamepadSnapshotData) set as the values implicitly.
  
  @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCGamepadSnapshot.snapshotData
  */
-NSData *__nullable NSDataFromGCMicroGamepadSnapshotData(GCMicroGamepadSnapshotData *__nullable snapshotData) API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+NSData * _Nullable NSDataFromGCMicroGamepadSnapshotData(GCMicroGamepadSnapshotData * _Nullable snapshotData) API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.15, 10.15), ios(13.0, 13.0), tvos(13.0, 13.0));
 
 
 
@@ -87,20 +89,20 @@
     float buttonA;
     float buttonX;
     
-} GCMicroGamepadSnapShotDataV100 API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+} GCMicroGamepadSnapShotDataV100 API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
 #pragma pack(pop)
 
 /**Fills out a v100 snapshot from any compatible NSData source
  
  @return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases.
  */
-BOOL GCMicroGamepadSnapShotDataV100FromNSData(GCMicroGamepadSnapShotDataV100 *__nullable snapshotData, NSData *__nullable data) API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+BOOL GCMicroGamepadSnapShotDataV100FromNSData(GCMicroGamepadSnapShotDataV100 * _Nullable snapshotData, NSData * _Nullable data) API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
 
 /**Creates an NSData object from a v100 snapshot.
  If the version and size is not set in the snapshot the data will automatically have version 0x100 and sizeof(GCMicroGamepadSnapShotDataV100) set as the values implicitly.
  
  @return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCGamepadSnapshot.snapshotData
  */
-NSData *__nullable NSDataFromGCMicroGamepadSnapShotDataV100(GCMicroGamepadSnapShotDataV100 *__nullable snapshotData) API_DEPRECATED("GCMicroGamepadSnapshot has been deprecated, use [GCController controllerWithMicroGamepad] instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
+NSData * _Nullable NSDataFromGCMicroGamepadSnapShotDataV100(GCMicroGamepadSnapShotDataV100 * _Nullable snapshotData) API_DEPRECATED("Use the -[GCController controllerWithMicroGamepad] method instead", macos(10.11, 10.15), ios(9.0, 13.0), tvos(9.0, 13.0));
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMotion.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMotion.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMotion.h	2024-11-10 09:09:55
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMotion.h	2025-02-07 19:25:58
@@ -23,7 +23,7 @@
  */
 typedef struct {
     double x, y, z;
-} GCAcceleration;
+} GCAcceleration API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0));
 
 /**
  A structure containing 3-axis rotation rate data.
@@ -46,7 +46,7 @@
  */
 typedef struct {
 	double x, y, z;
-} GCRotationRate;
+} GCRotationRate API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0));
 
 
 /**
@@ -70,7 +70,7 @@
  */
 typedef struct {
     double pitch, yaw, roll;
-} GCEulerAngles;
+} GCEulerAngles API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0));
 
 /**
  Represents a quaternion (one way of parameterizing attitude).
@@ -81,7 +81,7 @@
  */
 typedef struct GCQuaternion {
     double x, y, z, w;
-} GCQuaternion;
+} GCQuaternion API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0));
 
 
 /**
@@ -94,7 +94,7 @@
  
  @see GCController.motion
  */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(8.0))
+API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0))
 @interface GCMotion : NSObject
 
 /**
@@ -102,16 +102,12 @@
  
  @see GCController
  */
-#if !__has_feature(objc_arc)
 @property (nonatomic, readonly, weak) GCController *controller;
-#else
-@property (nonatomic, readonly, weak) GCController *controller;
-#endif
 
 /**
  Called whenever a motion value changed.
  */
-typedef void (^GCMotionValueChangedHandler)(GCMotion *motion);
+typedef void (^GCMotionValueChangedHandler)(GCMotion *motion) API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0));
 @property (nonatomic, copy, nullable) GCMotionValueChangedHandler valueChangedHandler;
 
 /**
@@ -176,7 +172,7 @@
 /**
  The controller generating the motion data has sensors that can accurately determine the current attitude and rotation rate. If this is enabled the motion data for attitude and rotation rate are usable for inputs.
  */
-@property (nonatomic, readonly) BOOL hasAttitudeAndRotationRate API_DEPRECATED("hasAttitudeAndRotationRate has been deprecated, use -hasAttitude and -hasRotationRate instead", macos(10.13, 11.0), ios(11.0, 14.0), tvos(11.0, 14.0));
+@property (nonatomic, readonly) BOOL hasAttitudeAndRotationRate API_DEPRECATED("Use -hasAttitude and -hasRotationRate methods instead", macos(10.13, 11.0), ios(11.0, 14.0), tvos(11.0, 14.0));
 
 /**
  The controller generating the motion data has sensors that can accurately determine the current attitude. If this is enabled the motion data for attitude is usable for inputs.
@@ -195,7 +191,7 @@
  @see hasAttitude
  @see GCMicroGamepad
  */
-@property (nonatomic, readonly) GCQuaternion attitude API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0));
+@property (nonatomic, readonly) GCQuaternion attitude;
 
 /**
  The current rotation rate of the controller.
@@ -204,7 +200,7 @@
  @see hasRotationRate
  @see GCMicroGamepad
  */
-@property (nonatomic, readonly) GCRotationRate rotationRate API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0));
+@property (nonatomic, readonly) GCRotationRate rotationRate;
 
 /**
  Sets the gravity vector expressed in the controller's reference frame.
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMouse.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMouse.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMouse.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMouse.h	2025-02-07 23:23:34
@@ -34,8 +34,8 @@
  @see NSNotificationCenter
  @see GCMouse.mice
  */
-GAMECONTROLLER_EXTERN NSString *const GCMouseDidConnectNotification API_AVAILABLE(macos(11.0), ios(14.0));
-GAMECONTROLLER_EXTERN NSString *const GCMouseDidDisconnectNotification API_AVAILABLE(macos(11.0), ios(14.0));
+GAMECONTROLLER_EXPORT NSString *const GCMouseDidConnectNotification API_AVAILABLE(macos(11.0), ios(14.0));
+GAMECONTROLLER_EXPORT NSString *const GCMouseDidDisconnectNotification API_AVAILABLE(macos(11.0), ios(14.0));
 
 /**
 Use these constants with NSNotificationCenter to listen to a controller becoming the most recently used mouse.
@@ -56,8 +56,8 @@
 @see GCMouse.mice
 @see GCMouse.current
 */
-GAMECONTROLLER_EXTERN NSString *const GCMouseDidBecomeCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0));
-GAMECONTROLLER_EXTERN NSString *const GCMouseDidStopBeingCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0));
+GAMECONTROLLER_EXPORT NSString *const GCMouseDidBecomeCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0));
+GAMECONTROLLER_EXPORT NSString *const GCMouseDidStopBeingCurrentNotification API_AVAILABLE(macos(11.0), ios(14.0));
 
 /**
  Mice are available to an application that links to GameController.framework. There are 2 ways to access mice
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMouseInput.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMouseInput.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMouseInput.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCMouseInput.h	2025-02-07 23:23:34
@@ -29,7 +29,7 @@
  @param deltaX the value of raw mouse delta along x axis. Not affected by mouse sensitivity settings
  @param deltaY the value of raw mouse delta along y axis. Not affected by mouse sensitivity settings
 */
-typedef void (^GCMouseMoved)(GCMouseInput* mouse, float deltaX, float deltaY);
+typedef void (^GCMouseMoved)(GCMouseInput* mouse, float deltaX, float deltaY) API_AVAILABLE(macos(11.0), ios(14.0));
 @property (nonatomic, copy, nullable) GCMouseMoved mouseMovedHandler;
 
 /**
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputSource.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputSource.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputSource.h	2024-11-10 09:39:50
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputSource.h	2025-02-07 23:23:33
@@ -19,7 +19,7 @@
     GCPhysicalInputSourceDirectionRight           = (1<<1UL),
     GCPhysicalInputSourceDirectionDown            = (1<<2UL),
     GCPhysicalInputSourceDirectionLeft            = (1<<3UL),
-};
+} API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
 
 
 /**
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCProductCategories.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCProductCategories.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCProductCategories.h	2024-11-10 09:39:49
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCProductCategories.h	2025-02-07 23:23:33
@@ -18,30 +18,30 @@
 
 /// Game Controller Product Categories
 
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryDualSense API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryDualShock4 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryMFi API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryXboxOne API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryHID API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryDualSense API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryDualShock4 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryMFi API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryXboxOne API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryHID API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0));
 
 
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryArcadeStick API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryArcadeStick API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
 
 
 
 /// Remote Product Categories
 
 /// The Siri Remote (1st generation), or Apple TV Remote (1st generation), was first introduced in 2015. It features a Touch surface for touch navigation, and supports device motion.
-GAMECONTROLLER_EXTERN NSString *const GCProductCategorySiriRemote1stGen API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategorySiriRemote1stGen API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /// The Siri Remote (2nd generation), or Apple TV Remote (2nd generation), was first introduced in 2021. It features a touch-enabled clickpad for navigation.
-GAMECONTROLLER_EXTERN NSString *const GCProductCategorySiriRemote2ndGen API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategorySiriRemote2ndGen API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /// Users can use Apple TV Remote controls in Control Center on an iOS or iPadOS device.
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryControlCenterRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryControlCenterRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /// The Universal Electronics remote is an infrared and Bluetooth Low Energy remote designed to work with the Apple TV.
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryUniversalElectronicsRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryUniversalElectronicsRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 /**
  If multiple remotes have been combined into one, the device will have the GCProductCategoryCoalescedRemote product category.
@@ -50,11 +50,11 @@
  virtual Control Center remote and treat them as a single GCDevice instance. By setting GCSupportsMultipleMicroGamepads in your
  app's plist to true, you can disable this behavior.
 */
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryCoalescedRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryCoalescedRemote API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
 
 
 
 /// Keyboards and Mice Product Categories
 
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryMouse API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
-GAMECONTROLLER_EXTERN NSString *const GCProductCategoryKeyboard API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryMouse API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+GAMECONTROLLER_EXPORT NSString *const GCProductCategoryKeyboard API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCRacingWheel.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCRacingWheel.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCRacingWheel.h	2024-11-10 09:39:49
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCRacingWheel.h	2025-02-07 23:23:33
@@ -32,8 +32,8 @@
  @see NSNotificationCenter
  @see GCRacingWheel.connectedRacingWheels
  */
-GAMECONTROLLER_EXTERN NSString *const GCRacingWheelDidConnectNotification API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN NSString *const GCRacingWheelDidDisconnectNotification API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+GAMECONTROLLER_EXPORT NSString *const GCRacingWheelDidConnectNotification API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+GAMECONTROLLER_EXPORT NSString *const GCRacingWheelDidDisconnectNotification API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
 
 
 API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos)
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCTypes.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCTypes.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCTypes.h	2024-11-10 09:39:49
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GCTypes.h	2025-02-07 23:23:33
@@ -6,29 +6,32 @@
 //
 
 #import <Foundation/Foundation.h>
+#import <GameController/GCExtern.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
 struct GCPoint2 {
     float x;
     float y;
-};
+} API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1));
 typedef struct CF_BOXABLE GCPoint2 GCPoint2;
 
 /* The "zero" point -- equivalent to GCPoint2Make(0, 0). */
-GAMECONTROLLER_EXTERN const GCPoint2 GCPoint2Zero API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1));
+GAMECONTROLLER_EXPORT const GCPoint2 GCPoint2Zero API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1));
 
+API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1))
 CF_INLINE GCPoint2
 GCPoint2Make(float x, float y) {
     GCPoint2 p; p.x = x; p.y = y; return p;
 }
 
+API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1))
 CF_INLINE bool
 GCPoint2Equal(GCPoint2 point1, GCPoint2 point2) {
     return point1.x == point2.x && point1.y == point2.y;
 }
 
-GAMECONTROLLER_EXTERN NSString* NSStringFromGCPoint2(GCPoint2 point) API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1));
+GAMECONTROLLER_EXPORT NSString* NSStringFromGCPoint2(GCPoint2 point) API_AVAILABLE(macos(14.3), ios(17.4), tvos(17.4), visionos(1.1));
 
 
 @interface NSValue (GCTypes)
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GameController.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GameController.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GameController.h	2024-11-10 09:39:48
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/GameController.framework/Headers/GameController.h	2025-02-07 23:23:32
@@ -12,6 +12,8 @@
 #import <GameController/GCTypes.h>
 #import <GameController/GCColor.h>
 
+#import <GameController/GCProductCategories.h>
+
 #import <GameController/GCDevice.h>
 #import <GameController/GCDevicePhysicalInput.h>
 
@@ -64,7 +66,6 @@
 #import <GameController/GCMicroGamepadSnapshot.h>
 #import <GameController/GCDirectionalGamepad.h>
 
-#import <GameController/GCProductCategories.h>
 #import <GameController/GCController.h>
 #import <GameController/GCKeyboard.h>
 #import <GameController/GCMouse.h>
Clone this wiki locally