Skip to content

GameController iOS xcode15.0 b1

Manuel de la Pena edited this page Jan 5, 2024 · 3 revisions

#GameController.framework https://github.com/xamarin/xamarin-macios/pull/19708

diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCAxisInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCAxisInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCAxisInput.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCAxisInput.h	2023-05-19 22:28:27
@@ -8,6 +8,7 @@
 #import <Foundation/Foundation.h>
 
 @protocol GCPhysicalInputElement;
+@protocol GCPhysicalInputSource;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -26,7 +27,7 @@
  @param input the input that has been modified.
  @param value the value the axis was set to at the time the valueChangedHandler fired.
  */
-@property (copy, nullable) void (^valueDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCAxisInput> input, float value);
+@property (atomic, copy, nullable) void (^valueDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCAxisInput> input, float value);
 
 /**
  A normalized value for the axis input, between -1 and 1 (inclusive). The values
@@ -74,6 +75,12 @@
  the device before the event was transmitted to the host.
  */
 @property (readonly) NSTimeInterval lastValueLatency;
+
+/**
+ An object describing the physical action(s) the user performs to manipulate
+ this input.
+ */
+@property (copy, readonly) NSSet<id<GCPhysicalInputSource>> *sources API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCController.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCController.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCController.h	2023-03-09 23:49:37
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCController.h	2023-05-19 23:12:05
@@ -5,22 +5,24 @@
 //  Copyright (c) 2012 Apple Inc. All rights reserved.
 //
 
-#import <TargetConditionals.h>
+#import <Foundation/Foundation.h>
 
-#import <GameController/GameController.h>
 #import <GameController/GCExtern.h>
+#import <GameController/GCDevice.h>
+#import <GameController/GCControllerInput.h>
+#import <GameController/GCPhysicalInputProfile.h>
+#import <GameController/GCControllerElement.h>
 #import <GameController/GCColor.h>
 
-#if TARGET_OS_OSX
-#import <IOKit/hid/IOHIDBase.h>
-#endif
 
 @class GCMotion;
 @class CHHapticEngine;
 @class GCDeviceHaptics;
 @class GCDeviceLight;
 @class GCDeviceBattery;
-#import <Foundation/Foundation.h>
+@class GCGamepad;
+@class GCMicroGamepad;
+@class GCExtendedGamepad;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -188,6 +190,11 @@
 @property (nonatomic) GCControllerPlayerIndex playerIndex;
 
 /**
+ Gets the input profile for the controller.
+ */
+@property (nonatomic, strong, readonly) GCControllerLiveInput *input API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
+
+/**
  Gets the battery information if controller supports one
  
  This property is useful when you try to notify your user to change or charge controller before it runs out of battery life
@@ -327,14 +334,6 @@
  */
 + (GCController *)controllerWithExtendedGamepad API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
 
-#if TARGET_OS_OSX
-/**
- Returns YES if the given HID device is supported by the Game Controller framework, and will have an associated GCController instance.
- 
- @note This is not cheap, be sure to cache the result
- */
-+ (BOOL)supportsHIDDevice:(IOHIDDeviceRef)device API_AVAILABLE(macos(11.0)) API_UNAVAILABLE(ios, tvos);
-#endif
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerAxisInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerAxisInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerAxisInput.h	2023-03-09 23:52:41
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerAxisInput.h	2023-05-19 22:28:28
@@ -5,10 +5,7 @@
 //  Copyright (c) 2012 Apple Inc. All rights reserved.
 //
 
-
-#import <GameController/GameController.h>
-#import <GameController/GCExtern.h>
-#import <Foundation/Foundation.h>
+#import <GameController/GCControllerElement.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerButtonInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerButtonInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerButtonInput.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerButtonInput.h	2023-05-19 22:28:27
@@ -5,9 +5,7 @@
 //  Copyright (c) 2012 Apple Inc. All rights reserved.
 //
 
-
 #import <GameController/GCControllerElement.h>
-#import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerDirectionPad.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerDirectionPad.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerDirectionPad.h	2023-03-09 23:52:39
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerDirectionPad.h	2023-05-19 22:28:27
@@ -5,12 +5,10 @@
 //  Copyright (c) 2012 Apple Inc. All rights reserved.
 //
 
-
 #import <GameController/GCControllerElement.h>
 
 @class GCControllerAxisInput;
 @class GCControllerButtonInput;
-#import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerElement.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerElement.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerElement.h	2023-03-09 19:07:53
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerElement.h	2023-05-19 23:24:38
@@ -6,6 +6,7 @@
 //
 
 #import <Foundation/Foundation.h>
