Main > Main Forum
Bluetooth Keyboard Interface Board
MonMotha:
I don't know as much about BT HID. I know it's derived from/similar to USB HID. BT HID may mandate boot protocol mode. There may also be an old pre-HID BT keyboard standard that works more like the PS/2 keyboard interface which sends key up/down events rather than just continually reporting on which keys are pressed like HID does. BT in general carries a lot of legacy cruft left over from the early days when it had to work with very dumb phones and such. It didn't have the benefit of an early, open standardization process focusing on comparatively capable hosts like USB HID did.
The 6 key limit on USB definitely comes from boot protocol, and there's nothing that says you can only make a keyboard that runs only in boot protocol mode - the standard is fairly clear about this. The standard DOES require that keyboards use array format data (list of keycodes), rather than variable (bitfield of keys), though I've found that at least Linux and Windows XP and newer will accept variable format data on keyboards. The standard does not require that the array length be limited to 6 when not operating in boot protocol mode, and one could simply increase the length of the array to the point where rollover is extremely unlikely (more than you have fingers) or impossible (equal to the number of keys on the keyboard) at the expense of making the report huge. I'm not sure if the recommendation that the OS actively change the device from boot protocol to report protocol is actually implemented by anything; I've never tested for this.
See appendix B and C of the USB HID 1.1 standard.
Things like keyboard encoders that aren't actual keyboards generally have no need to be boot devices and hence don't need to worry about boot protocol at all.