Quick answer: Godot gamepad B-button on Xbox = O on PlayStation? Godot 4 normalizes button indices to a single enum (JOY_BUTTON_A etc.). Glyphs remain controller-specific.

A “confirm = bottom face button” convention; on Xbox A is bottom, on PS X is bottom. Both should map the same; the prompt glyph differs.

Normalized Enum

Godot 4 uses Xbox-style names for the abstract button. JOY_BUTTON_A = bottom face; JOY_BUTTON_B = right; etc. Engine maps physical buttons to this enum.

Show Right Glyphs

var kind = Input.get_joy_name(0)
if "PS" in kind:
    prompt.texture = ps_x
else:
    prompt.texture = xbox_a

Detect controller family via name string; swap glyphs. The button mapping doesn’t need to change.

SDL Game Controller DB

Godot uses SDL’s controller DB internally. Custom controllers can be added via Input Map — remap deviations for fringe pads.

Stick / Trigger Axes

Axes are normalized to −1 to 1. Triggers report 0 to 1 (or −1 to 1 on some pads — check Input.is_joy_axis_inverted).

Verifying

The same code works on Xbox and PS pads. Prompts show correct glyphs per pad family.

“Godot normalizes button indices. Swap glyphs based on detected family.”

Ship a glyph asset set per controller family (Xbox, PS, Switch, generic) — players notice if their pad shows the wrong icons.