+#import <GameController/GCExtern.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerInput.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerInput.h	2023-05-19 22:28:28
@@ -0,0 +1,39 @@
+//  
+//  GCControllerInput.h
+//  GameController
+//
+//  Copyright © 2022 Apple Inc. All rights reserved.
+//
+
+#import <GameController/GCDevicePhysicalInput.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0))
+@interface GCControllerInputState : NSObject <GCDevicePhysicalInputState>
+@end
+
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0))
+@interface GCControllerLiveInput : GCControllerInputState <GCDevicePhysicalInput>
+
+/**
+ *  Get a view of the controller's input without any system-level control
+ *  remapping applied.
+ *
+ *  Developers should avoid implementing their own control remapping
+ *  functionality and to instead direct users to the system game controller
+ *  settings to remap controls.  If you choose to implement your own
+ *  control remapping functionality, or if your app streams controller input
+ *  to a remote device that implements control remapping functionality, you
+ *  should access controller physical input through this interface.
+ */
+@property (readonly, nullable) GCControllerLiveInput *unmappedInput;
+
+/* GCDevicePhysicalInput re-declarations with better type information. */
+- (GCControllerInputState *)capture;
+- (nullable GCControllerInputState<GCDevicePhysicalInputStateDiff> *)nextInputState;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerTouchpad.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerTouchpad.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerTouchpad.h	2023-03-09 23:52:41
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCControllerTouchpad.h	2023-05-19 22:28:27
@@ -1,6 +1,6 @@
 //
 //  GCControllerTouchpad.h
-//  GameControllerFramework_iOS
+//  GameController
 //
 //  Copyright © 2019 Apple Inc. All rights reserved.
 //
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevice.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevice.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevice.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevice.h	2023-05-19 22:28:27
@@ -6,6 +6,7 @@
 //
 
 #import <Foundation/Foundation.h>
+#import <GameController/GCProductCategories.h>
 
 @class GCPhysicalInputProfile;
 
@@ -34,7 +35,7 @@
 @property (nonatomic, readonly, copy, nullable) NSString *vendorName API_AVAILABLE(macos(10.9), ios(7.0), tvos(7.0));
 
 /**
- The product category the controller belongs to. This is useful for setting appropriate UI elements based on what type of device is connected.
+ The product category the device belongs to. This is useful for setting appropriate UI elements based on what type of device is connected.
  
  @see GCProductCategories.h
  */
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDeviceCursor.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDeviceCursor.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDeviceCursor.h	2023-03-09 23:52:41
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDeviceCursor.h	2023-05-19 22:28:28
@@ -5,9 +5,7 @@
 //  Copyright © 2020 Apple Inc. All rights reserved.
 //
 
-
 #import <GameController/GCControllerDirectionPad.h>
-#import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInput.h	2023-03-09 19:13:04
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInput.h	2023-05-19 22:21:42
@@ -27,6 +27,17 @@
  */
 @property (weak, readonly) id<GCDevice> device;
 
+/**
+ The dispatch queue that element value change handlers and other callbacks are
+ submitted on.
+ 
+ The default queue is the \c handlerQueue of the associated \c device.  Set
+ this property if your application wants to receive input callbacks on a
+ different queue.  You should set this property before configuring other
+ callbacks.
+ */
+@property (atomic, strong, nullable) dispatch_queue_t queue API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
+
 #pragma mark Immediate Input
 
 /**
@@ -45,7 +56,7 @@
  @param element
  The element that has been modified.
  */
-@property (copy, nullable) void (^elementValueDidChangeHandler)(__kindof id<GCDevicePhysicalInput> physicalInput, __kindof id<GCPhysicalInputElement> element);
+@property (atomic, copy, nullable) void (^elementValueDidChangeHandler)(__kindof id<GCDevicePhysicalInput> physicalInput, __kindof id<GCPhysicalInputElement> element);
 
 /**
  Polls the current state vector of the physical input and saves it to a new
@@ -94,7 +105,7 @@
         }
     };
  */
-@property (copy, nullable) void (^inputStateAvailableHandler)(__kindof id<GCDevicePhysicalInput> physicalInput);
+@property (atomic, copy, nullable) void (^inputStateAvailableHandler)(__kindof id<GCDevicePhysicalInput> physicalInput);
 
 /**
  The maximum number of input states to buffer.  If your application does not
@@ -106,7 +117,7 @@
  value of \c 20 should be more than enough to ensure no input state changes
  are missed.
  */
