[Enhanced Input] Gesture keys (Pinch/Rotate/Flick) never release after touch ends — regression in 5.8

Summary

An Input Action mapped directly to a Gesture key (e.g. “Pinch”, EKeys::Gesture_Pinch)
keeps firing the Triggered event every frame indefinitely after all fingers are lifted
from the screen.

Cause:

  • In 5.8 the gesture keys became analog (FKeyDetails::Axis1D added in InputCoreTypes.cpp,
    ~line 753); in 5.5 they were Gesture-only, so IsAnalog() was false.
  • On release, UPlayerInput::InputGesture stores the last (non-zero) value into RawValue
    instead of 0, and gesture keys lack UpdateAxisWithoutSamples, so RawValue never decays.
  • UEnhancedPlayerInput’s “analog inputs pulse every non-zero tick” rule then treats the
    stuck RawValue as held every frame, so the default Down behavior stays Triggered.

Fix (any one):

  • Zero RawValue on IE_Released in UPlayerInput::InputGesture; or
  • Add UpdateAxisWithoutSamples to the gesture keys; or
  • Remove Axis1D from the gesture keys (restore 5.5 behavior).

What Type of Bug are you experiencing?

Gameplay

Steps to Reproduce

  1. Input Action IA_Pinch (Axis1D), no Triggers, no Modifiers.
  2. Map it to the “Pinch” gesture key in an IMC.
  3. Log its Triggered / Completed events.
  4. Do a two-finger pinch, then lift all fingers.

Expected Result

Triggered stops and Completed fires after release (as in 5.5).

Observed Result

Triggered keeps firing every frame forever; Completed never fires.

Affects Versions

5.8

Platform(s)

Windows

1 Like