I discovered that it is the usbhid that controls my USB keyboard by default. I discovered it by doing rmmod usbhid. When I removed usbhid the usb keyboard stopped working. Note that usbkbd was not yet inserted. Then I inserted usbkbd, then keyboard started working again. If the keyboard can be handled by the generic driver - usbhid - then why do we need a separate usbkbd?
Why do we need a usbkbd driver when there is usbhid?
linux;linux kernel;drivers;usb;usb device
There is an answer in Kernel documentation:3.1.2 usbmouse~~~~~~~~~~~~~~For embedded systems, for mice with broken HID descriptors and just anyother use when the big usbhid wouldn't be a good choice, there is theusbmouse driver. It handles USB mice only. It uses a simpler HIDBPprotocol. This also means the mice must support this simpler protocol. Notall do. If you don't have any strong reason to use this module, use usbhidinstead.3.1.3 usbkbd~~~~~~~~~~~~Much like usbmouse, this module talks to keyboards with a simplifiedHIDBP protocol. It's smaller, but doesn't support any extra special keys.Use usbhid instead if there isn't any special reason to use this.From Documentation/input/input.txt