-@property (readwrite) NSInteger inputStateQueueDepth;
+@property (atomic, readwrite) NSInteger inputStateQueueDepth;
 
 /**
  Pop the oldest pending input state from the queue.  This method returns \c nil
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInputStateDiff.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInputStateDiff.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInputStateDiff.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDevicePhysicalInputStateDiff.h	2023-05-19 22:28:27
@@ -50,7 +50,7 @@
  typically because the input state queue filled up and older input state
  snapshots were dropped.
  */
-- (nullable NSEnumerator<id<GCPhysicalInputElement>> *)changedElements;
+- (nullable NSEnumerator<id<GCPhysicalInputElement>> *)changedElements NS_REFINED_FOR_SWIFT;
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDirectionPadElement.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDirectionPadElement.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDirectionPadElement.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDirectionPadElement.h	2023-05-19 22:28:27
@@ -14,12 +14,12 @@
 
 /**
  An object conforming to \c GCDirectionPadElement represents a four-way
- directional control with one button on each point.
+ directional control element.
  
- A direction pad element contains 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.
+ A direction pad element contains a common grouping of 2 axis inputs, which 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
+ given time.
  */
 API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0))
 @protocol GCDirectionPadElement <GCPhysicalInputElement>
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDirectionalGamepad.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDirectionalGamepad.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDirectionalGamepad.h	2023-03-09 23:52:41
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCDirectionalGamepad.h	2023-05-19 22:28:27
@@ -5,11 +5,9 @@
 //  Copyright © 2020 Apple Inc. All rights reserved.
 //
 
-#import <Foundation/Foundation.h>
 #import <GameController/GCMicroGamepad.h>
 
 NS_ASSUME_NONNULL_BEGIN
-
 
 /**
  The primary directional input surface for the directional gamepad
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCEventViewController.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCEventViewController.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCEventViewController.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCEventViewController.h	2023-05-19 22:28:27
@@ -9,24 +9,15 @@
 
 #import <Foundation/Foundation.h>
 
-#if TARGET_OS_IPHONE
 #import <UIKit/UIViewController.h>
-#else
-#import <AppKit/NSViewController.h>
-#endif
 
 /**
  A view controller subclass that allows fine grained control of the user interface system's handling
  of game controller events. Set an instance of this class as your root view controller if you intend
  to use GCController APIs for handling game controllers.
  */
-#if TARGET_OS_IPHONE
 API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0))
 @interface GCEventViewController : UIViewController
