Input plugins: generate events from connected controllers
Much like the audio plugins, input devices should be abstracted behind a plugin mechanism. An input plugin would feed input events into the engine's input subsystem from any controllers specific to / configured in the plugin.
One input plugin should be able to generate any kind of input events, for instance mouse, joystick, and keyboard events.
See related old proposal: Input drivers
#16 Updated by danij about 3 years ago
There are other motivations for at least a virtualized abstraction. For example, while for the most-part we will be communicating with APIs that will all largely follow the same device / control / input abstractions there are countless uncommon controllers used for all kinds of purposes for various accessibility reasons.
Originally input customization features have been limited to console scripts, for the purposes of automating the generation of event sequences. Nowadays things are handled a bit differently, with bindable modifiers et al. Also, on game side we have a special case mechanism for handling cheat codes using a high priority event responder.
Architecturally it would be nice to deal with both issues. Perhaps we could leverage Doomsday Script here?