AsyncSequence wrapper around Apple's Game Controller Framework.
- iOS 18.1.1
- macOS 15.1.1 (Sequoia)
- Mac Catalyst 18.1.1
- tvOS 18.1
- Xcode 16.1
- Swift 6.0.2
import SpriteKit
import GCOverseer
class GameScene: SKScene {
let gcOverseer = GCOverseer()
override init(size: CGSize) {
super.init(size: size)
// ๐ฎ Handle game controller connection/disconnection asynchronously
Task {
for await controllerEvent in gcOverseer.connectionStream {
switch controllerEvent {
case .connected:
print("A game controller connected.")
case .disconnected:
print("A game controller disconnected.")
}
}
}
}
}
Property | Description |
---|---|
var connectionStream: AsyncStream<GameControllerEvent> |
Provides an AsyncSequence for observing connect/disconnect events of game controllers. |
var controllers: [GCController] |
Returns all controllers connected to the device. E.g. DualShock, Xbox, Siri Remote controllers, etc. |
API | Description |
---|---|
extendedGamepadControllers() |
Returns all controllers supporting the extendedGamepad profile connected to the device. E.g., DualShock, Xbox controllers, etc. |
dualShockControllers() |
Returns all DualShock controllers that are connected to the device. |
dualSenseControllers() |
Returns all DualSense controllers that are connected to the device. |
xboxControllers() |
Returns all Xbox controllers that are connected to the device. |
microGamepadControllers() |
Returns all controllers supporting the microGamepad profile connected to the device. E.g. Apple's Siri Remote. |
motionControllers() |
Returns all controllers supporting the motion profile connected to the device. |
controllerFor(playerIndex:) |
Returns the controller for the player 1, player 2, etc. |
enableLogging() / disableLogging() |
Enables/disables logging output. |
Use Xcode's built-in support for SPM.
or...
In your Package.swift
, add GCOverseer
as a dependency:
dependencies: [
.package(
url: "https://github.com/backslash-f/gcoverseer",
.upToNextMajor(from: "2.0.0")
)
]
Associate the dependency with your target:
targets: [
.target(
name: "YourTargetName",
dependencies: [
.product(
name: "GCOverseer",
package: "gcoverseer"
)
]
)
]
Run: swift build