4 #include "led_custom.h"
8 #include "tmk_core/common/eeprom.h"
12 backlight_config_t kb_backlight_config = {
15 .level = BACKLIGHT_LEVELS
19 bool eeprom_is_valid(void)
21 return (eeprom_read_word(((void*)EEPROM_MAGIC_ADDR)) == EEPROM_MAGIC &&
22 eeprom_read_byte(((void*)EEPROM_VERSION_ADDR)) == EEPROM_VERSION);
25 void eeprom_set_valid(bool valid)
27 eeprom_update_word(((void*)EEPROM_MAGIC_ADDR), valid ? EEPROM_MAGIC : 0xFFFF);
28 eeprom_update_byte(((void*)EEPROM_VERSION_ADDR), valid ? EEPROM_VERSION : 0xFF);
31 void eeprom_reset(void)
33 eeprom_set_valid(false);
37 void save_backlight_config_to_eeprom(){
38 eeprom_update_byte((uint8_t*)EEPROM_CUSTOM_BACKLIGHT, kb_backlight_config.raw);
41 void load_custom_config(){
42 kb_backlight_config.raw = eeprom_read_byte((uint8_t*)EEPROM_CUSTOM_BACKLIGHT);
45 void eeprom_init_kb(void)
47 // If the EEPROM has the magic, the data is good.
48 // OK to load from EEPROM.
49 if (eeprom_is_valid()) {
52 // Save the magic number last, in case saving was interrupted
53 eeprom_set_valid(true);
57 void matrix_init_kb(void){
60 palSetPadMode(PORT_WS2812, PIN_WS2812, PAL_MODE_ALTERNATE(0));
63 #ifdef RGBLIGHT_ENABLE
66 backlight_init_ports();
69 void matrix_scan_kb(void)
71 #ifdef RGBLIGHT_ENABLE
76 bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
79 if (record->event.pressed) {
80 kb_backlight_config.level = kb_backlight_config.level + 1;
81 if(kb_backlight_config.level > BACKLIGHT_LEVELS){
82 kb_backlight_config.level = BACKLIGHT_LEVELS;
84 backlight_set(kb_backlight_config.level);
85 save_backlight_config_to_eeprom();
89 if (record->event.pressed) {
90 kb_backlight_config.enable = !kb_backlight_config.enable;
91 if(kb_backlight_config.enable){
92 backlight_set(kb_backlight_config.level);
96 save_backlight_config_to_eeprom();
101 if (record->event.pressed) {
102 if(kb_backlight_config.level <= 1){
103 kb_backlight_config.level = 0;
105 kb_backlight_config.level = kb_backlight_config.level - 1;
107 backlight_set(kb_backlight_config.level);
108 save_backlight_config_to_eeprom();
112 if (record->event.pressed) {
113 kb_backlight_config.breathing = !kb_backlight_config.breathing;
115 save_backlight_config_to_eeprom();