Adding RID_TYPEHID RawInput support to user32
aric at codeweavers.com
Tue Jul 7 21:18:19 CDT 2015
On 7/7/15 10:30 AM, Nathan Schulte wrote:
> On 07/07/2015 07:37 AM, Aric Stewart wrote:
>> There are 3 places I can really use help.
>> 1) Review patches: I always love good reviews on my patches. Leads to stronger code.
>> 2) Above hid.dll: This is doing the development work on RawInput, Xinput, Dinput and such to become clients of the user level hid.dll functions to access joysticks and gamepads. This should mostly be learning the respective APIs and hooking them into HID. RawInput is probably the easiest as it does not do much with the HID reports other than just pass them on.
>> 3) Linux minidrivers: I have implemented the OS/X minidriver because that is what I am most familiar with. There is work to implement the linux and linuxinput minidrivers. This is for someone familiar with or wants to become familiar with the lower level linux interfaces.
> I just started researching #3, with trying to drive XInput by evdev; I'd like to contribute what I can here as well. Starting with the evdev minidriver seems right, and then RawInput will probably come next.
Here is a very nice reference and walk through for HID class minidrivers: http://flylib.com/books/en/18.104.22.168/1/
And of course the microsoft documentation: https://msdn.microsoft.com/en-us/library/jj131708%28v=vs.85%29.aspx
All the bits are not implemented or needed. So you can refer to the minidriver_osx.c module (when we get that far and it is committed) to see how much of a minidriver is needed.
The big question is will the underling linux parts give you access directly to the HID Report Descriptor and the HID Reports. If they do, such as the mac parts, then things are super easy. If they do NOT, then it gets much more complicated.
> I still wonder about my question earlier; about how RawInput manages shared resources in wineserver. Does the concern there play into how you design hid.dll/HIDclass?
Sorry, I have totally missed that question. I am not much of a wineserver person so that is going to be tough for me. But I have found that 90% of the time I think something is going to have to be in the wineserver it ends up not being one, so there is that possibility.
More information about the wine-devel