-#else
-API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0))
-@interface GCEventViewController : NSViewController
-#endif
 
 /**
  Controllers can be used to control the general UIKit user interface and for many views that is
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepad.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepad.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepad.h	2023-03-09 19:13:04
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepad.h	2023-05-19 23:24:38
@@ -5,17 +5,12 @@
 //  Copyright (c) 2012 Apple Inc. All rights reserved.
 //
 
-#import <GameController/GCExtern.h>
 #import <GameController/GCPhysicalInputProfile.h>
-#import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
 @class GCController;
 @class GCExtendedGamepadSnapshot;
-@class GCControllerDirectionPad;
-@class GCControllerElement;
-@class GCControllerButtonInput;
 
 /**
  Extended Gamepad profile. Has all the physical features of a Standard Gamepad and more.
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepadSnapshot.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepadSnapshot.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepadSnapshot.h	2023-03-09 19:10:38
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCExtendedGamepadSnapshot.h	2023-05-19 23:12:06
@@ -5,8 +5,7 @@
 //  Copyright (c) 2012 Apple Inc. All rights reserved.
 //
 
-#import <GameController/GameController.h>
-#import <Foundation/Foundation.h>
+#import <GameController/GCExtendedGamepad.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCGamepad.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCGamepad.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCGamepad.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCGamepad.h	2023-05-19 22:28:27
@@ -5,17 +5,12 @@
 //  Copyright (c) 2012 Apple Inc. All rights reserved.
 //
 
-#import <GameController/GCExtern.h>
 #import <GameController/GCPhysicalInputProfile.h>
-#import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
 @class GCController;
 @class GCGamepadSnapshot;
-@class GCControllerDirectionPad;
-@class GCControllerElement;
-@class GCControllerButtonInput;
 
 /**
  Standard Gamepad profile.
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCGamepadSnapshot.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCGamepadSnapshot.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCGamepadSnapshot.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCGamepadSnapshot.h	2023-05-19 22:28:27
@@ -5,14 +5,13 @@
 //  Copyright (c) 2012 Apple Inc. All rights reserved.
 //
 
-#import <GameController/GameController.h>
-#import <Foundation/Foundation.h>
+#import <GameController/GCGamepad.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
 /**
  A GCGamepadSnapshot snapshot is a concrete GCGamepad implementation. It can be used directly in an
- application to implement controller input replays. It is also returned as the result API_DEPRECATED("GCGamepad has been deprecated, use GCExtendedGamepad instead", macos(10.9, 10.15), ios(7.0, 13.0), tvos(7.0, 13.0))of polling
+ application to implement controller input replays. It is also returned as the result of polling
  a controller.
  
  The current snapshotData is readily available to access as NSData. A developer can serialize this to any
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCInputNames.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCInputNames.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCInputNames.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCInputNames.h	2023-05-19 23:24:37
@@ -6,7 +6,6 @@
 //
 
 #import <Foundation/Foundation.h>
-
 #import <GameController/GCExtern.h>
 
 __attribute__((objc_non_runtime_protocol)) NS_REFINED_FOR_SWIFT
@@ -30,11 +29,11 @@
 @end
 
 
-typedef NSString<GCPhysicalInputElementName> *const GCInputElementName NS_TYPED_EXTENSIBLE_ENUM NS_REFINED_FOR_SWIFT;
-typedef NSString<GCButtonElementName> *const GCInputButtonName NS_TYPED_EXTENSIBLE_ENUM NS_REFINED_FOR_SWIFT;
-typedef NSString<GCAxisElementName> *const GCInputAxisName NS_TYPED_EXTENSIBLE_ENUM NS_REFINED_FOR_SWIFT;
-typedef NSString<GCSwitchElementName> *const GCInputSwitchName NS_TYPED_EXTENSIBLE_ENUM NS_REFINED_FOR_SWIFT;
-typedef NSString<GCDirectionPadElementName> *const GCInputDirectionPadName NS_TYPED_EXTENSIBLE_ENUM NS_REFINED_FOR_SWIFT;
+typedef NSString<GCPhysicalInputElementName> *const GCInputElementName NS_REFINED_FOR_SWIFT NS_TYPED_EXTENSIBLE_ENUM;
+typedef NSString<GCButtonElementName> *const GCInputButtonName NS_REFINED_FOR_SWIFT NS_TYPED_EXTENSIBLE_ENUM;
+typedef NSString<GCAxisElementName> *const GCInputAxisName NS_REFINED_FOR_SWIFT NS_TYPED_EXTENSIBLE_ENUM;
+typedef NSString<GCSwitchElementName> *const GCInputSwitchName NS_REFINED_FOR_SWIFT NS_TYPED_EXTENSIBLE_ENUM;
+typedef NSString<GCDirectionPadElementName> *const GCInputDirectionPadName NS_REFINED_FOR_SWIFT NS_TYPED_EXTENSIBLE_ENUM;
 
 
 /**
@@ -46,26 +45,26 @@
 @see GCPhysicalInputProfile.h
 */
 
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonA NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonB NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonX NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonY NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+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_EXTERN GCInputDirectionPadName GCInputDirectionPad NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputLeftThumbstick NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputRightThumbstick NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+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_EXTERN GCInputButtonName GCInputLeftShoulder NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightShoulder NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftTrigger NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightTrigger NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftThumbstickButton NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightThumbstickButton NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+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_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_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_EXTERN GCInputButtonName GCInputButtonHome NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonMenu NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonOptions NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputButtonShare NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
+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));
 
 /**
 A set of strings commonly used to access Xbox buttons
@@ -75,10 +74,10 @@
 @see GCController.h
 @see GCPhysicalInputProfile.h
 */
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleOne NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleTwo NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleThree NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputXboxPaddleFour NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+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));
 
 /**
 A set of strings commonly used to access DualShock buttons
@@ -88,17 +87,20 @@
 @see GCController.h
 @see GCPhysicalInputProfile.h
 */
-GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputDualShockTouchpadOne NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputDirectionPadName GCInputDualShockTouchpadTwo NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputDualShockTouchpadButton NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+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));
 
 /**
 A set of strings commonly used by racing wheels.
 */
-GAMECONTROLLER_EXTERN GCInputAxisName GCInputSteeringWheel NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputElementName GCInputShifter NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputPedalAccelerator NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputPedalBrake NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputPedalClutch NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputLeftPaddle NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
-GAMECONTROLLER_EXTERN GCInputButtonName GCInputRightPaddle NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(13.0), macCatalyst(16.0)) API_UNAVAILABLE(ios, tvos);
+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);
+
+/// 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));
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCLinearInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCLinearInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCLinearInput.h	2023-03-09 23:52:39
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCLinearInput.h	2023-05-19 22:28:27
@@ -8,6 +8,7 @@
 #import <Foundation/Foundation.h>
 
 @protocol GCPhysicalInputElement;
