Object Oriented Input System
The open source library is aimed to be as C++ friendly as possible. The rest is pretty much like any other input library.
Input can be captured by inheriting from OIS::KeyListener?, OIS::MouseListener? or OIS::JoyStickListener? and by registering that derived object as receiver. OIS only distributes input from one sort of device to one listener, which inevitable explains the need for an InputManager of our own.
Whenever the user changes something about the input (key press, mouse moved, etc.), OIS distributes these events when the 'capture' function of the corresponding input device is called. That is called 'buffered mode' and allows for multiple things to happen during one tick.
OIS can be destroyed and loaded again to install new joysticks at runtime. The InputManager incorporates that feature.
Apart from the support for almost any kind of joystick with an arbitrary number of axis, OIS also supports the Wiimote and Force Feedback. However we haven't yet implemented this in Orxonox. Especially the Wiimote only works under Windows and we try to support any feature under all platforms.
More information about the OIS project can be found under: http://sourceforge.net/projects/wgois