Open JoergAtGithub opened 1 year ago
@JoergAtGithub
Maybe another way is to port the HID report parser to upstream HIDAPI. It will probably not accepted to the master branch due to license issues (the parser library is licensed under GPL). But maybe it is okay to live as a branch or a seperate repo.
Hi guys,
I wanted to use HID on windows 11, but ran into this issue. This issue has long been fixed in HIDAPI, but has not reached Supercollider due to the usage of the older fork. I implemented the mentioned specific fix for myself, but the proper way would be to use hidapi 0.14.0. I'm quite new to supercollider and even more new to application development. But I think this might be a nice first project to contribute. It's mainly testing I guess. @JoergAtGithub, @mcuee, if you are considering working on this, I would be more than happy to help and learn.
@pier3100
Just wondering why you need to use this fork and not upstream hidapi.
If you really need an HID report parser, you can use other tools or code base.
You can also fork HIDAPI if you really think the report parser is important for your use case.
For example, I didn't update any of the code in hidapi_parser.c
to use hid_get_report_descriptor
on all platforms. I basically only got it to build.
This hidapi version was forked by @tonyrog from a very old version of signal11/hidapi. It adds support for reading and parsing HID Report Descriptors for Linux/BSD (and adds hidapi2osc). Since version 0.14.0 upstream libusb/hidapi has a function
hid_get_report_descriptor
which returns the HID Report Descriptor on all operating systems including Windows and macOS. This means that you could use the code https://github.com/supercollider/hidapi/blob/7affd87c9c0426deec8a9bc7a33f5aee9eba1047/hidapi_parser/hidapi_parser.c#L1150-L1163 on all operating systems, with upstream libusb/hidapi 0.14.0 https://github.com/libusb/hidapi/releases/tag/hidapi-0.14.0And you get of cause all the other features, which were added to hidapi since the time of the fork, like support for Feature Reports, HID over Bluetooth LE, I2C and SPI, and a standard CMake build setup.