Skip to Content
This documentation is provided with the HEAT environment and describes this HEAT instance.

Configure the game controller input module

Settings are edited in HEAT Capture’s module settings UI, under HEAT.GameControllerInput.

Device selection

SettingTypeDefaultWhat it controls
DeviceIdstring (GUID)empty (“Default Device”)Restricts capture to one specific device. Left empty, every connected device matching DeviceTypes (and every XInput slot, if UseXInput is on) is captured at once. The settings UI offers a dropdown populated from currently connected devices, refreshed when DeviceTypes changes; the value is either a real DirectInput instance GUID or a synthetic GUID identifying an XInput player slot.
DeviceTypesset of DirectInput device typesGamepad, Joystick, Driving, FlightWhich DirectInput device categories to enumerate. Does not affect XInput, which is a separate path controlled by UseXInput below.
UseXInputbooleantrueAlso polls up to four XInput player slots. Required for Xbox One/Series controllers to deliver data at all - see Troubleshooting.

A controller that appears under both DirectInput and XInput (most Xbox-class pads do) is listed twice in the DeviceId dropdown; picking one entry captures only that path for that physical device, not both.

Polling and output

SettingTypeDefaultWhat it controls
PollIntervalMsinteger (ms)4How often the background poll thread reads every device (about 250Hz at the default) into an in-memory cache. This does not by itself control how often data is published - see the warning below.
TrackEdgeDetectionbooleantrueIntended to control button-state (Down/Hold/Released) event computation. At this source revision the module computes and publishes those events regardless of this setting. See Data produced for the state meanings and Hold repetition.
SendAxisDatabooleantruePublishes a ControllerAxes event every tick for every active DirectInput device, even when no axis has moved. In this release, XInput axis events continue even when this setting is false. See Data produced for the two field schemas.
DebugLogsbooleanfalseLogs every poll error and device acquisition at a verbose level, not only the first occurrence of each.

This module also exposes the generic settings every HEAT Capture module has (Enabled, Interval, OverrideNodeId/NodeId, Timeout) - see Manage capture modules. Unlike the modules that override it, this one leaves Interval at the SDK-wide default of 1000 ms - and here it matters more than usual: button edges and axis values are only computed and published when HEAT Capture calls this module at its Interval cadence, not at the faster PollIntervalMs cadence. A press and release that both happen inside one Interval window can be missed entirely, not only delayed, because edge detection only compares the state at this call against the state at the previous one. If a scenario needs to catch brief button taps reliably, lower Interval to something closer to PollIntervalMs, not the other way round.

Opens your browser's print dialog. Choose "Save as PDF" as the destination.