<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -",
    "macOS: 13.0.0 -",
    "tvOS: 16.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "GameController",
  "identifier" : "/documentation/GameController/GCDevicePhysicalInputState",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Game Controller"
    ],
    "preciseIdentifier" : "c:objc(pl)GCDevicePhysicalInputState"
  },
  "title" : "GCDevicePhysicalInputState"
}
-->

# GCDevicePhysicalInputState

The common properties for physical devices with elements.

```
protocol GCDevicePhysicalInputState : NSObjectProtocol
```

## Overview

It’s safe to call any property and method implementation of this protocol from any thread, as long as you don’t do so from multiple threads concurrently.

## Topics

### Getting the device

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

The physical device that this profile represents.

### Getting change information

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

The time of the most recent event.

[`lastEventLatency`](/documentation/GameController/GCDevicePhysicalInputState/lastEventLatency)

The time in seconds between the last event and the current time.

### Accessing elements

[`elements`](/documentation/GameController/GCDevicePhysicalInputState/elements-46hgy)

The device’s elements as key-value pairs for lookup by name.

[`axes`](/documentation/GameController/GCDevicePhysicalInputState/axes-5u1xr)

The device’s axes as key-value pairs for lookup by name.

[`buttons`](/documentation/GameController/GCDevicePhysicalInputState/buttons-2ovae)

The device’s buttons as key-value pairs for lookup by name.

[`dpads`](/documentation/GameController/GCDevicePhysicalInputState/dpads-7b4o3)

The device’s directional pads as key-value pairs for lookup by name.

[`switches`](/documentation/GameController/GCDevicePhysicalInputState/switches-6dcny)

The device’s switches as key-value pairs for lookup by name.

[`elements`](/documentation/GameController/GCDevicePhysicalInputState/elements-1shp2)

The device’s elements as key-value pairs for lookup by name.

[`axes`](/documentation/GameController/GCDevicePhysicalInputState/axes-80rx)

The device’s axes as key-value pairs for lookup by name.

[`buttons`](/documentation/GameController/GCDevicePhysicalInputState/buttons-3257g)

The device’s buttons as key-value pairs for lookup by name.

[`dpads`](/documentation/GameController/GCDevicePhysicalInputState/dpads-5yr9x)

The device’s directional pads as key-value pairs for lookup by name.

[`switches`](/documentation/GameController/GCDevicePhysicalInputState/switches-6bws2)

The device’s switches as key-value pairs for lookup by name.

[`subscript(_:)`](/documentation/GameController/GCDevicePhysicalInputState/subscript(_:))

Returns the element that the key specifies.



---

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)