--- ukbd.c.orig 2007-10-05 11:50:35.000000000 +0400 +++ ukbd.c 2007-10-05 11:59:18.000000000 +0400 @@ -1423,6 +1423,7 @@ init_keyboard(ukbd_state_t *state, int *type, int flags) { usb_endpoint_descriptor_t *ed; + usbd_status err; *type = KB_OTHER; @@ -1447,6 +1448,14 @@ printf("ukbd: unexpected endpoint\n"); return EINVAL; } + + err = usbd_set_protocol(state->ks_iface, 0); + if (err) { + printf("ukbd: set boot protocol failed\n"); + return EIO; + } else { + DPRINTFN(5, ("boot protocol set\n")); + } /* Ignore if SETIDLE fails since it is not crucial. */ usbd_set_idle(state->ks_iface, 0, 0);