<!--
{
  "documentType" : "article",
  "framework" : "GameController",
  "identifier" : "/documentation/GameController/racing-wheel-device-support",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Racing wheel device support"
}
-->

# Racing wheel device support

Add support for racing wheel devices in macOS.

## Discussion

For macOS apps that support racing wheel devices, follow these steps for your app:

- If you distribute your app through the Mac App Store, add the <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.security.device.usb> entitlement to your Xcode project.
- To get a racing wheel controller object, register for the <doc://com.apple.documentation/documentation/Foundation/NSNotification/Name-swift.struct/GCRacingWheelDidConnect> (Swift) or  [`GCRacingWheelDidConnectNotification`](/documentation/GameController/GCRacingWheelDidConnectNotification) (Objective-C) and <doc://com.apple.documentation/documentation/Foundation/NSNotification/Name-swift.struct/GCRacingWheelDidDisconnect> (Swift) or [`GCRacingWheelDidDisconnectNotification`](/documentation/GameController/GCRacingWheelDidDisconnectNotification) (Objective-C) notifications. Alternatively, check the `GCRacingWheel` [`connectedRacingWheels`](/documentation/GameController/GCRacingWheel/connectedRacingWheels) class property for the currently connected controllers.
- To start receiving input from a racing wheel controller, invoke the `GCRacingWheel` [`acquireDevice()`](/documentation/GameController/GCRacingWheel/acquireDevice()) method. Then use the [`relinquishDevice()`](/documentation/GameController/GCRacingWheel/relinquishDevice()) method when you finish processing input.
- To process the input, set callbacks for the specific racing wheel elements that you want to receive input from. For example, set the [`valueDidChangeHandler`](/documentation/GameController/GCPhysicalInputProfile/valueDidChangeHandler) property of the steering wheel and accelerator pedal elements. Get these elements using the [`wheel`](/documentation/GameController/GCRacingWheelInputState/wheel) and [`acceleratorPedal`](/documentation/GameController/GCRacingWheelInputState/acceleratorPedal) properties of the racing wheel’s [`wheelInput`](/documentation/GameController/GCRacingWheel/wheelInput) property, as in: `racingWheel.wheelInput.wheel`.
- If you just want the latest value of the steering wheel, use the `GCSteeringWheelElement` [`absoluteInput`](/documentation/GameController/GCAxisElement/absoluteInput) property.
- For games that poll for input, set the input buffer size using the [`inputStateQueueDepth`](/documentation/GameController/GCDevicePhysicalInput/inputStateQueueDepth) property. In each iteration of your game loop, repeatedly invoke the [`nextInputState()`](/documentation/GameController/GCRacingWheelInput/nextInputState()) method until the queue is empty and it returns `nil`.

## Topics

### Racing wheel controller

[`GCRacingWheel`](/documentation/GameController/GCRacingWheel)

An object that represents a physical racing wheel controller connected to a device.

### Racing wheel input

[`GCRacingWheelInput`](/documentation/GameController/GCRacingWheelInput)

A controller profile that supports a racing wheel.

[`GCRacingWheelInputState`](/documentation/GameController/GCRacingWheelInputState)

The input for the wheel of a racing wheel controller.

### Left and right paddles

[`GCInputLeftPaddle`](/documentation/GameController/GCInputLeftPaddle-77y86)

The name for the left paddle input.

[`GCInputRightPaddle`](/documentation/GameController/GCInputRightPaddle-5klic)

The name for the right paddle input.

[`GCInputLeftPaddle`](/documentation/GameController/GCInputLeftPaddle-818ad)

The name for the left paddle input.

[`GCInputRightPaddle`](/documentation/GameController/GCInputRightPaddle-1p8hd)

The name for the right paddle input.

### Gear shifter elements

[`GCAxisInput`](/documentation/GameController/GCAxisInput)

The common properties of inputs that provide absolute values along an axis with a fixed origin.

[`GCInputAxisName`](/documentation/GameController/GCInputAxisName)

The Objective-C type for an input axis name.

[`GCGearShifterElement`](/documentation/GameController/GCGearShifterElement)

An element that represents either a pattern or a sequential gear shift.

[`GCRelativeInput`](/documentation/GameController/GCRelativeInput)

The common properties of inputs that provide positions along an axis that are relative to the previous position.

### Steering and switch elements

[`GCSteeringWheelElement`](/documentation/GameController/GCSteeringWheelElement)

The element that represents the wheel of a racing wheel controller.

[`GCSwitchPositionInput`](/documentation/GameController/GCSwitchPositionInput)

The common properties of inputs that switch between two or more positions.

[`GCInputSwitchName`](/documentation/GameController/GCInputSwitchName)

The Objective-C type for an input switch name.

### Directional pad elements

[`GCInputDirectionPadName`](/documentation/GameController/GCInputDirectionPadName)

The Objective-C type for the name of a directional pad.

[`GCLinearInput`](/documentation/GameController/GCLinearInput)

The common properties of inputs that provide values in unit coordinates.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)