---
title: GCPhysicalInputProfile
framework: gamecontroller
role: symbol
role_heading: Class
path: gamecontroller/gcphysicalinputprofile
---

# GCPhysicalInputProfile

The base class for controller profiles that support physical buttons, thumbsticks, and directional pads.

## Declaration

```swift
class GCPhysicalInputProfile
```

## Overview

Overview This class provides properties and methods for accessing common elements of controllers, and for creating snapshots of profiles.

## Topics

### Getting the device

- [device](gamecontroller/gcphysicalinputprofile/device.md)

### Getting change information

- [lastEventTimestamp](gamecontroller/gcphysicalinputprofile/lasteventtimestamp.md)
- [valueDidChangeHandler](gamecontroller/gcphysicalinputprofile/valuedidchangehandler.md)

### Accessing elements by name or key

- [elements](gamecontroller/gcphysicalinputprofile/elements.md)
- [buttons](gamecontroller/gcphysicalinputprofile/buttons.md)
- [axes](gamecontroller/gcphysicalinputprofile/axes.md)
- [dpads](gamecontroller/gcphysicalinputprofile/dpads.md)
- [touchpads](gamecontroller/gcphysicalinputprofile/touchpads.md)
- [subscript(_:)](gamecontroller/gcphysicalinputprofile/subscript(_:).md)

### Getting elements by type

- [allElements](gamecontroller/gcphysicalinputprofile/allelements.md)
- [allButtons](gamecontroller/gcphysicalinputprofile/allbuttons.md)
- [allAxes](gamecontroller/gcphysicalinputprofile/allaxes.md)
- [allDpads](gamecontroller/gcphysicalinputprofile/alldpads.md)
- [allTouchpads](gamecontroller/gcphysicalinputprofile/alltouchpads.md)

### Setting snapshot values

- [capture()](gamecontroller/gcphysicalinputprofile/capture().md)
- [setStateFromPhysicalInput(_:)](gamecontroller/gcphysicalinputprofile/setstatefromphysicalinput(_:).md)

### Remapping input elements

- [hasRemappedElements](gamecontroller/gcphysicalinputprofile/hasremappedelements.md)
- [mappedElementAlias(forPhysicalInputName:)](gamecontroller/gcphysicalinputprofile/mappedelementalias(forphysicalinputname:).md)
- [mappedPhysicalInputNames(forElementAlias:)](gamecontroller/gcphysicalinputprofile/mappedphysicalinputnames(forelementalias:).md)
- [GCControllerUserCustomizationsDidChange](foundation/nsnotification/name-swift.struct/gccontrollerusercustomizationsdidchange.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Inherited By

- [GCExtendedGamepad](gamecontroller/gcextendedgamepad.md)
- [GCGamepad](gamecontroller/gcgamepad.md)
- [GCKeyboardInput](gamecontroller/gckeyboardinput.md)
- [GCMicroGamepad](gamecontroller/gcmicrogamepad.md)
- [GCMouseInput](gamecontroller/gcmouseinput.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)
- [GCKeyboardInput](gamecontroller/gckeyboardinput.md)
- [GCMouseInput](gamecontroller/gcmouseinput.md)
- [GCExtendedGamepad](gamecontroller/gcextendedgamepad.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)
