Update dev branch names: q5_dev → dev/q5, add dev/k17 for K17 Max
Add K17 Max build/flash commands with the correct ansi_encoder/rgb subvariant path
Document EEPROM layout, Keychron RGB behaviour, and DIP switch overlay approach based on lessons learned from PR #18
Changes
Branch names
q5_dev renamed to dev/q5 throughout
dev/k17 added as the K17 Max development branch
K17 Max
Build/flash commands use keychron/k17_max/ansi_encoder/rgb (the RGB variant; a separate white LED variant exists at ansi_encoder)
Keymap path corrected to keyboards/keychron/k17_max/ansi_encoder/rgb/keymaps/via/
EEPROM Layout Notes (new section)
Documents EECONFIG_RGB_MATRIX address and bitfield packing
Explains VIA_EEPROM_MAGIC_ADDR 544 pinning rule and when to raise it
Notes the #undef EECONFIG_KB_DATA_SIZE requirement
Keychron RGB (new section)
When and where to call eeconfig_init_custom_rgb() vs eeconfig_reset_custom_rgb()
Why kc_rgb_save() must call eeconfig_update_rgb_matrix()
The retail_demo_enable 0xFF bug and the load-path clamp that recovers it
default_per_key_led[] / default_region[] must be defined in board-specific code
DIP Switch (new section)
Documents the frame overlay approach and why direct rgb_matrix_mode() calls corrupt EEPROM state
## Summary
- Update dev branch names: `q5_dev` → `dev/q5`, add `dev/k17` for K17 Max
- Add K17 Max build/flash commands with the correct `ansi_encoder/rgb` subvariant path
- Document EEPROM layout, Keychron RGB behaviour, and DIP switch overlay approach based on lessons learned from PR #18
## Changes
**Branch names**
- `q5_dev` renamed to `dev/q5` throughout
- `dev/k17` added as the K17 Max development branch
**K17 Max**
- Build/flash commands use `keychron/k17_max/ansi_encoder/rgb` (the RGB variant; a separate white LED variant exists at `ansi_encoder`)
- Keymap path corrected to `keyboards/keychron/k17_max/ansi_encoder/rgb/keymaps/via/`
**EEPROM Layout Notes** (new section)
- Documents `EECONFIG_RGB_MATRIX` address and bitfield packing
- Explains `VIA_EEPROM_MAGIC_ADDR 544` pinning rule and when to raise it
- Notes the `#undef EECONFIG_KB_DATA_SIZE` requirement
**Keychron RGB** (new section)
- When and where to call `eeconfig_init_custom_rgb()` vs `eeconfig_reset_custom_rgb()`
- Why `kc_rgb_save()` must call `eeconfig_update_rgb_matrix()`
- The `retail_demo_enable` 0xFF bug and the load-path clamp that recovers it
- `default_per_key_led[]` / `default_region[]` must be defined in board-specific code
**DIP Switch** (new section)
- Documents the frame overlay approach and why direct `rgb_matrix_mode()` calls corrupt EEPROM state
- Rename dev branch references from q5_dev to dev/q5; add dev/k17 for
K17 Max work
- Add K17 Max build/flash commands using the correct rgb subvariant path
(keychron/k17_max/ansi_encoder/rgb) to distinguish from the white LED
variant
- Add EEPROM Layout Notes section documenting the Q5 Max address map,
VIA_EEPROM_MAGIC_ADDR pinning rules, and EECONFIG_KB_DATA_SIZE #undef
requirement
- Add Keychron RGB section capturing lessons from the persistence work:
when to call eeconfig_init_custom_rgb(), version stamp placement,
kc_rgb_save() mode persistence, retail_demo_enable 0xFF bug, and
extern array requirements
- Add DIP Switch section explaining the frame overlay approach and why
direct rgb_matrix_mode() calls must be avoided
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
q5_dev→dev/q5, adddev/k17for K17 Maxansi_encoder/rgbsubvariant pathChanges
Branch names
q5_devrenamed todev/q5throughoutdev/k17added as the K17 Max development branchK17 Max
keychron/k17_max/ansi_encoder/rgb(the RGB variant; a separate white LED variant exists atansi_encoder)keyboards/keychron/k17_max/ansi_encoder/rgb/keymaps/via/EEPROM Layout Notes (new section)
EECONFIG_RGB_MATRIXaddress and bitfield packingVIA_EEPROM_MAGIC_ADDR 544pinning rule and when to raise it#undef EECONFIG_KB_DATA_SIZErequirementKeychron RGB (new section)
eeconfig_init_custom_rgb()vseeconfig_reset_custom_rgb()kc_rgb_save()must calleeconfig_update_rgb_matrix()retail_demo_enable0xFF bug and the load-path clamp that recovers itdefault_per_key_led[]/default_region[]must be defined in board-specific codeDIP Switch (new section)
rgb_matrix_mode()calls corrupt EEPROM state