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
- Input Action IA_Pinch (Axis1D), no Triggers, no Modifiers.
- Map it to the “Pinch” gesture key in an IMC.
- Log its Triggered / Completed events.
- 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