Be more generous when parsing the report descriptor:
authormiod <miod@openbsd.org>
Sun, 1 Aug 2010 21:37:08 +0000 (21:37 +0000)
committermiod <miod@openbsd.org>
Sun, 1 Aug 2010 21:37:08 +0000 (21:37 +0000)
commit633dae9f58e9e87eda3e3158b8c3f9d3e060a6c5
tree09553a2c1fed621dec476d9e81dfb2eaf58c895f
parentcb91f0f41557e80cbd1c5d8549f10a14ff6e41e2
Be more generous when parsing the report descriptor:
- parts of the report descriptor not in a format we expect are now ignored,
  instead of preventing attachment (e.g. hypothetical multi-bit modifiers).
- modifiers beyond MAXMOD are ignored.
- keycode arrays larger than MAXKEYCODE are clamped to MAXKEYCODE instead
  of being rejected.
- multiple keycode arrays are ignored.

This should allow rogue keyboards to attach and be usable up to a certain
extent.

Adapted from a diff sent by Loganaden Velvindron (first name at gmail), who
has a keyboard which keycode array is larger than MAXKEYCODE (but, like most
if not all USB keyboards out there, can only report up to three simultaneous
keypresses anyway).
sys/dev/usb/hidkbd.c