---
title: GCExtendedGamepad
framework: gamecontroller
role: symbol
role_heading: Class
path: gamecontroller/gcextendedgamepad
---

# GCExtendedGamepad

A controller profile that supports the extended set of gamepad controls.

## Declaration

```swift
class GCExtendedGamepad
```

## Mentioned in

Discovering game controllers

## Overview

Overview The extended gamepad controller profile represents a physical or virtual controller with the following input elements: Two shoulder buttons Two trigger buttons Four face buttons in a diamond pattern One directional pad Two thumbsticks with optional thumbstick buttons Optional Home and Options buttons A Menu button

If a GCController object supports this type of profile, get the input values of the elements from the controller’s extendedGamepad property or use the profile’s valueChangedHandler method to receive a callback when the input values change. Alternatively, use the saveSnapshot() method to capture the input values at a moment in time. If the controller’s extendedGamepad property is nil, the controller doesn’t support this type of profile. See GCController for other profiles you can use.

## Topics

### Getting the controller

- [controller](gamecontroller/gcextendedgamepad/controller.md)

### Getting change information

- [valueChangedHandler](gamecontroller/gcextendedgamepad/valuechangedhandler.md)
- [GCExtendedGamepadValueChangedHandler](gamecontroller/gcextendedgamepadvaluechangedhandler.md)

### Getting shoulder button inputs

- [leftShoulder](gamecontroller/gcextendedgamepad/leftshoulder.md)
- [rightShoulder](gamecontroller/gcextendedgamepad/rightshoulder.md)

### Getting trigger inputs

- [leftTrigger](gamecontroller/gcextendedgamepad/lefttrigger.md)
- [rightTrigger](gamecontroller/gcextendedgamepad/righttrigger.md)

### Getting face button inputs

- [buttonMenu](gamecontroller/gcextendedgamepad/buttonmenu.md)
- [buttonOptions](gamecontroller/gcextendedgamepad/buttonoptions.md)
- [buttonHome](gamecontroller/gcextendedgamepad/buttonhome.md)
- [buttonA](gamecontroller/gcextendedgamepad/buttona.md)
- [buttonB](gamecontroller/gcextendedgamepad/buttonb.md)
- [buttonX](gamecontroller/gcextendedgamepad/buttonx.md)
- [buttonY](gamecontroller/gcextendedgamepad/buttony.md)

### Getting directional pad inputs

- [dpad](gamecontroller/gcextendedgamepad/dpad.md)

### Getting thumbstick and thumbstick button inputs

- [leftThumbstick](gamecontroller/gcextendedgamepad/leftthumbstick.md)
- [rightThumbstick](gamecontroller/gcextendedgamepad/rightthumbstick.md)
- [leftThumbstickButton](gamecontroller/gcextendedgamepad/leftthumbstickbutton.md)
- [rightThumbstickButton](gamecontroller/gcextendedgamepad/rightthumbstickbutton.md)

### Accessing elements by name

- [Extended gamepad input names](gamecontroller/extended-gamepad-input-names.md)

### Setting snapshot values

- [setStateFrom(_:)](gamecontroller/gcextendedgamepad/setstatefrom(_:).md)
- [saveSnapshot()](gamecontroller/gcextendedgamepad/savesnapshot().md)

## Relationships

### Inherits From

- [GCPhysicalInputProfile](gamecontroller/gcphysicalinputprofile.md)

### Inherited By

- [GCDualSenseGamepad](gamecontroller/gcdualsensegamepad.md)
- [GCDualShockGamepad](gamecontroller/gcdualshockgamepad.md)
- [GCExtendedGamepadSnapshot](gamecontroller/gcextendedgamepadsnapshot.md)
- [GCXboxGamepad](gamecontroller/gcxboxgamepad.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Accessing controller profiles

- [extendedGamepad](gamecontroller/gccontroller/extendedgamepad.md)
- [GCPhysicalInputProfile](gamecontroller/gcphysicalinputprofile.md)
- [GCKeyboardInput](gamecontroller/gckeyboardinput.md)
- [GCMouseInput](gamecontroller/gcmouseinput.md)
- [GCDualShockGamepad](gamecontroller/gcdualshockgamepad.md)
- [GCXboxGamepad](gamecontroller/gcxboxgamepad.md)
- [GCDualSenseGamepad](gamecontroller/gcdualsensegamepad.md)
- [microGamepad](gamecontroller/gccontroller/microgamepad.md)
- [GCMicroGamepad](gamecontroller/gcmicrogamepad.md)
- [GCDirectionalGamepad](gamecontroller/gcdirectionalgamepad.md)
- [motion](gamecontroller/gccontroller/motion.md)
- [physicalInputProfile](gamecontroller/gccontroller/physicalinputprofile.md)
- [gamepad](gamecontroller/gccontroller/gamepad.md)
