[Enhanced input + Touch] "end touch" is never processed

EIC->BindAction(InputActions->Mobile_Tap, ETriggerEvent::Ongoing, this, &AMyPlayerPawn::Mobile_Tap);
EIC->BindAction(InputActions->Mobile_Tap, ETriggerEvent::Triggered, this, &AMyPlayerPawn::Mobile_Tap);

...

if(Instance.GetTriggerEvent() == ETriggerEvent::Ongoing)
    GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Blue, TEXT("Tap Ongoing"));
if(Instance.GetTriggerEvent() == ETriggerEvent::Triggered)
    GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Yellow, TEXT("Tap Triggered"));

Input action for this mapping is set to Released after 0.5s. Description of Released says “Triggers ongoing while above actuation threshold”. And “Triggers only once when falls below actuation threshold.”

In testing this example only Ongoing is ever fired.

With Tap the description is “Input must be actuated then released within TapReleaseTimeThreshold to Trigger”. In practice this will trigger the first time and then never again. If i set threshold to 1 second and release before that time, I see Tap Ongoing debug message repeated. If I go over that 1 second threshold, no Triggered event is fired and then no other input for this event works. There is no further ongoing event fired.

Would be great if we could get some clarification on how to use Enhanced input for things like Tap and Release with Touch Controls. I believe there are some bugs here, or perhaps I just have some misunderstanding.

Update: After more testing it seems there is no way to get the screen position of a touch event with Released as the selected trigger. When looking at Instance.GetValue() description it states “Will be Zero if event is not ETriggerEvent::Triggered!”. Because Triggered never fires, its always zero. The only events that ever fire with Released is Started, Ongoing, and Cancelled.

Pulse will trigger multiple times if Trigger Limit is 0. However it will only ever fire once if set to 1. And then it can never be fired again. Similar to Tap.