<!--
{
  "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.

[`subscript(_:)`](/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.

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

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

[`mappedPhysicalInputNames(forElementAlias:)`](/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.



---

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)