Added snap click, per-key/mixed rgb, custom debounce, wireless config feature

This commit is contained in:
lokher
2025-05-30 23:55:10 +08:00
parent b507ea2216
commit c9049679ac
81 changed files with 3696 additions and 251 deletions
+26 -2
View File
@@ -633,7 +633,7 @@ void via_qmk_rgblight_save(void) {
#endif // QMK_RGBLIGHT_ENABLE
#if defined(RGB_MATRIX_ENABLE)
static uint8_t rgb_matrix_value_id_mask;
void via_qmk_rgb_matrix_command(uint8_t *data, uint8_t length) {
// data = [ command_id, channel_id, value_id, value_data ]
uint8_t *command_id = &(data[0]);
@@ -689,6 +689,7 @@ void via_qmk_rgb_matrix_set_value(uint8_t *data) {
// data = [ value_id, value_data ]
uint8_t *value_id = &(data[0]);
uint8_t *value_data = &(data[1]);
rgb_matrix_value_id_mask |= 0x01U << *value_id;
switch (*value_id) {
case id_qmk_rgb_matrix_brightness: {
rgb_matrix_sethsv_noeeprom(rgb_matrix_get_hue(), rgb_matrix_get_sat(), scale8(value_data[0], RGB_MATRIX_MAXIMUM_BRIGHTNESS));
@@ -715,7 +716,30 @@ void via_qmk_rgb_matrix_set_value(uint8_t *data) {
}
void via_qmk_rgb_matrix_save(void) {
eeconfig_update_rgb_matrix();
if (rgb_matrix_value_id_mask == (0x01U << id_qmk_rgb_matrix_brightness)) {
uint8_t *addr = (uint8_t*)EECONFIG_RGB_MATRIX + offsetof(rgb_config_t, hsv.v);
eeprom_write_byte(addr, rgb_matrix_config.hsv.v);
}
if (rgb_matrix_value_id_mask == (0x01U << id_qmk_rgb_matrix_effect)) {
uint8_t mode = (rgb_matrix_config.mode << 2) | rgb_matrix_config.enable;
eeprom_write_byte((uint8_t*)EECONFIG_RGB_MATRIX, mode);
}
if (rgb_matrix_value_id_mask == (0x01U << id_qmk_rgb_matrix_color)) {
uint8_t *addr = (uint8_t*)EECONFIG_RGB_MATRIX + offsetof(rgb_config_t, hsv.h);
eeprom_write_byte(addr, rgb_matrix_config.hsv.h);
addr = (uint8_t*)EECONFIG_RGB_MATRIX + offsetof(rgb_config_t, hsv.s);
eeprom_write_byte(addr, rgb_matrix_config.hsv.s);
}
if (rgb_matrix_value_id_mask == (0x01U << id_qmk_rgb_matrix_effect_speed)) {
uint8_t *addr = (uint8_t*)EECONFIG_RGB_MATRIX + offsetof(rgb_config_t, speed);
eeprom_write_byte(addr, rgb_matrix_config.speed);
}
rgb_matrix_value_id_mask = 0;
}
#endif // RGB_MATRIX_ENABLE