Focused reference · Unreal Engine 5.8

Triggers and modifiers

unreal-enhanced-input/references/triggers-modifiers.md

Processing order

Raw device value → mapping/action modifiers → triggers → ETriggerEvent callbacks.

Use modifiers for values and triggers for activation conditions.

Modifier patterns

  • Dead Zone: suppress small analog noise; choose axial or radial behavior deliberately.
  • Scalar: sensitivity or axis gain.
  • Negate: invert selected axes or turn positive digital keys into negative input.
  • Swizzle Input Axis Values: move a 1D key value to another axis.
  • Response/dead-zone custom modifier: only when built-ins cannot express the device curve.
  • World-space modifier: only when the receiver truly needs world-space input.

For WASD feeding Axis2D, Epic's documented pattern is:

KeyDesired valueMapping modifiers
W+YSwizzle axis
A−XNegate
S−YNegate + Swizzle axis
D+XNone

Normalize/clamp only when the design requires it. Diagonal keyboard accumulation and analog magnitude must be tested rather than assumed.

Trigger patterns

  • Pressed: one trigger as actuation crosses the threshold.
  • Released: trigger on release after actuation.
  • Hold: trigger after held duration; can be one-shot or repeated by configuration.
  • Hold And Release: trigger on release after minimum hold.
  • Tap: press/release within threshold.
  • Pulse: repeated interval while actuated.
  • Chord: requires another Input Action.
  • Blocker: prevents success when its condition succeeds.

Event binding semantics

EventUse
StartedBegin evaluation/presentation, such as charging feedback
OngoingShow incomplete hold/tap evaluation; may fire each tick
TriggeredExecute successful semantic intent; repetition depends on trigger
CompletedHandle normal end after a triggered action
CanceledHandle release/interruption before success

Bind only the events the design needs. A raw action with no one-shot trigger can produce Triggered repeatedly while actuated; do not use it for a one-shot action without deliberate trigger/event design.

Trigger composition

Explicit triggers require at least one explicit success, implicit triggers all must succeed, and blocker success forces failure. When mixing types, write a truth table and inspect showdebug enhancedinput. Do not infer AND/OR behavior from asset ordering.

Stateful custom classes

UE 5.8 preserves trigger/modifier state more reliably across mapping rebuilds. Stateful custom Blueprint/C++ triggers and modifiers should implement the current reinstancing callbacks so state transfers when mappings are rebuilt without semantic change.