Date: Tue, 20 Aug 2013 13:20:01 GMT From: Andrey Zholos <aaz@q-fu.com> To: freebsd-usb@FreeBSD.org Subject: Re: usb/181425: USB keyboard with full N-key rollover not working Message-ID: <201308201320.r7KDK1SK040917@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR usb/181425; it has been noted by GNATS. From: Andrey Zholos <aaz@q-fu.com> To: Hans Petter Selasky <hps@bitfrost.no> Cc: freebsd-gnats-submit@FreeBSD.org Subject: Re: usb/181425: USB keyboard with full N-key rollover not working Date: Tue, 20 Aug 2013 16:12:25 +0300 > Have you looked into the USB HID specification from USB.org regarding > this? I think USB keyboard stuff is explicitly defined. You are right > that we don't support more than a few simultaneously pressed keys, and > that would reguire a bit more changes in ukbd driver. Yes, I looked, it was interesting. I was kind of disappointed afterwards when I realized that the drivers (not just the kernel but uhidd and Linux) supported just a specific subset of the possible descriptors. > Instead of applying a quirk, maybe ukbd.c could switch to boot-proto > automatically when HIO_VARIABLE is set? It is simply a so-called USB > control request. Exactly! That's the point of the patch. The descriptor parser currently assumes that if a keyboard usage range starts at 0, then it must be an array of bytes. It should also make sure that flags doesn't have HIO_VARIABLE (check added by this patch), and maybe that sc_loc_events.size == 8. The actual switch to boot protocol happens at ukbd.c:1241 - not because of a quirk, but be because now, with this additional check, !(sc->sc_flags & UKBD_FLAG_EVENTS). > I'm not sure if it is better to use uhidd or ukbd for the purpose you > want to use the keyboard. Probably uhidd is the best place for full rollover support. It's needed anyway to support the multimedia keys. But currently it makes the same assumptions as ukbd about the events buffer and so doesn't work. Of course, ukbd has to work with the keyboard at least in boot protocol, otherwise you need to use a different keyboard to install uhidd.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308201320.r7KDK1SK040917>