Improved control-action binding model Input devices generate input events for their controls, where a "control" is the physical button/stick/mechanism that actually generated the event. ControlManagers bind actions to these controls, and any input events for that control will be tagged with the action. The engine can then filter the input event stream by action to get the relevant input events. This decouples device controls from engine actions, which makes it easier to later implement control remapping.