Controller Status | hyperPad Documentation
Logo
DocumentationInteractionController Status
Interaction

Controller Status

Published September 30, 2026
Controller Status

Use Controller Status to refresh your controller chooser when a controller connects, disconnects, or moves to a different player. You can also use it to show a disconnect message.

Find it in Interaction > Controls.

Properties

Controller Status properties set to Player 0 and Changed.

These settings listen for changes from any player in the controller-count example.

PropertyDefaultWhat it does
Player1Watches the controller assigned to this player. Use another positive number for another player, or 0 to watch all controllers. An assignment change also reaches the player slot the controller is leaving.
EventChangedChooses which changes run your connected behaviors.

Event options

  • Changed: Runs for connection, disconnection, and assignment changes.
  • Connected: Runs when a controller connects.
  • Disconnected: Runs when a controller disconnects.
  • Assigned: Runs when a controller's player assignment changes, including unassignment.

Input and event connections

When this behavior starts, or receives an execution connection, it begins watching for matching changes. Starting it does not produce a snapshot of controllers already connected. Use Get Controllers when your screen first opens.

Its bottom event connection runs after a matching change. Disabled behaviors and paused gameplay do not receive these callbacks. An active overlay can use its own Controller Status behavior to keep a controller chooser current.

Outputs

OutputWhat it contains
controllersThe current array of connected-controller records. A disconnected controller has already been removed from this array.
deviceIDThe session ID of the controller whose status changed.
nameThat controller's reported name. A name can be generic or shared by several controllers.
connectedtrue while the controller is connected; false for a disconnection.
playerIndexThe controller's assigned player for this event. An assignment to 0 means unassigned. A disconnection reports the player the controller was using when it disconnected.
previousPlayerIndexThe player the controller left during an assignment change. It is 0 when no previous assignment is supplied.

The controllers output uses the same record fields as Get Controllers, described below.

Controller records

Each item in controllers is a dictionary for one connected physical controller. Read a dictionary from the array before reading a field such as deviceID.

FieldWhat you can read
deviceIDThe controller's ID for the current play session. Use this value with Assign Controller.
nameThe name supplied by the platform. Two controllers can have the same name.
vendorNameThe vendor or name reported for the controller. This may match name.
connectedtrue for an item in this connected-controller list.
playerIndexIts assigned player number. 0 means it is connected but unassigned.
deviceTypecontroller. Keyboard and mouse are outside this list.
connectionOrderA number used to keep devices in connection order. Use deviceID to identify a device, rather than its array position.
controlsWhen available, an array of control identifiers such as buttonA, leftStick, and buttonMenu. Check whether this field is present before using it.

The Universal player can also supply capabilitiesKnown, standardizedProfile, and observedControls. These fields are optional across platforms. capabilitiesKnown tells you whether the full control list is confirmed. standardizedProfile tells you whether the platform recognizes a standard gamepad layout. observedControls lists controls that have produced input during this session. A recognized layout describes possible controls; it does not confirm that every button exists on the connected device.

Use the behavior's controller list for a chooser. Avoid treating a missing capability field as proof that a controller has no buttons.

Connection guide: refresh a controller count

This is an illustrative example you can add to your own controller-selection UI.

Connection guide for Controller Status: exact behavior settings, execution connections, and data drags.

  1. Create a label Object called Controller Count.
  2. Add Controller Status. Set Player to 0 and Event to Changed.
  3. Connect its bottom event connection to Get Controllers.
  4. Connect Get Controllers to Set Label. Select your Controller Count label as Object A.
  5. Drag the green count output from Get Controllers into Set Label's Text property.

Choose Get Controllers’ count output for Set Label’s Text field.

The white connections decide when each behavior runs. The green drag tells Set Label which value to display. It displays 2 when two controllers are connected.

Execute Get Controllers separately when this UI first opens. Controller Status handles later changes.

Controller setup

Players connect controllers through their device's supported Bluetooth, USB, or other controller setup. Controller Status observes that connection. It does not open system pairing or connect nearby hardware.

Player numbers are logical slots in your game. The number of controllers you can connect depends on the device and operating system. Their session IDs can change after a restart or reconnection.