1
0
Fork 0

[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:
Konstantin Đorđević 2019-07-25 21:31:40 +02:00 committed by Drashna Jaelre
parent f204ed67f2
commit 36d3902504
14 changed files with 151 additions and 82 deletions

View file

@ -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

View file

@ -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);
}

View file

@ -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);

View file

@ -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 };

View file

@ -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;

View file

@ -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),
};

View file

@ -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,
};