diff options
Diffstat (limited to 'users/konstantin/konstantin.c')
-rw-r--r-- | users/konstantin/konstantin.c | 65 |
1 files changed, 41 insertions, 24 deletions
diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c index 9e3caca414..9cee25ac66 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); +} |