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

# GCPhysicalInputProfile

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

```
class GCPhysicalInputProfile
```

## Overview

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

## Topics

### Getting the device

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

The physical device that the profile represents.

### Getting change information

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

The time of the most recent change to an element’s value.

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

The block that the profile calls when an element’s value changes.

### Accessing elements by name or key

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

The elements in the profile as key-value pairs for lookup by name.

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

The buttons in the profile as key-value pairs for lookup by name.

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

The axes in the profile as key-value pairs for lookup by name.

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

The directional pads in the profile as key-value pairs for lookup by name.

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

The touchpads in the profile as key-value pairs for lookup by name.

[`-  objectForKeyedSubscript:`](/documentation/GameController/GCPhysicalInputProfile/subscript(_:))

Returns the element that the key specifies.

### Getting elements by type

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

The elements in the profile.

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

The buttons in the profile.

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

The axes in the profile.

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

The directional pads in the profile.

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

The touchpads in the profile.

### Setting snapshot values

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

Returns a snapshot of the profile with its current element values.

[`-  setStateFromPhysicalInput:`](/documentation/GameController/GCPhysicalInputProfile/setStateFromPhysicalInput(_:))

Copies the input values from a specified physical input profile to a snapshot of the profile.

### Remapping input elements

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

A Boolean value that indicates whether the user remaps elements in this profile.

[`-  mappedElementAliasForPhysicalInputName:`](/documentation/GameController/GCPhysicalInputProfile/mappedElementAlias(forPhysicalInputName:))

Returns the name of the input element to which the user remaps the given physical element.

[`-  mappedPhysicalInputNamesForElementAlias:`](/documentation/GameController/GCPhysicalInputProfile/mappedPhysicalInputNames(forElementAlias:))

Returns the physical input elements to which the user remaps the given input element.

  <doc://com.apple.documentation/documentation/Foundation/NSNotification/Name-swift.struct/GCControllerUserCustomizationsDidChange>

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

A notification that posts when the user customizes the button mappings or other settings of a controller.

## Relationships

### Inherited By

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

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

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

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

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

### Conforms To

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

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

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

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

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

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

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)