I'm adding an abstract factory object class, that users can now register to allow supprting custom types. This will also help add in WiiMote support so that it appears as a regular joystick. Of course, now, I am also adding a createInputObject method to take the vendor name to allow you to try to specify something like createInputObject("WiiMote", OISJoyStick, true);
This will also allow you to create custom keyboard/mice factories in the long run. Say, for instance you want to support multiple mice.. Well, DirectInput only allows you to create one mouse, using a custom factory for mice, with a vendor name of your chosing to create the mouse, you could have your own factory using Window's messages (raw input) to handle multiple mice. Or, if you wanted to simulate something like a keyboard from a text file (for demo purposes), your custom keyboard factory could load in a text file, and create keyboard events through your own keyboard object.
Anyway, this should make the usage of custom devices easier. Got a lot of work to do, as this is a prety big refactoring of some creation code.