The input issue is because of the way that USB keyboard protocol is defined. A really interesting summary can be read here:
https://github.com/tmk/tmk_keyboard/blob/master/doc/USB_NKRO.txt
By default, the USB keyboard sends an 8-byte communication ("report") to the computer. The first byte contains a bitmap of the modifier keys (hence 8 modifier keys are possible). The second byte is typically either used as an id code or for some media keys or simply ignored, and the remaining 6 bytes are used to send the key code for any currently-pressed keys (one byte each). The keyboard needs to be on the first endpoint for use in BIOS. This is where the limit of "6 keys pressed" comes from for USB keyboards. When you release a key, the keyboard sends an update with the new list of pressed keys. If more than 6 keys are held, the keyboard is supposed to send a series of over-run bytes instead of the keys.
BIOS expects to receive USB keyboard reports in exactly this format. It doesn't normally load a full USB processing stack, so it can't ask the keyboard how it'll report pressed keys, and thus it has no way to identify/use any alternative report formats. Any keyboard that expects to be usable in the BIOS therefore needs to report it's keypresses in this format *when in boot mode*. Most USB keyboards therefore only ever use this mode of reporting - I suspect so that they have the maximum amount of compatibility with various computers with often buggy bios code.
Computer OS's however do usually load a full USB processing stack, and there are a few alternative USB keyboard report modes that are part of the normal USB HID protocol (and thus don't need any special/additional drivers on the computer's side) - a few extended byte reports (which Windows has some bugs with - see the summary link above) and the option of bitmap reports (each bit in the report represents one specific key). There's some projects using teensy 2/2++ chips that have implemented full N-Key reports using a bitmap report mode instead -
TMK's keyboard adapter here and
Soarer's adapter at GeekHack here. It's from their code/discussion (and then integrating it into what I needed) that I learned about how that stuff all worked - and I freely admit I learned only *just* enough about it to integrate it into my Teensy2++ gaming keypad (as an additional endpoint so that the original boot one was unchanged and wouldn't cause issues).
I would be keen to get some instructions on how to correctly update the USB endpoints for the Teensy3 to add the additional NKRO keyboard report for that, as I'm in the process of upgrading/migrating my gaming keypad (where I need more than 6-kro) from a Teensy2++ to a Teensy3.