+@protocol GCPhysicalInputSource;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -25,7 +26,7 @@
  @param input the input that has been modified.
  @param value the value the axis was set to at the time the valueDidChangeHandler fired.
  */
-@property (copy, nullable) void (^valueDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCLinearInput> input, float value);
+@property (atomic, copy, nullable) void (^valueDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCLinearInput> input, float value);
 
 /**
  A normalized value for the axis input, between 0 and 1 (inclusive). The values
@@ -73,6 +74,12 @@
  the device before the event was transmitted to the host.
  */
 @property (readonly) NSTimeInterval lastValueLatency;
+
+/**
+ An object describing the physical action(s) the user performs to manipulate
+ this input.
+ */
+@property (copy, readonly) NSSet<id<GCPhysicalInputSource>> *sources API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepad.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepad.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepad.h	2023-03-09 19:13:02
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepad.h	2023-05-19 22:16:12
@@ -5,17 +5,12 @@
 //  Copyright (c) 2014 Apple Inc. All rights reserved.
 //
 
-#import <GameController/GCExtern.h>
 #import <GameController/GCPhysicalInputProfile.h>
-#import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
 @class GCController;
 @class GCMicroGamepadSnapshot;
-@class GCControllerDirectionPad;
-@class GCControllerElement;
-@class GCControllerButtonInput;
 
 /**
  The primary directional input surface for the directional gamepad
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepadSnapshot.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepadSnapshot.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepadSnapshot.h	2023-03-09 23:49:36
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMicroGamepadSnapshot.h	2023-05-19 23:12:05
@@ -5,8 +5,7 @@
 //  Copyright (c) 2014 Apple Inc. All rights reserved.
 //
 
-#import <GameController/GameController.h>
-#import <Foundation/Foundation.h>
+#import <GameController/GCMicroGamepad.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMotion.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMotion.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMotion.h	2023-03-09 23:49:36
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCMotion.h	2023-05-19 22:16:12
@@ -7,9 +7,9 @@
 
 #import <Foundation/Foundation.h>
 
-NS_ASSUME_NONNULL_BEGIN
-
 @class GCController;
+
+NS_ASSUME_NONNULL_BEGIN
 
 /**
  A 3 dimensional acceleration vector measured as scalar multiples of earth's gravitational acceleration, G.
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputElement.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputElement.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputElement.h	2023-03-09 23:52:42
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputElement.h	2023-05-19 22:28:28
@@ -17,20 +17,25 @@
 @protocol GCPhysicalInputElement <NSObject>
 
 /**
- The element's SF Symbols name.
+ The set of aliases that can be used to access this element with keyed subscript
+ notation.
  */
-@property (readonly, nullable) NSString *sfSymbolsName;
+@property (copy, readonly) NSSet<NSString *> *aliases;
 
 /**
- The element's localized name.
+ The element's localized display name.
+ 
+ This is the string that your app should display in any on-screen messages
+ instructing the user to interact with the control.  For example:
+ 
+     "Press \(buttonA.localizedName) to jump!"
+ 
+ Do not cache this value - it can change when the user remaps controls.
  */
-@property (readonly, nullable) NSString *localizedName;
+@property (copy, readonly, nullable) NSString *localizedName;
 
-/**
- The set of aliases that can be used to access this element with keyed subscript
- notation.
- */
-@property (readonly) NSSet<NSString *> *aliases;
+/** The SF Symbols name for the element. */
+@property (copy, readonly, nullable) NSString *sfSymbolsName;
 
 @end
 
@@ -41,7 +46,7 @@
  input elements found in a device's physical input profile.
  */
 API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)) NS_REFINED_FOR_SWIFT
-@interface GCPhysicalInputElementCollection<Key: NSString*, Element: id<GCPhysicalInputElement>> : NSObject <NSFastEnumeration>
+@interface GCPhysicalInputElementCollection<Key: NSString*, __covariant Element: id<GCPhysicalInputElement>> : NSObject <NSFastEnumeration>
 
 + (instancetype)new NS_UNAVAILABLE;
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputProfile.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputProfile.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputProfile.h	2023-03-09 19:13:02
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputProfile.h	2023-05-19 22:16:12
@@ -5,6 +5,8 @@
 //  Copyright (c) 2019 Apple Inc. All rights reserved.
 //
 
+#import <Foundation/Foundation.h>
+#import <GameController/GCExtern.h>
 
 @protocol GCDevice;
 @class GCControllerElement;
