[User] Update personal userspace and keymaps, add reactive underglow (#6410)
* Update MODERN_DOLCH_RED color * Remove unused RAL_LAL tap dance * Disable Space Cadet on all boards * Rework SEND_STRING_CLEAN into CLEAN_MODS, fix DST_P_R/DST_N_A * Disable unnecessary underglow animations * Rearrange feature flags in rules.mk files * Change custom colors from structs to defines * Add some explicit initializers * Add MODERN_DOLCH_CYAN color * Add IS_LAYER_ON_STATE()/IS_LAYER_OFF_STATE() macros * Add led_set_keymap() template function * Change underglow color based on Caps/Fn state * Preserve val when changing underglow colors * Only trigger Fn light for Fn layer * Refactor fn_light() and caps_light() slightly * Add comments to fn_light() and caps_light()
This commit is contained in:
		
							parent
							
								
									f204ed67f2
								
							
						
					
					
						commit
						36d3902504
					
				
					 14 changed files with 151 additions and 82 deletions
				
			
		| 
						 | 
				
			
			@ -13,6 +13,12 @@
 | 
			
		|||
#define NO_ACTION_MACRO
 | 
			
		||||
#define NO_ACTION_ONESHOT
 | 
			
		||||
 | 
			
		||||
#undef  RGBLIGHT_ANIMATIONS
 | 
			
		||||
#define RGBLIGHT_EFFECT_BREATHING
 | 
			
		||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
 | 
			
		||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
 | 
			
		||||
#define RGBLIGHT_EFFECT_SNAKE
 | 
			
		||||
 | 
			
		||||
#define PERMISSIVE_HOLD
 | 
			
		||||
#define TAPPING_TERM        200
 | 
			
		||||
#define TAPPING_TOGGLE      2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,26 +32,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
    case CLEAR:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
            SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    case DST_P_R:
 | 
			
		||||
        (record->event.pressed ? register_code16 : unregister_code16)(
 | 
			
		||||
            (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV
 | 
			
		||||
        );
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    case DST_N_A:
 | 
			
		||||
        (record->event.pressed ? register_code16 : unregister_code16)(
 | 
			
		||||
            (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT
 | 
			
		||||
        );
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
        uint16_t kc;
 | 
			
		||||
#ifdef LAYER_FN
 | 
			
		||||
        static bool fn_lock;
 | 
			
		||||
        static bool fn_lock = false;
 | 
			
		||||
 | 
			
		||||
    case FN_FNLK:
 | 
			
		||||
        if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
 | 
			
		||||
| 
						 | 
				
			
			@ -77,6 +60,28 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
 | 
			
		||||
    case CLEAR:
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
            CLEAN_MODS(
 | 
			
		||||
                SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    case DST_P_R:
 | 
			
		||||
        kc = (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV;
 | 
			
		||||
        CLEAN_MODS(
 | 
			
		||||
            (record->event.pressed ? register_code16 : unregister_code16)(kc);
 | 
			
		||||
        )
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    case DST_N_A:
 | 
			
		||||
        kc = (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT;
 | 
			
		||||
        CLEAN_MODS(
 | 
			
		||||
            (record->event.pressed ? register_code16 : unregister_code16)(kc);
 | 
			
		||||
        )
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    default:
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +96,7 @@ uint32_t layer_state_set_user(uint32_t state) {
 | 
			
		|||
    state = layer_state_set_keymap(state);
 | 
			
		||||
 | 
			
		||||
#ifdef LAYER_NUMPAD
 | 
			
		||||
    bool numpad = state & 1UL<<L_NUMPAD;
 | 
			
		||||
    bool numpad = IS_LAYER_ON_STATE(state, L_NUMPAD);
 | 
			
		||||
    bool num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK);
 | 
			
		||||
    if (numpad != num_lock) {
 | 
			
		||||
        tap_code(KC_NLCK);  // Toggle Num Lock to match Numpad layer state
 | 
			
		||||
| 
						 | 
				
			
			@ -100,3 +105,10 @@ uint32_t layer_state_set_user(uint32_t state) {
 | 
			
		|||
 | 
			
		||||
    return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__((weak))
 | 
			
		||||
void led_set_keymap(uint8_t usb_led) {}
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
    led_set_keymap(usb_led);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,15 +47,16 @@
 | 
			
		|||
 | 
			
		||||
#define LCT_CPS LCTL_T(KC_CAPS)
 | 
			
		||||
 | 
			
		||||
#ifdef SEND_STRING_CLEAN
 | 
			
		||||
    #undef  SEND_STRING
 | 
			
		||||
    #define SEND_STRING(string) {         \
 | 
			
		||||
            uint8_t ss_mods = get_mods(); \
 | 
			
		||||
            clear_mods();                 \
 | 
			
		||||
            send_string_P(PSTR(string));  \
 | 
			
		||||
            set_mods(ss_mods);            \
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
#define IS_LAYER_ON_STATE(state, layer)  ( (state) & (1UL << (layer)))
 | 
			
		||||
#define IS_LAYER_OFF_STATE(state, layer) (~(state) & (1UL << (layer)))
 | 
			
		||||
 | 
			
		||||
// Clear mods, perform action, restore mods
 | 
			
		||||
#define CLEAN_MODS(action) {       \
 | 
			
		||||
        uint8_t mods = get_mods(); \
 | 
			
		||||
        clear_mods();              \
 | 
			
		||||
        action;                    \
 | 
			
		||||
        set_mods(mods);            \
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
enum keycodes_user {
 | 
			
		||||
    CLEAR = SAFE_RANGE,
 | 
			
		||||
| 
						 | 
				
			
			@ -81,5 +82,6 @@ void keyboard_pre_init_keymap(void);
 | 
			
		|||
void eeconfig_init_keymap(void);
 | 
			
		||||
void keyboard_post_init_keymap(void);
 | 
			
		||||
 | 
			
		||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
 | 
			
		||||
bool     process_record_keymap(uint16_t keycode, keyrecord_t *record);
 | 
			
		||||
uint32_t layer_state_set_keymap(uint32_t state);
 | 
			
		||||
void     led_set_keymap(uint8_t usb_led);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,7 @@ const uint8_t PROGMEM RGBLED_SNAKE_INTERVALS[] = { 20, 50, 100 };
 | 
			
		|||
const uint8_t PROGMEM RGBLED_KNIGHT_INTERVALS[] = { 20, 50, 100 };
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
const HSV GODSPEED_BLUE    = { .h = 198, .s = 68,  .v = 255 };
 | 
			
		||||
const HSV GODSPEED_YELLOW  = { .h = 27,  .s = 153, .v = 255 };
 | 
			
		||||
const HSV MODERN_DOLCH_RED = { .h = 252, .s = 255, .v = 144 };
 | 
			
		||||
const HSV godspeed_blue     = { GODSPEED_BLUE };
 | 
			
		||||
const HSV godspeed_yellow   = { GODSPEED_YELLOW };
 | 
			
		||||
const HSV modern_dolch_cyan = { MODERN_DOLCH_CYAN };
 | 
			
		||||
const HSV modern_dolch_red  = { MODERN_DOLCH_RED };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,12 @@
 | 
			
		|||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
extern const HSV GODSPEED_BLUE;
 | 
			
		||||
extern const HSV GODSPEED_YELLOW;
 | 
			
		||||
extern const HSV MODERN_DOLCH_RED;
 | 
			
		||||
#define GODSPEED_BLUE     198, 68,  255
 | 
			
		||||
#define GODSPEED_YELLOW   27,  153, 255
 | 
			
		||||
#define MODERN_DOLCH_CYAN 110, 255, 108
 | 
			
		||||
#define MODERN_DOLCH_RED  251, 255, 108
 | 
			
		||||
 | 
			
		||||
extern const HSV godspeed_blue;
 | 
			
		||||
extern const HSV godspeed_yellow;
 | 
			
		||||
extern const HSV modern_dolch_cyan;
 | 
			
		||||
extern const HSV modern_dolch_red;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,12 +107,12 @@ void td_layer_mod_reset(qk_tap_dance_state_t *state, void *user_data) {
 | 
			
		|||
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
    [TD_DST_A_R] = ACTION_TAP_DANCE_DOUBLE(DST_ADD, DST_REM),
 | 
			
		||||
 | 
			
		||||
    [TD_RAL_LAL] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_LALT),
 | 
			
		||||
    [TD_RAL_RGU] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_RGUI),
 | 
			
		||||
    [TD_RCT_RSF] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RCTL, KC_RSFT),
 | 
			
		||||
    [TD_RSF_RCT] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RSFT, KC_RCTL),
 | 
			
		||||
 | 
			
		||||
    [TD_LSFT_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_LSFT, L_FN),
 | 
			
		||||
    [TD_RCTL_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_RCTL, L_FN),
 | 
			
		||||
 | 
			
		||||
    [TD_FN_RCTL] = ACTION_TAP_DANCE_LAYER_MOD(L_FN, KC_RCTL),
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,24 +4,24 @@
 | 
			
		|||
 | 
			
		||||
#define DST_A_R TD(TD_DST_A_R)
 | 
			
		||||
 | 
			
		||||
#define RAL_LAL TD(TD_RAL_LAL)
 | 
			
		||||
#define RAL_RGU TD(TD_RAL_RGU)
 | 
			
		||||
#define RCT_RSF TD(TD_RCT_RSF)
 | 
			
		||||
#define RSF_RCT TD(TD_RSF_RCT)
 | 
			
		||||
 | 
			
		||||
#define LSFT_FN TD(TD_LSFT_FN)
 | 
			
		||||
#define RCTL_FN TD(TD_RCTL_FN)
 | 
			
		||||
 | 
			
		||||
#define FN_RCTL TD(TD_FN_RCTL)
 | 
			
		||||
 | 
			
		||||
enum tap_dance {
 | 
			
		||||
    TD_DST_A_R,
 | 
			
		||||
 | 
			
		||||
    TD_RAL_LAL,
 | 
			
		||||
    TD_RAL_RGU,
 | 
			
		||||
    TD_RCT_RSF,
 | 
			
		||||
    TD_RSF_RCT,
 | 
			
		||||
 | 
			
		||||
    TD_LSFT_FN,
 | 
			
		||||
    TD_RCTL_FN,
 | 
			
		||||
 | 
			
		||||
    TD_FN_RCTL,
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue