Date: Tue, 20 Aug 2013 12:00:01 GMT From: Hans Petter Selasky <hps@bitfrost.no> To: freebsd-usb@FreeBSD.org Subject: Re: usb/181425: USB keyboard with full N-key rollover not working Message-ID: <201308201200.r7KC017r024735@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: Hans Petter Selasky <hps@bitfrost.no> To: Andrey Zholos <aaz@q-fu.com> Cc: freebsd-gnats-submit@FreeBSD.org Subject: Re: usb/181425: USB keyboard with full N-key rollover not working Date: Tue, 20 Aug 2013 13:56:13 +0200 Hi, 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. 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. I'm not sure if it is better to use uhidd or ukbd for the purpose you want to use the keyboard. Thank you for your investigation! --HPS > > Ideally I would like to get this keyboard to work in normal protocol > with full rollover for perfectionist reasons, but I guess that would > require too many changes to ukbd.c and introduce overhead for the > majority of keyboards. > > > Patch attached with submission follows: > > --- sys/dev/usb/input/ukbd.c (revision 254515) > +++ sys/dev/usb/input/ukbd.c (working copy) > @@ -1130,8 +1130,12 @@ > HID_USAGE2(HUP_KEYBOARD, 0x00), > hid_input, 0, &sc->sc_loc_events, &flags, > &sc->sc_id_events)) { > - sc->sc_flags |= UKBD_FLAG_EVENTS; > - DPRINTFN(1, "Found keyboard events\n"); > + if (flags & HIO_VARIABLE) > + DPRINTFN(1, "Ignoring key bitmap\n"); > + else { > + sc->sc_flags |= UKBD_FLAG_EVENTS; > + DPRINTFN(1, "Found keyboard events\n"); > + } > } > > /* figure out leds on keyboard */ >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308201200.r7KC017r024735>