@@ -18,8 +20,6 @@
 @compatibility_alias GCDeviceAxisInput GCControllerAxisInput;
 @compatibility_alias GCDeviceDirectionPad GCControllerDirectionPad;
 @compatibility_alias GCDeviceTouchpad GCControllerTouchpad;
-
-#import <Foundation/Foundation.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputSource.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputSource.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputSource.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPhysicalInputSource.h	2023-05-19 22:28:27
@@ -0,0 +1,72 @@
+//  
+//  GCPhysicalInputSource.h
+//  GameController
+//
+//  Copyright © 2022 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <GameController/GCInputNames.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ *  One or more directions associated with a \c GCPhysicalInputSource.
+ */
+typedef NS_OPTIONS(NSUInteger, GCPhysicalInputSourceDirection) {
+    GCPhysicalInputSourceDirectionNotApplicable   = 0,
+    GCPhysicalInputSourceDirectionUp              = (1<<0UL),
+    GCPhysicalInputSourceDirectionRight           = (1<<1UL),
+    GCPhysicalInputSourceDirectionDown            = (1<<2UL),
+    GCPhysicalInputSourceDirectionLeft            = (1<<3UL),
+};
+
+
+/**
+ *  A description of the actual physical input element that a user interacts
+ *  with to manipulate the the value of an input that is exposed to the app.
+ *
+ *  By querying the source of an element's input that is returned from
+ *  \c GCDevicePhysicalInput or \c GCDevicePhysicalInputState, an app
+ *  can see through element remappings applied by the user in the system
+ *  game controller settings.  For example, assuming the user has
+ *  swapped the A and B buttons in the system game controller settings...
+ *
+ *      YES == [physicalInput.buttons[GCInputButtonA].pressedInput.source.elementAliases contains:GCInputButtonB]
+ *      YES == [physicalInput.buttons[GCInputButtonB].pressedInput.source.elementAliases contains:GCInputButtonA]
+ *
+ *  Examining an input's source is discouraged, but may be necessary depending
+ *  on how your game's input handling code is implemented.  If possible, prefer
+ *  to load and display the \c sfSymbolsName and \c localizedName from the
+ *  \c GCPhysicalInputElement in any in-game U.I.
+ *
+ *      // Use these anywhere you need to instruct the user to press the 'A'
+ *      // button in your game UI.  The symbol name and localized string
+ *      // returned will reflect the element that GCInputButtonA has been
+ *      // remapped to (Button B in the above case).
+ *      physicalInput.buttons[GCInputButtonA].localizedName
+ *      physicalInput.buttons[GCInputButtonA].sfSymbolsName
+ *
+ *  @note
+ *  Objects conforming to \c GCPhysicalInputSource protocol are vended by the
+ *  GameController framework.  You should not conform to this protocol in your
+ *  own types.
+ */
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0))
+@protocol GCPhysicalInputSource <NSObject>
+
+/** The set of aliases for the element that the user interacts with. */
+@property (copy, readonly) NSSet<GCInputElementName> *elementAliases;
+
+/** The localized name of the element that the user interacts with. */
+@property (copy, readonly, nullable) NSString *elementLocalizedName;
+
+/** The SF Symbol of the element that the user interacts with. */
+@property (copy, readonly, nullable) NSString *sfSymbolsName;
+
+/** One or more directions associated with the source. */
+@property (readonly) GCPhysicalInputSourceDirection direction;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPressedStateInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPressedStateInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPressedStateInput.h	2023-03-09 23:52:39
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCPressedStateInput.h	2023-05-19 22:28:27
@@ -8,6 +8,7 @@
 #import <Foundation/Foundation.h>
 
 @protocol GCPhysicalInputElement;
+@protocol GCPhysicalInputSource;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -21,7 +22,7 @@
 /**
  Set this block if you want to be notified when the pressed state changes.
  */
-@property (copy, nullable) void (^pressedDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCPressedStateInput> input, BOOL pressed);
+@property (atomic, copy, nullable) void (^pressedDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCPressedStateInput> input, BOOL pressed);
 
 /**
  Buttons are mostly used in a digital sense, thus we have a recommended method
@@ -57,6 +58,12 @@
  the device before the event was transmitted to the host.
  */
 @property (readonly) NSTimeInterval lastPressedStateLatency;
+
+/**
+ An object describing the physical action(s) the user performs to manipulate
+ this input.
+ */
+@property (copy, readonly) NSSet<id<GCPhysicalInputSource>> *sources API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCProductCategories.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCProductCategories.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCProductCategories.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCProductCategories.h	2023-05-19 22:28:27
@@ -16,7 +16,6 @@
 @see GCDevice.h
 */
 
