Keyboard can be set as Boot protocol by BIOS/UEFI/GRUB
then bus reset occurs before OS boots up.
OS(at least Windows10,11/Ubuntu23.04) expects device works
on Report protocol. Note that OS does not send SetProtocol(Report) here.
Device state should be initialized properly on bus reset.
https://github.com/tmk/tmk_keyboard/issues/763
TERM FUNC key sends a non-standard E0 12 E0 00(Make) and E0 F0 00 E0 F0 12(Break).
Therefore, we must no longer check for 0 codes in the CS2_E0 and CS2_E0_F0 states.
The "Term Func" key is mapped to "Volume Down" by default, since that matches the
keyboard geometry.
Cannot send system/consumer report while mouse is set
in boot protocol. Mouse, system and consumer report shares
one interface using different report IDs. In boot protocol
only mouse can report without report ID. If a report ID is
sent while in boot protocol it will be recognized as mosue
button state incorrectly by host.
A user reported that Mac ejects disc drive at startup when
using NeXT converter. Keeping mouse button pressed while
bootup forces Mac to eject disc.
The PS/2 controller code for Unicomp's current generation PS/2 keyboard
sends the wrong scancodes when Ctrl + Pause (which should be Break) is
pressed.
Instead of it sending the Break sequence...
E0 7E E0 F0 7E
... representing a press of Scroll Lock, which is Break because Ctrl is
being pressed, it instead sends...
E0 77
... representing a press of Num Lock, which is just the old way of
getting Pause.
Since the E0 77 coming from the controller is not a normal sequence,
this workaround does not interfere with Ctrl + Num Lock, which still
Pauses as it should.
SIEMENS_PCD_SUPPORT #747 code should be applied only for AT.
The code inhibits AT keyboard from sending by pulling clock line
down, this made XT keyboard support messed.