the main keyboard struct
usb key codes mapped into the first private region of unicode USBKeyOut must substract UNICODE_BELOW_256 to create valid u8 values to transmit
current keyboard state.
Different operating systems expect random unicode input as different key combinations unfortunatly, we can't detect what we're connected to, so the keyboard needs to provide some kinde of switch key.
KeyCodes not being used by anything by default so you're free to use these to assign macros/tapdances/leaders and what not.
Trait for things that can be converted to a u32 keycode ie. various integers and (usb) KeyCodes themselves
the handlers use this trait to generate their output
an identifer for an added handler to be used with Keyboard.output.enable_handler and consorts