-
 /// Game Controller Product Categories
 
 GAMECONTROLLER_EXTERN NSString *const GCProductCategoryDualSense API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0));
@@ -24,6 +23,8 @@
 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_EXTERN NSString *const GCProductCategoryArcadeStick API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
 
 
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCRelativeInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCRelativeInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCRelativeInput.h	2023-03-09 23:52:40
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCRelativeInput.h	2023-05-19 22:28:27
@@ -8,6 +8,7 @@
 #import <Foundation/Foundation.h>
 
 @protocol GCPhysicalInputElement;
+@protocol GCPhysicalInputSource;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -27,7 +28,7 @@
  The amount that the input has changed since the last time
  \c deltaDidChangeHandler fired.
  */
-@property (copy, nullable) void (^deltaDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCRelativeInput> input, float delta);
+@property (atomic, copy, nullable) void (^deltaDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCRelativeInput> input, float delta);
 
 /**
  The last reported delta for the input.
@@ -59,6 +60,12 @@
  the device before the event was transmitted to the host.
  */
 @property (readonly) NSTimeInterval lastDeltaLatency;
+
+/**
+ An object describing the physical action(s) the user performs to manipulate
+ this input.
+ */
+@property (copy, readonly) NSSet<id<GCPhysicalInputSource>> *sources API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCSwitchPositionInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCSwitchPositionInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCSwitchPositionInput.h	2023-03-09 23:52:41
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCSwitchPositionInput.h	2023-05-19 22:28:28
@@ -7,6 +7,9 @@
 
 #import <Foundation/Foundation.h>
 
+@protocol GCPhysicalInputElement;
+@protocol GCPhysicalInputSource;
+
 NS_ASSUME_NONNULL_BEGIN
 
 API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0))
@@ -18,7 +21,7 @@
  @param input the element that has been modified.
  @see value
  */
-@property (copy, nullable) void (^positionDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCSwitchPositionInput> input, NSInteger position);
+@property (atomic, copy, nullable) void (^positionDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCSwitchPositionInput> input, NSInteger position);
 
 /**
  The switch's position.
@@ -64,6 +67,12 @@
  the device before the event was transmitted to the host.
  */
 @property (readonly) NSTimeInterval lastPositionLatency;
+
+/**
+ An object describing the physical action(s) the user performs to manipulate
+ this input.
+ */
+@property (copy, readonly) NSSet<id<GCPhysicalInputSource>> *sources API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCTouchedStateInput.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCTouchedStateInput.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCTouchedStateInput.h	2023-03-09 23:52:41
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCTouchedStateInput.h	2023-05-19 22:28:27
@@ -8,6 +8,7 @@
 #import <Foundation/Foundation.h>
 
 @protocol GCPhysicalInputElement;
+@protocol GCPhysicalInputSource;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -25,7 +26,7 @@
 /**
  Set this block if you want to be notified when the touched state changes.
  */
-@property (copy, nullable) void (^touchedDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCTouchedStateInput> input, BOOL touched);
+@property (atomic, copy, nullable) void (^touchedDidChangeHandler)(__kindof id<GCPhysicalInputElement> element, id<GCTouchedStateInput> input, BOOL touched);
 
 /**
  Some buttons feature capacitive touch capabilities, where the user can touch
@@ -55,6 +56,12 @@
  the device before the event was transmitted to the host.
  */
 @property (readonly) NSTimeInterval lastTouchedStateLatency;
+
+/**
+ An object describing the physical action(s) the user performs to manipulate
+ this input.
+ */
+@property (copy, readonly) NSSet<id<GCPhysicalInputSource>> *sources API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCVirtualController.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCVirtualController.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCVirtualController.h	2023-03-09 23:52:39
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GCVirtualController.h	2023-05-19 22:28:27
@@ -5,35 +5,36 @@
 //  Copyright © 2021 Apple Inc. All rights reserved.
 //
 
-#import <TargetConditionals.h>
+#import <UIKit/UIKit.h>
 
-
-#if TARGET_OS_IPHONE
-#import <GameController/GameController.h>
-
 NS_ASSUME_NONNULL_BEGIN
 
-
-
 /**
- GCVirtualControllerConfiguration
- 
-*/
-API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(macos, tvos)
+ *  @class GCVirtualControllerConfiguration
+ */
+API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(macos, tvos) API_UNAVAILABLE(xros)
 NS_SWIFT_NAME(GCVirtualController.Configuration)
 @interface GCVirtualControllerConfiguration : NSObject
  
