> Date: Sat, 26 Apr 2014 17:57:30 +0200
> From: Martin Pieuchot <[email protected]>
>
> It's actually impossible to use a USB keyboard to enter ddb(8) on most
> of the G3/G4 that come with such keyboard since they have a bluetooth
> HID device that attaches as the console keyboard.
>
> I assume this is also the case on various x86 Apple laptops, but I don't
> have any hardware to test.
>
> Diff below work around that and let me use my keyboard in DDB.
>
> ok?
I believe that the bluetooth HID device is there to support wireless
keyboards. This diff will probably break using those as the console
keyboard. Probably not really an issue as:
1. Wired keyboard users probably still outnumber wireless keyboard users.
2. Wireless keyboards should be considered insecure, so not attaching
these as the console keyboard might be considered a good thing.
> Index: ukbd.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/usb/ukbd.c,v
> retrieving revision 1.65
> diff -u -p -r1.65 ukbd.c
> --- ukbd.c 24 Apr 2014 09:40:28 -0000 1.65
> +++ ukbd.c 26 Apr 2014 14:10:09 -0000
> @@ -212,6 +212,7 @@ ukbd_attach(struct device *parent, struc
> struct usb_hid_descriptor *hid;
> u_int32_t qflags;
> int dlen, repid;
> + int console = 1;
> void *desc;
> kbd_t layout = (kbd_t)-1;
>
> @@ -226,8 +227,16 @@ ukbd_attach(struct device *parent, struc
> sc->sc_hdev.sc_osize = hid_report_size(desc, dlen, hid_output, repid);
> sc->sc_hdev.sc_fsize = hid_report_size(desc, dlen, hid_feature, repid);
>
> + /*
> + * Since the HID-Proxy is always detected before any
> + * real keyboard, do not let it grab the console.
> + */
> + if (uha->uaa->vendor == USB_VENDOR_APPLE &&
> + uha->uaa->product == USB_PRODUCT_APPLE_BLUETOOTH_HCI)
> + console = 0;
> +
> qflags = usbd_get_quirks(sc->sc_hdev.sc_udev)->uq_flags;
> - if (hidkbd_attach(self, kbd, 1, qflags, repid, desc, dlen) != 0)
> + if (hidkbd_attach(self, kbd, console, qflags, repid, desc, dlen) != 0)
> return;
>
> if (uha->uaa->vendor == USB_VENDOR_APPLE) {
>
>