How can I make sure a function is called when two buttons are released?

I found a weird “bug”, PanCamera is set to left mouse + alt. If I let go of alt then let go of left mouse, the “released” function never gets called. This is engine version 4.01 if that matters. Is this a bug or am I doing something wrong?

	InputComponent->BindAction("PanCamera", IE_Pressed, this, &AMyGamePlayerController::OnPanCameraPressed);
	InputComponent->BindAction("PanCamera", IE_Released, this, &AMyGamePlayerController::OnPanCameraReleased);

}

void AMyGamePlayerController::OnPanCameraPressed()
{
	GetMyGameSpectatorPawn()->GetMyGameCameraComponent()->OnPanCameraPressed();
}

void AMyGamePlayerController::OnPanCameraReleased()
{
	GetMyGameSpectatorPawn()->GetMyGameCameraComponent()->OnPanCameraReleased();
}

Is this a bug or am I doing something wrong?

I believe the standard programmer answer would be that it is working as designed. Where designed may or not be what you desire.

The trouble comes from the fact that defining what a chorded key being Released means is a little bit ambiguous.

Does the key become released at the point that any key in the chord is released?
Does the key become released at the point that all keys in the chord have been released?
Or, as I decided to go with, does the key become released when the primary component is released while the
modifiers are down?

I think you could easily argue any of the interpretations as being correct (and trust me I did go round and round in circles thinking about it), but this approach was chosen as is consistent with the Pressed event semantics (fires when the primary component is pressed if the modifiers are down) and because of the way that our Actions are defined it was the simplest to implement interpretation.

So, really, relying on released events for chorded keys is probably a bit risky unless you like the interpretation I chose.

Apologies for any inconvenience.