Here is my wishlist for improvements of JInput:
a) throw away the concept of Controller instances having child Controllers:
I see no use in this - it is difficult to program a plugin supporting subcontrollers and makes it more difficult to use such a plugin. Furthermore there is no statement which set of Axis instances has to be grouped together as a subcontroller.
b) throw away the concept of portnumbers:
its of no use for the end user (player of a game) and nearly no platform/input device has meaningful data for it (eg PS2 has no numbered ports and USB is hierarchical, not numbered)
c) allow plugins to throw an exception out of their constructor which can be retrieved via a special listener registered at DefaultControllerEnvironment when the Controller array is requested
this makes plugin developement and usage (configuration probs) easier
d) make mice and keyboards ordinary input devices (no need to subclass Mouse/Keyboard):
this simplifies plugin development
e) revise the usage of Axis.Identifier:
do a little requirements engineering - what are the benefits of UUIDs for input devices and which problems do they really solve
f) introduce Axis.Type like Controller.Type and Controller.PortType:
this allows an application to search programmatically for certain kinds of hardware features
g) clean up core API:
eg. Axis.Identifier.KEYBOARD has ‘buttons’ as name
h) general:
- attract more people
- hold open discussions (involve users, not only API developers)
- urge people to implement plugins for other OSes (where Java 1.4 is available)
ok, thats a lot. Lets have a nice discussion on this
(would it be better to split this in several threads?)