usb/181425: USB keyboard with full N-key rollover not working
Hans Petter Selasky
hps at bitfrost.no
Tue Aug 20 12:00:02 UTC 2013
The following reply was made to PR usb/181425; it has been noted by GNATS.
From: Hans Petter Selasky <hps at bitfrost.no>
To: Andrey Zholos <aaz at q-fu.com>
Cc: freebsd-gnats-submit at 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 */
>
More information about the freebsd-usb
mailing list