<!--
{
  "availability" : [
    "iOS: 7.0.0 - 10.0.0",
    "iPadOS: 7.0.0 - 10.0.0",
    "macCatalyst: 13.1.0 - 13.1.0",
    "macOS: 10.9.0 - 10.12.0",
    "tvOS: 9.0.0 - 10.0.0",
    "visionOS: 1.0.0 - 1.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "GameController",
  "identifier" : "/documentation/GameController/GCGamepad",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Game Controller"
    ],
    "preciseIdentifier" : "c:objc(cs)GCGamepad"
  },
  "title" : "GCGamepad"
}
-->

# GCGamepad

The standard set of gamepad controls.

```
class GCGamepad
```

## Overview

The controls associated with the gamepad profile include the following:

- Two shoulder buttons.
- Four face buttons arranged in a diamond pattern.
- One directional pad (D-pad).

![](images/com.apple.gamecontroller/media-2556316@2x.png)

## Topics

### Determining the Controller That Owns This Profile

[`controller`](/documentation/GameController/GCGamepad/controller)

The controller this profile is associated with.

### Determining When Any Element in the Profile Changes

[`valueChangedHandler`](/documentation/GameController/GCGamepad/valueChangedHandler)

A block called when any element in the profile changes.

### Reading Shoulder Button Inputs

[`leftShoulder`](/documentation/GameController/GCGamepad/leftShoulder)

The left shoulder button element.

[`rightShoulder`](/documentation/GameController/GCGamepad/rightShoulder)

The right shoulder button element.

### Reading Directional Pad Inputs

[`dpad`](/documentation/GameController/GCGamepad/dpad)

The D-pad element.

### Reading Face Button Inputs

[`buttonA`](/documentation/GameController/GCGamepad/buttonA)

The bottom face button.

[`buttonB`](/documentation/GameController/GCGamepad/buttonB)

The right face button.

[`buttonX`](/documentation/GameController/GCGamepad/buttonX)

The left face button.

[`buttonY`](/documentation/GameController/GCGamepad/buttonY)

The top face button.

### Saving a Snapshot

[`-  saveSnapshot`](/documentation/GameController/GCGamepad/saveSnapshot())

Saves a snapshot of all of the profile’s elements.

### Constants

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

Signature for the block executed if any element in the gamepad profile changes value.

## Relationships

### Conforms To

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Equatable`](/documentation/Swift/Equatable)

[`Hashable`](/documentation/Swift/Hashable)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CVarArg`](/documentation/Swift/CVarArg)

### Inherited By

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

### Inherits From

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

---

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)