I came across a project on Ogre forum which had source available, and used Window's hooks to specifically capture (and being unobtrusive of client app) Window's Messages. Specifically, using something like: SetWindowsHookEx(WH_GETMESSAGE, GetMessageProc, hInstance, GetCurrentThreadId())
I'm not quite sure best way to design the new Keyboard/Mice type classes yet. Just putting this info out there in case any brave person wanted to write some new handlers based on this. But, would probably simply buffer the received events until the user called capture (so events would come in on the thread that the user calls capture on). But, the benefits of using window's messages would probably be:
* Mouse: possible to support multiple Mice
* Mouse: the speed/sensitivity/etc would be affected by the User's System settings - maybe good/maybe bad
* Keyboard: Possible improved Locale Handling
* Keyboard: Support for all features of keyboard that perhaps DirectInput doesn't expose
* Keyboard & Mouse: Would no longer need to pass in top-level window handle, so could work with Child Windows easily.
So, there are some gains. There may, however, also be some pitfalls. But, no way of knowing until doing such a task. Though, I don't have any ETA when I would be able to start/complete such a task. Just putting this out there
