![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Was able to make a small modification to the existing Sony-Quirks HID driver for Linux to replace the stock HID Report Descriptor (basically, the device describing it's own protocol format) with one that works a lot better for actual use. All the buttons that can, only report as analog now, the 5 digital-only buttons report in correctly as digital-only buttons, AND the accelerometer data is available though I have to tweak the HID Report Descriptor a bit more to make it work best still.
Next, tweak the cross-pad to show up as a single pair of axes instead of four, so it's more usable as a left/right and up/down input. Then just need to add some tunables to switch some inputs back to pure-digital, and look into some code to process the accelerometer and MEMS gyroscope into simpler translation/rotation inputs in the actual input driver itself.
Last will be getting rumble and LED-control working, but I'm already looking at having to actually retrofit the kernel HID drivers to support out-right replacement of the HID Report Descriptor instead of simple in-place modification. I'm not sure if that invasive of a change will fly or not...
Oh, and a quick link for anyone else curious about the actual HID protocol: The USB Implementers Forum's HID Development Page has a link to their HID Descriptor Tool, and above that links to all the various HID documents. HID's very easy to tinker with, I'm finding out.
Next, tweak the cross-pad to show up as a single pair of axes instead of four, so it's more usable as a left/right and up/down input. Then just need to add some tunables to switch some inputs back to pure-digital, and look into some code to process the accelerometer and MEMS gyroscope into simpler translation/rotation inputs in the actual input driver itself.
Last will be getting rumble and LED-control working, but I'm already looking at having to actually retrofit the kernel HID drivers to support out-right replacement of the HID Report Descriptor instead of simple in-place modification. I'm not sure if that invasive of a change will fly or not...
Oh, and a quick link for anyone else curious about the actual HID protocol: The USB Implementers Forum's HID Development Page has a link to their HID Descriptor Tool, and above that links to all the various HID documents. HID's very easy to tinker with, I'm finding out.
(no subject)
Date: 2009-05-03 05:24 pm (UTC)http://qdot.github.com/libomron/
http://qdot.livejournal.com/224537.html
But yeah, if used for what it was meant for, it's fuckin' great. :3
Actually...
Date: 2009-05-04 04:42 am (UTC)And I may have to add another layer of Quirk-support, it looks like the PS3 is using the wrong byte-ordering for it's 10-bit accelerometers data, so I can't just say '16 bit field, 0-1023 logical range' successfully. There's a signed versus unsigned glitch in there too, will deal with that this morning now that I'm awake again.
Re: Actually...
Date: 2009-05-04 04:49 am (UTC)Re: Actually...
Date: 2009-05-04 05:24 am (UTC)I don't yet know the way to associate a HIDRAW with a USB device entry, mostly due to lack of research or any way to test it since I only have one device that will show up that way (my PS3 SixAxis/DS3) but that's a relatively minor limitation by comparison.
Also, most distro's don't pair up the HIDRAW's to have the same rights as the other Input devices, they stay in /dev/hidraw*, and are root:root by default still.