The input system will makes extensive use of the DirectX library's DirectInput architecture. The DirectInput architecture will allow the system to support a wide range of existing input devices.
Unfortunately, the existing DirectInput system limits its input devices to keyboards, joysticks, and mice. The proposed input system will also need to handle MIDI input devices, which are supported elsewhere in the DirectX library. This forces the system to implement its own input abstraction layer (see InputObject) so that MIDI devices can be supported on the same level as DirectInput devices. While this adds additional overhead to the system (both in terms of complexity and performance), it will allow easier device expansion in future iterations of the project.