When WASD or arrow keys are used for navigation / camera control - I’m finding the current Engine - Input Project Settings bindings route to be mostly useless.
When WASD is configured as Axis Mappings the game takes a significant performance hit from the constant stream of events that continue even when a button is not pressed. However this approach is useful for quick prototyping since it is easy to wire and easy to continue a turn for as long as a key is held down.
Using Action Mappings for WASD, and doing it well, requires considerable effort for something that devs need so regularly. For example, bind A, D, Left and Right to ‘CharacterYaw.’ To implement smooth turns that happen for as long as the key is held down - the dev must implement something that probably involves managing a timer or watching key states in EventTick. This is because InputActions only send Pressed and Released Events.
Action Mappings really need a ‘repeats’ option. Something that sets up a timer based event - an event that provides a parameter for indicating time held down. I’d also like each mapping to have a ‘scale’ or ‘direction’ parameter (-1 or 1) so that the action can be used agnostically in the BP without the dev doing backflips to determine which specific key was pressed and which direction is called for (circumventing the point of using action mappings).
So maybe this is a new mapping section called Repeatable Action Mappings. Ideally the repeat rate could be configured in Project Settings and tweaked at run time.
Notice that I do want to put left and right directional controls under the same CharacterYaw action, not create unique ones. Whatever the timer implementation is, it should not impact the sister action CharacterPitch - so that diagonal movement is possible and so that repeat rates might be different between the two actions. Maybe these are special timers with user configurable names that can be modified and paused in code.
Repeatable actions would be useful for fire buttons and other things too - on keyboard, gamepad, mouse, etc.