diff options
Diffstat (limited to 'users/konstantin')
-rw-r--r-- | users/konstantin/config.h | 13 | ||||
-rw-r--r-- | users/konstantin/konstantin.c | 65 | ||||
-rw-r--r-- | users/konstantin/konstantin.h | 29 | ||||
-rw-r--r-- | users/konstantin/rgb.c | 7 | ||||
-rw-r--r-- | users/konstantin/rgb.h | 12 | ||||
-rw-r--r-- | users/konstantin/tap_dance.c | 3 | ||||
-rw-r--r-- | users/konstantin/tap_dance.h | 12 |
7 files changed, 89 insertions, 52 deletions
diff --git a/users/konstantin/config.h b/users/konstantin/config.h index 4edab2baa..bc1987c35 100644 --- a/users/konstantin/config.h +++ b/users/konstantin/config.h @@ -13,11 +13,18 @@ #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 -#define TAP_HOLD_CAPS_DELAY 50 +#define TAPPING_TERM 200 +#define TAPPING_TOGGLE 2 #define UNICODE_CYCLE_PERSIST false #define UNICODE_SELECTED_MODES UC_WINC, UC_WIN, UC_LNX #define UNICODE_KEY_WINC KC_RGUI + +#define USB_POLLING_INTERVAL_MS 1 diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c index 9e3caca41..9cee25ac6 100644 --- a/users/konstantin/konstantin.c +++ b/users/konstantin/konstantin.c @@ -32,32 +32,21 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } switch (keycode) { - case CLEAR: + uint16_t kc; +#ifdef LAYER_FN + static bool fn_lock = false; + + case FNLK: if (record->event.pressed) { - SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE)); + fn_lock = !IS_LAYER_ON(L_FN); // Fn layer will be toggled after this } - 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; - -#ifdef LAYER_FN - static bool fn_lock; + break; case FN_FNLK: if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - fn_lock = !IS_LAYER_ON(L_FN); // Fn layer will be toggled after this + fn_lock = !IS_LAYER_ON(L_FN); } - return true; + break; #endif case KC_ESC: @@ -75,11 +64,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } #endif } - return true; + break; - default: - return true; + case CLEAR: + if (record->event.pressed) { + CLEAN_MODS( + SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE)); + ) + } + break; + + case DST_P_R: + kc = (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV; + CLEAN_MODS( + (record->event.pressed ? register_code16 : unregister_code16)(kc); + ) + break; + + case DST_N_A: + kc = (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT; + CLEAN_MODS( + (record->event.pressed ? register_code16 : unregister_code16)(kc); + ) + break; } + + return true; } __attribute__((weak)) @@ -91,7 +101,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 +110,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); +} diff --git a/users/konstantin/konstantin.h b/users/konstantin/konstantin.h index d43712b96..da2105831 100644 --- a/users/konstantin/konstantin.h +++ b/users/konstantin/konstantin.h @@ -13,6 +13,7 @@ #ifdef LAYER_FN #define FN MO(L_FN) + #define FNLK TG(L_FN) #define FN_CAPS LT(L_FN, KC_CAPS) #define FN_ESC LT(L_FN, KC_ESC) #define FN_FNLK TT(L_FN) @@ -22,9 +23,8 @@ #define NUMPAD TG(L_NUMPAD) #endif -#define KC_SYSR LALT(KC_PSCR) -#undef KC_BRK -#define KC_BRK LCTL(KC_PAUS) +#define BREAK LCTL(KC_PAUS) +#define SYSRQ LALT(KC_PSCR) #define MV_UP LCTL(KC_UP) #define MV_DOWN LCTL(KC_DOWN) @@ -46,16 +46,18 @@ #endif #define LCT_CPS LCTL_T(KC_CAPS) +#define RSF_SLS RSFT_T(KC_SLSH) -#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 +83,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); diff --git a/users/konstantin/rgb.c b/users/konstantin/rgb.c index a96cad019..fffa250f2 100644 --- a/users/konstantin/rgb.c +++ b/users/konstantin/rgb.c @@ -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 }; diff --git a/users/konstantin/rgb.h b/users/konstantin/rgb.h index 36a9d9cd7..cc7d91808 100644 --- a/users/konstantin/rgb.h +++ b/users/konstantin/rgb.h @@ -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; diff --git a/users/konstantin/tap_dance.c b/users/konstantin/tap_dance.c index ba1453fc0..4ec8caa63 100644 --- a/users/konstantin/tap_dance.c +++ b/users/konstantin/tap_dance.c @@ -107,12 +107,13 @@ 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), +#ifdef LAYER_FN [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), +#endif }; diff --git a/users/konstantin/tap_dance.h b/users/konstantin/tap_dance.h index d2f00c8cb..56889a19e 100644 --- a/users/konstantin/tap_dance.h +++ b/users/konstantin/tap_dance.h @@ -4,24 +4,26 @@ #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) +#ifdef LAYER_FN + #define LSFT_FN TD(TD_LSFT_FN) + #define RCTL_FN TD(TD_RCTL_FN) + #define FN_RCTL TD(TD_FN_RCTL) +#endif enum tap_dance { TD_DST_A_R, - TD_RAL_LAL, TD_RAL_RGU, TD_RCT_RSF, TD_RSF_RCT, +#ifdef LAYER_FN TD_LSFT_FN, TD_RCTL_FN, TD_FN_RCTL, +#endif }; |