InputManager provides an abstraction layer between physical input devices and abstract actions. Also supplies an API for configuring action key bindings.
It offers interfaces for various devices:
Example: