@@ -1,5 +1,7 @@
#include QMK_KEYBOARD_H
#include "../../../alt_ctrl_shared/eeprom.h"
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
Expand All
@@ -25,151 +27,6 @@ enum ctrl_keycodes {
MD_BOOT // Restart into bootloader after hold timeout
};
typedef union {
uint32_t raw ;
struct {
uint8_t led_animation_id : 3 ,
led_lighting_mode : 2 ,
led_animation_breathing : 1 ,
led_enabled : 1 ,
led_animation_direction : 1 ;
uint8_t gcr_desired ;
uint8_t led_animation_speed ;
uint8_t nkro : 1 ,
_unused : 7 ;
};
} kb_config_t ;
kb_config_t kb_config ;
void load_saved_settings (void ) {
kb_config .raw = eeconfig_read_kb ();
led_animation_id = kb_config .led_animation_id ;
gcr_desired = kb_config .gcr_desired ;
led_lighting_mode = kb_config .led_lighting_mode ;
keymap_config .nkro = kb_config .nkro ;
bool prev_led_animation_breathing = led_animation_breathing ;
led_animation_breathing = kb_config .led_animation_breathing ;
if (led_animation_breathing && !prev_led_animation_breathing ) {
gcr_breathe = gcr_desired ;
led_animation_breathe_cur = BREATHE_MIN_STEP ;
breathe_dir = 1 ;
}
led_animation_direction = kb_config .led_animation_direction ;
led_animation_speed = kb_config .led_animation_speed ;
bool led_enabled = kb_config .led_enabled ;
I2C3733_Control_Set (led_enabled );
#ifdef CONSOLE_ENABLE
uprintf ("Loading saved settings from EEPROM:\n" );
uprintf (" led_animation_id %d\n" , led_animation_id );
uprintf (" gcr_desired %d\n" , gcr_desired );
uprintf (" led_lighting_mode %d\n" , led_lighting_mode );
uprintf (" nkro %d\n" , keymap_config .nkro );
uprintf (" led_animation_breathing %d\n" , led_animation_breathing );
uprintf (" led_animation_direction %d\n" , led_animation_direction );
uprintf (" led_animation_speed %f\n" , led_animation_speed );
uprintf (" led_enabled %d\n" , led_enabled );
#endif
}
void save_settings (void ) {
// Save the keyboard config to EEPROM
eeconfig_update_kb (kb_config .raw );
#ifdef CONSOLE_ENABLE
uprintf ("Saving settings to EEPROM\n" );
#endif
}
void sync_settings (void ) {
save_settings ();
load_saved_settings ();
}
void keyboard_post_init_kb (void ) {
#ifdef CONSOLE_ENABLE
uprintf ("Running keyboard post-init\n" );
#endif
load_saved_settings ();
}
void eeconfig_init_kb (void ) {
#ifdef CONSOLE_ENABLE
uprintf ("Running eeconfig_init_kb\n" );
#endif
kb_config .raw = 0 ;
kb_config .led_animation_id = 0 ;
kb_config .led_lighting_mode = 0 ;
kb_config .led_animation_breathing = false;
kb_config .led_enabled = true;
kb_config .led_animation_direction = 1 ;
kb_config .gcr_desired = LED_GCR_MAX ;
kb_config .led_animation_speed = 4 ;
kb_config .nkro = keymap_config .nkro ;
save_settings ();
}
void led_pattern_next (void ) {
kb_config .led_animation_id = (kb_config .led_animation_id + 1 ) % led_setups_count ;
sync_settings ();
}
void led_pattern_prev (void ) {
kb_config .led_animation_id = (kb_config .led_animation_id - 1 ) % led_setups_count ;
sync_settings ();
}
void led_mode_next (void ) {
kb_config .led_lighting_mode = (kb_config .led_lighting_mode + 1 ) % LED_MODE_MAX_INDEX ;
sync_settings ();
}
void gcr_desired_increase (void ) {
int brightness = kb_config .gcr_desired + LED_GCR_STEP ;
kb_config .gcr_desired = brightness > LED_GCR_MAX ? LED_GCR_MAX : brightness ;
sync_settings ();
}
void gcr_desired_decrease (void ) {
int brightness = kb_config .gcr_desired - LED_GCR_STEP ;
kb_config .gcr_desired = brightness < 0 ? 0 : brightness ;
sync_settings ();
}
void led_set_enabled (bool enabled ) {
kb_config .led_enabled = enabled ;
sync_settings ();
}
void led_set_animation_breathing (bool breathing ) {
kb_config .led_animation_breathing = breathing ;
sync_settings ();
}
void led_animation_speed_increase (void ) {
kb_config .led_animation_speed += 1 ;
sync_settings ();
}
void led_animation_speed_decrease (void ) {
kb_config .led_animation_speed = kb_config .led_animation_speed < 1
? 0
: kb_config .led_animation_speed - 1 ;
sync_settings ();
}
void nkro_toggle (void ) {
kb_config .nkro = !kb_config .nkro ;
sync_settings ();
}
keymap_config_t keymap_config ;
const uint16_t PROGMEM keymaps [][MATRIX_ROWS ][MATRIX_COLS ] = {
[0 ] = LAYOUT (
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR , KC_SLCK , KC_PAUS , \
Expand Down