~ruther/qmk_firmware

d633cf3ccbf1aed229ef92bdc2f2a1f4f67dd0ad — Konstantin Đorđević 6 years ago 55bae0a
[Keymap] Update personal userspace and keymaps (#6654)

* Enable Fn layer tap dances only if LAYER_FN is defined

* Update KBD6X keymap spacing to match LAYOUT spacing

* Add regular FNLK to userspace, update keymap comment labels

* Rename KC_BRK → BREAK, KC_SYSR → SYSRQ in userspace

* Change mousekey positions in KBD6X

* Disable Console in KBD6X to reduce firmware size

* Return false in process_record_* only when overriding existing keys

* Fix Caps light not working after LSFT_FN

* Refactor Fn/Caps light, fix sequencing issues
M keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c => keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c +50 -35
@@ 24,51 24,66 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
            unregister_code(KC_RCTRL);
            layer_off(L_RCTRL);
        }
        return false;

    default:
        return true;
        break;
    }

    return true;
}

static inline void fn_light() {
    rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
    rgblight_sethsv_noeeprom(modern_dolch_red.h, modern_dolch_red.s, rgblight_get_val());
}

static inline void caps_light() {
    rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
    rgblight_sethsv_noeeprom(modern_dolch_cyan.h, modern_dolch_cyan.s, rgblight_get_val());
}

static bool skip_caps = false;
static inline void restore_light() {
    rgblight_config_t saved = { .raw = eeconfig_read_rgblight() };
    rgblight_sethsv_noeeprom(saved.hue, saved.sat, saved.val);
    rgblight_mode_noeeprom(saved.mode);
}

static void fn_light(uint32_t state) {
static void check_light_layer(uint32_t state) {
    if (IS_LAYER_ON_STATE(state, L_FN)) {
        rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
        rgblight_sethsv_noeeprom(modern_dolch_red.h, modern_dolch_red.s, rgblight_get_val());
        skip_caps = true;
        fn_light();
    } else if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
        caps_light();
    } else {
        rgblight_config_t saved = { .raw = eeconfig_read_rgblight() };
        rgblight_sethsv_noeeprom(saved.hue, saved.sat, saved.val);
        rgblight_mode_noeeprom(saved.mode);
        restore_light();
    }
    // caps_light will be called automatically after this
}

static void caps_light(uint8_t usb_led) {
    if (skip_caps) {
        skip_caps = false;
        return;  // Skip calls triggered by the Fn layer turning on
    }
static void check_light_led(uint8_t usb_led) {
    if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
        rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
        rgblight_sethsv_noeeprom(modern_dolch_cyan.h, modern_dolch_cyan.s, rgblight_get_val());
        caps_light();
    } else if (IS_LAYER_ON(L_FN)) {
        fn_light();
    } else {
        fn_light(layer_state);  // Caps is off, check if Fn light should be on
        restore_light();
    }
}

static bool skip_led = false;

uint32_t layer_state_set_keymap(uint32_t state) {
    static uint32_t prev_state = L_BASE;
    if (IS_LAYER_ON_STATE(state, L_FN) != IS_LAYER_ON_STATE(prev_state, L_FN)) {
        fn_light(state);  // Fn state changed since last time
        check_light_layer(state);  // Fn state changed since last time
        skip_led = IS_LAYER_ON_STATE(state, L_FN);
        // led_set_keymap will be called automatically after this
    }
    return prev_state = state;
}

