* Add H50 keyboard from huytbt
Add H50 keyboard
The H50 is a mini keyboard with a 50 percent layout. The keyboard consists of 53 keys.
* Optimize code
* Optimize keymap code
* Optimize code H50 keyboard
* refactor default keymap
- shorten layer names
- KM_QWERTY -> _QW
- KM_MEDIA -> _MD
- KM_GUI_LOCK -> _GL
- use QMK-native keycode aliases
- use four-space indent
- grid-align keycodes
* remove third layer from default keymap
The third layer only serves to disable the GUI keys, which we can do with a keycode.
* update default keymap readme
* ghost_squid.h: add matrix diagram
* add LAYOUT_fullsize_ansi
* add LAYOUT_fullsize_iso
* use LAYOUT_fullsize_iso macro in default keymap
Refactor the default keymap to use the new LAYOUT_fullsize_iso macro.
* remove LAYOUT macro
Same matrix as LAYOUT_fullsize_iso, but in a different assignment order.
* enable Community Layout support
* rename LAYOUT_65_ansi_blocker_tsangan to LAYOUT_65_ansi_blocker_tsangan_split_bs
Layout was implemented with Split Backspace.
* rename LAYOUT_65_iso_blocker_7u_spc to LAYOUT_65_iso_blocker_tsangan_split_bs
* rules.mk: update Community Layout support setting
* mb65s.h: update matrix diagram
* add LAYOUT_65_ansi_blocker
* add LAYOUT_65_iso_blocker
* add LAYOUT_65_ansi_blocker_tsangan
* add LAYOUT_65_iso_blocker_tsangan
* move Community Layout support to info.json
* update Community Layout support
In #18631 some IN notification callbacks that were doing nothing were
removed, which should be a valid thing to do (ChibiOS HAL checks the
`in_cb` and `out_cb` pointers for being non-NULL before invoking those
optional callbacks). However, it turned out that some less popular USB
LLDs (KINETIS and MIMXRT1062) have their own checks for those pointers,
and (incorrectly) skip the ChibiOS callback handling when those pointers
are NULL, which breaks the code for the `USB_USE_WAIT` configuration
option (the waiting thread never gets resumed if the corresponding
callback pointer is NULL).
Add those dummy callbacks again (but use a single function for all of
them instead of individual ones for each endpoint); this restores the
KINETIS and MIMXRT1062 boards to the working state while the LLDs are
getting fixed.