summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorMartin Pieuchot <mpi@cvs.openbsd.org>2014-04-27 13:32:05 +0000
committerMartin Pieuchot <mpi@cvs.openbsd.org>2014-04-27 13:32:05 +0000
commit02214cf404d93d1fd99c350af6a580660b958551 (patch)
tree950594b8cb2613a3741754b5472662c0f9202a2e /sys/dev
parentceea3c03f2cbc98189b1dbd77ab4a750cede7878 (diff)
Do not let the bluetooth HID device, present in Apple machines with USB,
grab the console. This makes ddb(4) usable with any simple wired USB keyboard on G3/G4 machines that do not have adb(4) input devices, on G5s and certainly on some MacBooks too. ok andre@, miod@
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/usb/ukbd.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/dev/usb/ukbd.c b/sys/dev/usb/ukbd.c
index 4c604e4205a..c6589d02569 100644
--- a/sys/dev/usb/ukbd.c
+++ b/sys/dev/usb/ukbd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ukbd.c,v 1.65 2014/04/24 09:40:28 mpi Exp $ */
+/* $OpenBSD: ukbd.c,v 1.66 2014/04/27 13:32:04 mpi Exp $ */
/* $NetBSD: ukbd.c,v 1.85 2003/03/11 16:44:00 augustss Exp $ */
/*
@@ -212,6 +212,7 @@ ukbd_attach(struct device *parent, struct device *self, void *aux)
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, struct device *self, void *aux)
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) {