void led_set_keymap(uint8_t usb_led) {
    caps_light(usb_led);
    if (skip_led) {
        skip_led = false;
        return;  // Skip calls triggered by the Fn layer turning on
    }
    check_light_led(usb_led);
}

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {


@@ 80,7 95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
     * │LCtCps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter  │
     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
     * │LShiftFn│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│FnL│
     * │LShiftFn│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│FnF│
     * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
     *       │LGu│LAlt │           Space           │RAlGu│RCt│
     *       └───┴─────┴───────────────────────────┴─────┴───┘


@@ 90,28 105,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSPC,
        LCT_CPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,
        LSFT_FN, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, FN_FNLK,
        XXXXXXX, KC_LGUI, KC_LALT,                   KC_SPC,                    RAL_RGU, RCTRL,   XXXXXXX
        XXXXXXX, KC_LGUI, KC_LALT,                            KC_SPC,                             RAL_RGU, RCTRL,   XXXXXXX
    ),

    /* Function layer
     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
     * │   │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│
     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
     * │     │Hom│ ↑ │End│PgU│   │   │   │   │M3 │M1 │M↑ │M2 │ Del │
     * │     │Hom│ ↑ │End│PgU│   │   │   │   │M1 │M↑ │М2 │M3 │ Del │
     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
     * │      │ ← │ ↓ │ → │PgD│   │   │   │   │MW↑│M← │M→ │        │
     * │      │ ← │ ↓ │ → │PgD│   │   │   │   │M← │M↓ │M→ │        │
     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
     * │        │Mut│Vo-│Vo+│Ply│Prv│Nxt│App│MW←│MW→│M↓ │      │   │
     * │        │Mut│Vo-│Vo+│Ply│Prv│Nxt│App│MW↑│M4 │М5 │      │   │
     * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
     *       │   │     │            MW↓            │MAcl2│   │
     *       └───┴─────┴───────────────────────────┴─────┴───┘
     */
    [L_FN] = LAYOUT(
        _______, 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_INS,
        _______, KC_HOME, KC_UP,   KC_END,  KC_PGUP, _______, _______, _______, _______, KC_BTN3, KC_BTN1, KC_MS_U, KC_BTN2, KC_DEL,
        _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, KC_WH_U, KC_MS_L, KC_MS_R, _______,
        _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_APP,  KC_WH_L, KC_WH_R, KC_MS_D, _______, _______,
        XXXXXXX, _______, _______,                   KC_WH_D,                   KC_ACL2, _______, XXXXXXX
        _______, KC_HOME, KC_UP,   KC_END,  KC_PGUP, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_DEL,
        _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
        _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_APP,  KC_WH_U, KC_BTN4, KC_BTN5, _______, _______,
        XXXXXXX, _______, _______,                   KC_WH_D,                                     KC_ACL2, _______, XXXXXXX
    ),

    /* RCtrl layer


@@ 122,7 137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
     * │      │Mv←│Mv↓│Mv→│TNx│   │   │   │   │   │   │   │        │
     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
     * │        │RTg│RV-│RV+│RMd│   │   │   │M4 │M5 │   │      │   │
     * │        │RTg│RV-│RV+│RMd│   │   │   │   │   │   │      │   │
     * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
     *       │DPR│DstNA│                           │     │   │
     *       └───┴─────┴───────────────────────────┴─────┴───┘


@@ 131,7 146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLEAR,
        _______, TOP,     MV_UP,   BOTTOM,  TAB_PRV, _______, _______, _______, _______, _______, _______, _______, _______, DEL_NXT,
        _______, MV_LEFT, MV_DOWN, MV_RGHT, TAB_NXT, _______, _______, _______, _______, _______, _______, _______, _______,
        _______, RGB_TOG, RGB_VAD, RGB_VAI, RGB_MOD, _______, _______, _______, KC_BTN4, KC_BTN5, _______, _______, _______,
        XXXXXXX, DST_P_R, DST_N_A,                   _______,                   _______, _______, XXXXXXX
        _______, RGB_TOG, RGB_VAD, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______,
        XXXXXXX, DST_P_R, DST_N_A,                   _______,                                     _______, _______, XXXXXXX
    ),
};

M keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk => keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk +1 -1
@@ 1,7 1,7 @@
BACKLIGHT_ENABLE   = no
BOOTMAGIC_ENABLE   = no
COMMAND_ENABLE     = yes
CONSOLE_ENABLE     = yes
CONSOLE_ENABLE     = no
EXTRAKEY_ENABLE    = yes
MOUSEKEY_ENABLE    = yes
NKRO_ENABLE        = yes

M keyboards/maartenwut/wasdat/keymaps/konstantin/keymap.c => keyboards/maartenwut/wasdat/keymaps/konstantin/keymap.c +1 -1
@@ 15,7 15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤    ┌───┐
     * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │  RShift  │    │ ↑ │
     * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐
     * │LCtl│LGui│LAlt│         Space          │RAlt│RGui│FnLk│RCtl││ ← │ ↓ │ → │
     * │LCtl│LGui│LAlt│         Space          │RAlt│RGui│FnFL│RCtl││ ← │ ↓ │ → │
     * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
     */
    [L_BASE] = LAYOUT_tkl_iso(

M keyboards/melody96/keymaps/konstantin/keymap.c => keyboards/melody96/keymaps/konstantin/keymap.c +5 -6
@@ 20,11 20,10 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
            cidx = (cidx + 1) % cnum;
            rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
        }
        return false;

    default:
        return true;
        break;
    }

    return true;
}

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {


@@ 40,7 39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
     * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSfRCt│ ↑ │P1 │P2 │P3 │   │
     * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┼───┼───┤PEn│
     * │LCtl│LGui│LAlt│         Space          │RAlGu│FnLk │ ← │ ↓ │ → │P0 │P. │   │
     * │LCtl│LGui│LAlt│         Space          │RAlGu│FnFLk│ ← │ ↓ │ → │P0 │P. │   │
     * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┴───┴───┴───┘
     */
    [L_BASE] = LAYOUT(


@@ 68,7 67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
     */
    [L_FN] = LAYOUT(
        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SYSR, KC_SLCK, KC_PAUS, KC_BRK,  TOP,     BOTTOM,
        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SYSRQ,   KC_SLCK, KC_PAUS, BREAK,   TOP,     BOTTOM,
        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, RGB_TOG, DIVIDE,  TIMES,   MINUS,
        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD,  _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR,            RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,
        _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______,                   RGB_HUD, RGB_SAD, RGB_VAD, RGB_SET,

M keyboards/whitefox/keymaps/konstantin/keymap.c => keyboards/whitefox/keymaps/konstantin/keymap.c +1 -1
@@ 12,7 12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
     * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSfRCt│ ↑ │PgD│
     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
     * │LCtl│LGui│LAlt│         Space          │RAlG│FnLk│ │ ← │ ↓ │ → │
     * │LCtl│LGui│LAlt│         Space          │RAlG│FnFL│ │ ← │ ↓ │ → │
     * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
     */
    [L_BASE] = LAYOUT_truefox(

M users/konstantin/konstantin.c => users/konstantin/konstantin.c +7 -8
@@ 40,7 40,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
        if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
            fn_lock = !IS_LAYER_ON(L_FN);  // Fn layer will be toggled after this
        }
        return true;
        break;
#endif

    case KC_ESC:


@@ 58,7 58,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
            }
#endif
        }
        return true;
        break;

    case CLEAR:
        if (record->event.pressed) {


@@ 66,25 66,24 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
            )
        }
        return false;
        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);
        )
        return false;
        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);
        )
        return false;

    default:
        return true;
        break;
    }

    return true;
}

__attribute__((weak))

M users/konstantin/konstantin.h => users/konstantin/konstantin.h +3 -3
@@ 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)

M users/konstantin/tap_dance.c => users/konstantin/tap_dance.c +2 -1
@@ 111,8 111,9 @@ qk_tap_dance_action_t tap_dance_actions[] = {
    [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
};

M users/konstantin/tap_dance.h => users/konstantin/tap_dance.h +7 -5
@@ 8,10 8,11 @@
#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,


@@ 20,8 21,9 @@ enum tap_dance {
    TD_RCT_RSF,
    TD_RSF_RCT,

#ifdef LAYER_FN
    TD_LSFT_FN,
    TD_RCTL_FN,

    TD_FN_RCTL,
#endif
};