#
305aff3f |
|
28-May-2011 |
Michael Lotz <mmlr@mlotz.ch> |
* Changed the way how devices are enumerated and protocol handlers are added to handle the different device classes. Handlers are now added based on the application collections that the HID descriptor describes instead of by enumerating the different report items inside the reports. This means that a device is now logically treated as a mouse when it comes with an application collection that designates it as a mouse, instead of when there is a report that contains an X and a Y axis. This resolves the conflicts that gamepads and joysticks were added as mice due to them containing such elements. This therefore fixes #4499 and opens up the way to properly handle other device types like joysticks (#7429), gamepads, tablets (#7354, #5989 and #7481) and so on. I'll work on gamepads/joysticks next and see where we stand for tablets later. * Added a few enumeration functions to HIDCollection to support the above. * Fix the root collection handling. A device doesn't describe a single root collection and then adds everything as a child. Instead it just has multiple collections on level 0. We account for that now by always creating an empty logical collection as the root collection where all the collections of the descriptor get added. * Rename the {Mouse|Keyboard}Device.{cpp|h} to {Mouse|Keyboard}ProtocolHandler.{cpp|h} as that more clearly describes their purpose. These classes are protocol handlers, i.e. they handle the ioctl based mouse and keyboard protocol between the driver and the input_server add-ons. * Change a lot of stuff to use references instead of pointers where it makes sense (not necessarily complete yet). I've tested this successfully on a keyboard with extended keys, a combo device with a keyboard with extended keys and a mouse, a mouse and a gamepad (that now doesn't do anything anymore) and found no regressions. However, since there are a lot of very varied ways how to describe such functions with HID, it's not too unlikely that some more curiously described devices will now stop working. These have to be handled case by case and their usages have to be added to the added to the appropriate handlers (or new handlers have to be written). Please test and create bug reports (preferrably including the report descriptor that is written out to /tmp). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41794 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6e499760 |
|
14-Mar-2011 |
Michael Lotz <mmlr@mlotz.ch> |
* Since the usages of the local state are now processed also for collections there is no need to do the usage page and usage id handling anymore. * As this also removes the only use of the global state it is removed as well. * Try the usage maximum as a fallback as well and print something if none of the usage sources are valid and the collection ends up without a proper usage. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40954 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5ba33c51 |
|
21-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Integrate reports/items some more. * Reorganize how items are added to collections. * Make collections useful for enumeration through that. * Added printing out of collections, reports and report items for easier verification of report parsing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30821 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
aaeffcf7 |
|
07-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Adding missing license headers. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30665 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e7fcf08d |
|
07-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Adding a complete HID parser and report handling facility. This is generic code, so should be reusable for bluethooth HID as well (which is the same). The only missing part so far is the logical collections that would allow nicer enumeration of the report structure but is otherwise not useful. It should support all of the HID specs except for usage aliases (even long items that aren't actually defined should just work if they ever are). Not integrated into the USB specific device framework and there are no actual drivers making use of provided functionallity. The parsing was tested and works for all of the 3 devices I had available, but actual interpretation of data is not tested as the driver side is missing. Will close that gap as a next step and then port the mouse and keyboard drivers to that framework. Eventually a generic driver that makes unknown fields available to userland apps in some way should be fairly easy to implement with that. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30664 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
305aff3f787ca5d2e0e5ef44fe3487ca3fb7adae |
|
28-May-2011 |
Michael Lotz <mmlr@mlotz.ch> |
* Changed the way how devices are enumerated and protocol handlers are added to handle the different device classes. Handlers are now added based on the application collections that the HID descriptor describes instead of by enumerating the different report items inside the reports. This means that a device is now logically treated as a mouse when it comes with an application collection that designates it as a mouse, instead of when there is a report that contains an X and a Y axis. This resolves the conflicts that gamepads and joysticks were added as mice due to them containing such elements. This therefore fixes #4499 and opens up the way to properly handle other device types like joysticks (#7429), gamepads, tablets (#7354, #5989 and #7481) and so on. I'll work on gamepads/joysticks next and see where we stand for tablets later. * Added a few enumeration functions to HIDCollection to support the above. * Fix the root collection handling. A device doesn't describe a single root collection and then adds everything as a child. Instead it just has multiple collections on level 0. We account for that now by always creating an empty logical collection as the root collection where all the collections of the descriptor get added. * Rename the {Mouse|Keyboard}Device.{cpp|h} to {Mouse|Keyboard}ProtocolHandler.{cpp|h} as that more clearly describes their purpose. These classes are protocol handlers, i.e. they handle the ioctl based mouse and keyboard protocol between the driver and the input_server add-ons. * Change a lot of stuff to use references instead of pointers where it makes sense (not necessarily complete yet). I've tested this successfully on a keyboard with extended keys, a combo device with a keyboard with extended keys and a mouse, a mouse and a gamepad (that now doesn't do anything anymore) and found no regressions. However, since there are a lot of very varied ways how to describe such functions with HID, it's not too unlikely that some more curiously described devices will now stop working. These have to be handled case by case and their usages have to be added to the added to the appropriate handlers (or new handlers have to be written). Please test and create bug reports (preferrably including the report descriptor that is written out to /tmp). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41794 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6e499760b3237ba6706ad54c6cf4143e12a00e50 |
|
14-Mar-2011 |
Michael Lotz <mmlr@mlotz.ch> |
* Since the usages of the local state are now processed also for collections there is no need to do the usage page and usage id handling anymore. * As this also removes the only use of the global state it is removed as well. * Try the usage maximum as a fallback as well and print something if none of the usage sources are valid and the collection ends up without a proper usage. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40954 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5ba33c51f2ce94cddeed22b796bac9123cf296a9 |
|
21-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Integrate reports/items some more. * Reorganize how items are added to collections. * Make collections useful for enumeration through that. * Added printing out of collections, reports and report items for easier verification of report parsing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30821 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
aaeffcf7a6e28d2fda83bf59f370319805073449 |
|
07-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Adding missing license headers. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30665 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e7fcf08d7661a3e0bd0684cd171d1f20a0c1f01a |
|
07-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Adding a complete HID parser and report handling facility. This is generic code, so should be reusable for bluethooth HID as well (which is the same). The only missing part so far is the logical collections that would allow nicer enumeration of the report structure but is otherwise not useful. It should support all of the HID specs except for usage aliases (even long items that aren't actually defined should just work if they ever are). Not integrated into the USB specific device framework and there are no actual drivers making use of provided functionallity. The parsing was tested and works for all of the 3 devices I had available, but actual interpretation of data is not tested as the driver side is missing. Will close that gap as a next step and then port the mouse and keyboard drivers to that framework. Eventually a generic driver that makes unknown fields available to userland apps in some way should be fairly easy to implement with that. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30664 a95241bf-73f2-0310-859d-f6bbb57e9c96
|