Hi David, On Nov 21 2014 or thereabouts, David Herrmann wrote: > Hi > > With linux-3.18 uhid will gain GET/SET_REPORT support. 3.18 isn't released, yet, > but the uhid features are part of 3.18-rc5 so I think it's fine to rely on it. > We can always revert it if it will not be released (for whatever reason..). > > Benjamin wrote these 4 patches about 2 months ago and I promised to fix a few > bugs and send them upstream. I already feel bad for letting them rot for 2 > months.. sorry! No problems from my side. As long as it gets applied in the end, that's fine (or at least that the features are implemented). > > Anyway, I fixed the ID tracking, some typos, and fixed handling of devices that > dont send report IDs in GET_REPORT. Patches should be straightforward. The > GET/SET_REPORT feature is important for nearly all non-standard HID device > drivers. It's used to query and modify device behavior. With this in place, we > should be able to use all the kernel hid drivers via uhid/hog. Yay, thanks for that! > > Benjamin has an example program to modify MS Arc Surface Touch mouse behavior, > which needs these patches to query/modify the device. See: > https://github.com/bentiss/mstouchmouse/tree/WIP-USB > (If you check it out, make sure to use the WIP-USB branch! You should also apply > the diff below, to make sure it works even if the report-ID is not prepended.) > > Works fine with my devices here! > David > > > diff --git a/set_touchmode.c b/set_touchmode.c > index 7e5d59a..0e6f412 100644 > --- a/set_touchmode.c > +++ b/set_touchmode.c > @@ -48,6 +48,11 @@ static int get_report(int fd, unsigned char id, ... > } else { > printf("Report data (%d):\n\t", id); > pr_buffer(buf, res); > + /* prepend report-ID if not sent by device */ > + if (res > 0 && buf[0] != id) { > + memmove(buf + 1, buf, (res >= len) ? (res - 1) : res); > + buf[0] = id; > + } > } > return res; > } Committed and pushed to the repo, so there will be no need to apply it now :) Cheers, Benjamin > > Benjamin Tissoires (4): > hog: import latest uhid.h definition > hog: break out the report retrieval in its own function > hog: implement get_report functionality > hog: implement set_report functionality > > profiles/input/hog.c | 204 +++++++++++++++++++++++++++++++++++++++++---- > profiles/input/uhid_copy.h | 117 +++++++++++++++++++++++--- > 2 files changed, 292 insertions(+), 29 deletions(-) > > -- > 2.1.3 > -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html