Gamepad

Category: Listener Tier: Basic

Purpose

Detects gamepad input across buttons, D-Pad directions, analog stick axes, and analog triggers.

Visual Reference

As added to your scene
Gamepad brick as it appears in the GDLink editor

When To Use

Character Movement

Gamepad(Axis Left Stick X Any, expose=move_x) -> Motion(vector.x = {move_x})
Gamepad(Axis Left Stick Y Any, expose=move_z) -> Motion(vector.z = {-move_z})

Vehicle Steering / Throttle

Gamepad(Axis Left Stick X Any, expose=steer_cmd) -> Vehicle3D(steer_input = {steer_cmd})
Gamepad(Trigger RT Hold, expose=throttle_cmd) -> Vehicle3D(throttle_input = {throttle_cmd})
Gamepad(Trigger LT Hold, expose=brake_cmd) -> Vehicle3D(brake_input = {brake_cmd})

Menu Navigation

Gamepad(D-Pad Up Press) -> PRINT / Variable / Message
Gamepad(D-Pad Down Press) -> PRINT / Variable / Message
Gamepad(Button A Press) -> confirm
Gamepad(Button B Press) -> back

Runtime Behavior

Button Uses native joy button state and edge tracking.

  • Press: true once when the button goes from up to down

  • Release: true once when the button goes from down to up

  • Hold: true continuously while the button remains down

D-Pad Uses the same native button-state edge logic as standard buttons.

  • Press: fires when the selected D-Pad direction first engages

  • Release: fires when that direction is released

  • Hold: stays true while the direction is held

Axis Reads the configured stick axis, applies dead-zone filtering, then evaluates against the selected direction and threshold.

  • Positive: active when axis_value > threshold

  • Negative: active when axis_value < -threshold

  • Any: active when abs(axis_value) > threshold

Axis now supports full analog edge tracking:

  • Press: fires once when the filtered value crosses into the active threshold region

  • Release: fires once when it exits that threshold region

  • Hold: stays true while it remains inside that region

Trigger Reads the configured trigger axis, applies dead-zone filtering, then compares against axis_threshold.

  • Press: fires once when trigger value crosses above threshold

  • Release: fires once when it falls back below threshold

  • Hold: stays true while above threshold

Generated UI Mockup — showing expanded properties
Gamepad
-
x
Name:
Label this brick...
Invert

Properties

This brick does not expose a generated property table yet. See the source specification for implementation notes.

Notes

  • Dead-zone values near 0.1.. 0.2 are usually appropriate for healthy controllers.

  • Larger dead-zones can hide stick drift on worn hardware.

  • Trigger thresholds around 0.1.. 0.3 feel responsive for brake/throttle style input.

  • For clean logs on Hold, use a Delay listener into the same gate to throttle output.


Last Updated: April 18, 2026 Version: v0.8.98.2-dev1