Alerts
Please alerts me any activityon myaccounts. thanks. ___ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"
Re: usb/181425: commit references a PR
The following reply was made to PR usb/181425; it has been noted by GNATS. From: dfil...@freebsd.org (dfilter service) To: bug-follo...@freebsd.org Cc: Subject: Re: usb/181425: commit references a PR Date: Tue, 20 Aug 2013 16:21:17 + (UTC) Author: hselasky Date: Tue Aug 20 16:21:05 2013 New Revision: 254572 URL: http://svnweb.freebsd.org/changeset/base/254572 Log: Force keyboards which don't have the required HID fields to use the USB BOOT protocol for now. PR: usb/181425 Submitted by:Andrey Zholos MFC after: 4 weeks Modified: head/sys/dev/usb/input/ukbd.c Modified: head/sys/dev/usb/input/ukbd.c == --- head/sys/dev/usb/input/ukbd.c Tue Aug 20 14:59:31 2013 (r254571) +++ head/sys/dev/usb/input/ukbd.c Tue Aug 20 16:21:05 2013 (r254572) @@ -1130,8 +1130,12 @@ ukbd_parse_hid(struct ukbd_softc *sc, co 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 keyboard event control\n"); + } else { + sc->sc_flags |= UKBD_FLAG_EVENTS; + DPRINTFN(1, "Found keyboard event array\n"); + } } /* figure out leds on keyboard */ ___ svn-src-...@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org" ___ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"
Re: usb/181425: USB keyboard with full N-key rollover not working
The following reply was made to PR usb/181425; it has been noted by GNATS. From: Andrey Zholos To: Hans Petter Selasky Cc: freebsd-gnats-sub...@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. ___ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"
Re: usb/181425: USB keyboard with full N-key rollover not working
I have an opposite problem on my Dell workstation: my keyboard with N-key rollover doesn't work in BIOS or FreeBSD boot menu, but does work after the kernel is loaded... I didn't know keyboards could be problematic. ___ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"
Re: usb/181425: USB keyboard with full N-key rollover not working
The following reply was made to PR usb/181425; it has been noted by GNATS. From: Hans Petter Selasky To: Andrey Zholos Cc: freebsd-gnats-sub...@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 */ > ___ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"
usb/181425: USB keyboard with full N-key rollover not working
>Number: 181425 >Category: usb >Synopsis: USB keyboard with full N-key rollover not working >Confidential: no >Severity: non-critical >Priority: low >Responsible:freebsd-usb >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Aug 20 11:10:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Andrey Zholos >Release:FreeBSD 10.0-CURRENT #0 r254515 >Organization: >Environment: FreeBSD ukbd-test 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r254515: Mon Aug 19 15:58:40 EEST 2013 root@ukbd-test:/usr/obj/usr/src/sys/GENERIC amd64 >Description: The keyboard I am using is a Max Keyboard Nighthawk X9. It features full N-key rollover, which is supposed to allow pressing all keys at once, so it reports all keys as a bitmap, rather than the usual 6-byte array of keycodes. This confuses the ukbd driver. The relevant part of dmesg with hw.usb.ukbd.debug=1: ugen0.4: at usbus0 ukbd0: on usbus0 ukbd_attach: Parsing HID descriptor of 65 bytes ukbd_parse_hid: Found left control ukbd_parse_hid: Found right control ukbd_parse_hid: Found left shift ukbd_parse_hid: Found right shift ukbd_parse_hid: Found left alt ukbd_parse_hid: Found right alt ukbd_parse_hid: Found left GUI ukbd_parse_hid: Found right GUI ukbd_parse_hid: Found keyboard events ukbd_parse_hid: Found keyboard numlock ukbd_parse_hid: Found keyboard capslock ukbd_parse_hid: Found keyboard scrolllock ukbd_set_leds: leds=0x00 ukbd_set_leds: leds=0x00 kbd2 at ukbd0 ukbd_set_leds_callback: len=1, id=0 ukbd1: on usbus0 ukbd_intr_callback: actlen=8 bytes ukbd_intr_callback: modifiers = 0x ukbd_attach: Parsing HID descriptor of 37 bytes ukbd_parse_hid: Found left control ukbd_parse_hid: Found right control ukbd_parse_hid: Found left shift ukbd_parse_hid: Found right shift ukbd_parse_hid: Found left alt ukbd_parse_hid: Found right alt ukbd_parse_hid: Found left GUI ukbd_parse_hid: Found right GUI ukbd_parse_hid: Found keyboard events ukbd_set_leds: leds=0x00 ukbd_set_leds: leds=0x00 kbd3 at ukbd1 Most keys don't work and show this: ukbd_intr_callback: actlen=15 bytes ukbd_intr_callback: modifiers = 0x ukbd_intr_callback: actlen=15 bytes ukbd_intr_callback: modifiers = 0x Modifier keys (e.g. Ctrl) appear to work: ukbd_intr_callback: actlen=15 bytes ukbd_intr_callback: modifiers = 0x0001 ukbd_put_key: 0xe0 (224) pressed ukbd_intr_callback: actlen=15 bytes ukbd_intr_callback: modifiers = 0x ukbd_put_key: 0x4e0 (1248) released Multimedia keys don't do anything at all. Special profile keys (e.g. Fn+PF1) also appear to work: ukbd_intr_callback: actlen=8 bytes ukbd_intr_callback: modifiers = 0x ukbd_intr_callback: [0] = 0xf1 ukbd_put_key: 0xf1 (241) pressed ukbd_intr_callback: actlen=8 bytes ukbd_intr_callback: modifiers = 0x ukbd_put_key: 0x4f1 (1265) released ukbd_intr_callback: actlen=8 bytes ukbd_intr_callback: modifiers = 0x There are three HID descriptors: # uhidd -D /dev/ugen0.4 ugen0.4[0]-> Report descriptor dump: USAGE PAGE Generic Desktop(0x1) USAGE Keyboard(0x6)[Generic Desktop(0x1)] COLLECTION Application(1) USAGE PAGE Keyboard(0x7) USAGE MINIMUM Keyboard LeftControl(224) USAGE MAXIMUM Keyboard Right GUI(231) LOGICAL MINIMUM 0 LOGICAL MAXIMUM 1 REPORT SIZE 1 REPORT COUNT 8 INPUT ( Data Variable Absolute ) (2) REPORT SIZE 8 REPORT COUNT 1 INPUT ( Const Array Absolute ) (1) USAGE PAGE Keyboard(0x7) USAGE MINIMUM Reserved (no event indicated)(0) USAGE MAXIMUM Unknown Usage(255) LOGICAL MINIMUM 0 LOGICAL MAXIMUM 255 REPORT SIZE 8 REPORT COUNT 6 INPUT ( Data Array Absolute ) (0) USAGE PAGE LEDs(0x8) USAGE MINIMUM Num Lock(1) USAGE MAXIMUM Scroll Lock(3) LOGICAL MAXIMUM 1 REPORT SIZE 1 REPORT COUNT 3 OUTPUT ( Data Variable Absolute ) (2) REPORT COUNT 5 OUTPUT ( Const Array Absolute ) (1) END COLLECTION ugen0.4[0]-> Kernel driver is active ugen0.4[0]-> Abort attach since kernel driver is active ugen0.4[0]-> Please try running uhidd with option '-u' to detach the kernel drivers ugen0.4[1]-> Report descriptor dump: USAGE PAGE Consumer(0xc) USAGE Consumer Control(0x1)[Consumer(0xc)] COLLECTION Application(1) USAGE PAGE Consumer(0xc) USAGE MINIMUM Unassigned(0)