On Sun, Mar 28, 2010 at 09:51:17PM -0300, Mauro Carvalho Chehab wrote: > > I spoke too soon... removing the index causes a problem at the read ioctl: there's no way > to retrieve just the non-sparsed values. > > There's one solution that would allow both read/write and compat to work nicely, > but the API would become somewhat asymmetrical: > > At get (EVIOCGKEYCODEBIG): > use index/len as input and keycode/scancode as output; > > At set (EVIOCSKEYCODEBIG): > use scancode/keycode/len as input (and, optionally, index as output). > This was exactly the approach I had in mind when I suggested using indexes. > Having it asymmetrical doesn't sound good, but, on the other hand, > using index for > the set function also doesn't seem good, as the driver may reorder the entries after > setting, for example to work with a binary tree or with hashes. I don't think the assymetry is really a problem. As I see it, there are basically two user cases: 1) Userspace wants scancode X to generate keypress Y (In which case userspace doesn't care one iota what the index is) 2) Userspace wants to get the current keytable from the kernel (In which case a loop with an index from 0 to n is appropriate) and, possibly: 3) Userspace wants to know what keycode (if any) scancode X generates (In which case approach 2 will work just as well, but this usecase seems a bit contrived anyway...) -- David Härdeman -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html