-// The set of controller elements e.g. [GCInputDirectionPad, GCInputLeftShoulder,  etc...]
+/**
+ The set of controller elements to be made available on \c GCVirtualController instances created with this configuration. e.g. [GCInputDirectionPad, GCInputLeftShoulder,  etc...]
+ */
 @property (nonatomic, strong) NSSet<NSString *> *elements;
    
+/**
+  Defaults to false, indicating that the default system touch control elements will be drawn using a touchable full-screen overlay. When set to true,
+  the application is responsible for drawing its own control UI and should call \c -setValue: and \c -setPosition: methods on the \c GCVirtualController
+  in response to touch or other events, which will then be translated into \c GCController events.
+ */
+@property (nonatomic, getter=isHidden) BOOL hidden API_AVAILABLE(ios(17.0));
+
 @end
 
 
 /**
- GCVirtualControllerElementConfiguration
- 
-*/
-API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(macos, tvos)
+ *  @class GCVirtualControllerElementConfiguration
+ */
+API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(macos, tvos) API_UNAVAILABLE(xros)
 NS_SWIFT_NAME(GCVirtualController.ElementConfiguration)
 @interface GCVirtualControllerElementConfiguration : NSObject
 
@@ -59,10 +60,9 @@
 
 
 /**
- GCVirtualController
- 
-*/
-API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(macos, tvos)
+ *  @class GCVirtualController
+ */
+API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(macos, tvos) API_UNAVAILABLE(xros)
 @interface GCVirtualController : NSObject
 
 /**
@@ -70,26 +70,37 @@
  
  @see GCVirtualControllerConfiguration
  */
-+(GCVirtualController *)virtualControllerWithConfiguration:(GCVirtualControllerConfiguration *)configuration;
++ (GCVirtualController *)virtualControllerWithConfiguration:(GCVirtualControllerConfiguration *)configuration;
 
-+(instancetype)new NS_UNAVAILABLE;
--(instancetype)init NS_UNAVAILABLE;
--(instancetype)initWithConfiguration:(GCVirtualControllerConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+- (instancetype)initWithConfiguration:(GCVirtualControllerConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
 
--(void)connectWithReplyHandler:(void(^ _Nullable )(NSError * _Nullable error))reply NS_SWIFT_ASYNC_NAME(connect());
+- (void)connectWithReplyHandler:(nullable void(^)(NSError * _Nullable error))reply NS_SWIFT_ASYNC_NAME(connect());
+- (void)disconnect;
 
--(void)disconnect;
 
-
 /**
  GCController is only available when GCVirtualController is connected
  */
-@property (nonatomic, weak, readonly, nullable) GCController *controller;
+@property (nonatomic, readonly, nullable) GCController *controller;
 
--(void)updateConfigurationForElement:(NSString*)element configuration:( GCVirtualControllerElementConfiguration*(NS_NOESCAPE ^ _Nonnull )(GCVirtualControllerElementConfiguration * oldConfiguration))config ;
+/**
+  Changes the GCVirtualControllerElementConfiguration on a per element basis. Only applicable when the GCVirtualController is not hidden and its
+  UI is being drawn by the system.
+ */
+- (void)updateConfigurationForElement:(NSString *)element configuration:(NS_NOESCAPE GCVirtualControllerElementConfiguration* (^)(GCVirtualControllerElementConfiguration *oldConfiguration))config;
 
+/**
+  Sets the value for a GCControllerButton element. Values are clamped to the range (0.0 - 1.0).
+ */
+- (void)setValue:(CGFloat)value forButtonElement:(NSString *)element API_AVAILABLE(ios(17.0));
+
+/**
+  Sets the (x,y) position for a GCControllerDirectionPad element (D-Pads as well as Joysticks). X and Y values are clamped to the range (-1.0 - 1.0).
+ */
+- (void)setPosition:(CGPoint)position forDirectionPadElement:(NSString *)element API_AVAILABLE(ios(17.0));
+
 @end
 
 NS_ASSUME_NONNULL_END
-
-#endif
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GameController.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GameController.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GameController.h	2023-03-04 21:37:17
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameController.framework/Headers/GameController.h	2023-05-19 22:28:26
@@ -15,6 +15,7 @@
 #import <GameController/GCDevicePhysicalInput.h>
 
 #import <GameController/GCPhysicalInputElement.h>
+#import <GameController/GCPhysicalInputSource.h>
 #import <GameController/GCLinearInput.h>
 #import <GameController/GCAxisInput.h>
 #import <GameController/GCRelativeInput.h>
Clone this wiki locally