extend search for Apple Function Key.

PR:		usb/144414
Submitted by:	Hans Petter Selasky
This commit is contained in:
Andrew Thompson 2010-03-11 21:57:01 +00:00
parent 3fed7cb2bd
commit abaa9bfe96
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=205040

View File

@ -876,28 +876,33 @@ ukbd_attach(device_t dev)
err = usbd_req_get_hid_desc(uaa->device, NULL, &hid_ptr, err = usbd_req_get_hid_desc(uaa->device, NULL, &hid_ptr,
&hid_len, M_TEMP, uaa->info.bIfaceIndex); &hid_len, M_TEMP, uaa->info.bIfaceIndex);
if (err == 0) { if (err == 0) {
uint8_t apple_keys = 0;
uint8_t temp_id; uint8_t temp_id;
/* investigate if this is an Apple Keyboard */ /* investigate if this is an Apple Keyboard */
if (hid_locate(hid_ptr, hid_len, if (hid_locate(hid_ptr, hid_len,
HID_USAGE2(HUP_CONSUMER, HUG_APPLE_EJECT), HID_USAGE2(HUP_CONSUMER, HUG_APPLE_EJECT),
hid_input, 0, &sc->sc_loc_apple_eject, &flags, hid_input, 0, &sc->sc_loc_apple_eject, &flags,
&sc->sc_kbd_id)) { &temp_id)) {
if (flags & HIO_VARIABLE) if (flags & HIO_VARIABLE)
sc->sc_flags |= UKBD_FLAG_APPLE_EJECT | sc->sc_flags |= UKBD_FLAG_APPLE_EJECT |
UKBD_FLAG_APPLE_SWAP; UKBD_FLAG_APPLE_SWAP;
if (hid_locate(hid_ptr, hid_len, DPRINTFN(1, "Found Apple eject-key\n");
HID_USAGE2(0xFFFF, 0x0003), apple_keys = 1;
hid_input, 0, &sc->sc_loc_apple_fn, &flags, sc->sc_kbd_id = temp_id;
&temp_id)) { }
if (flags & HIO_VARIABLE) if (hid_locate(hid_ptr, hid_len,
sc->sc_flags |= UKBD_FLAG_APPLE_FN | HID_USAGE2(0xFFFF, 0x0003),
UKBD_FLAG_APPLE_SWAP; hid_input, 0, &sc->sc_loc_apple_fn, &flags,
if (temp_id != sc->sc_kbd_id) { &temp_id)) {
DPRINTF("HID IDs mismatch\n"); if (flags & HIO_VARIABLE)
} sc->sc_flags |= UKBD_FLAG_APPLE_FN |
} UKBD_FLAG_APPLE_SWAP;
} else { DPRINTFN(1, "Found Apple FN-key\n");
apple_keys = 1;
sc->sc_kbd_id = temp_id;
}
if (apple_keys == 0) {
/* /*
* Assume the first HID ID contains the * Assume the first HID ID contains the
* keyboard data * keyboard data