Commit 90366b64aa0b
Changed files (2)
keyboards
moonlander
config
keyboards/moonlander/config/keymap.c
@@ -226,30 +226,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// FIXME: should I invert ?
KC_DLR, FR_DQUO, US_LDAQ, US_RDAQ, KC_LPRN, KC_RPRN, XXXXXXX, XXXXXXX, KC_AT, KC_PLUS, KC_PMNS, KC_PSLS, KC_PAST, KC_PERC,
KC_TAB, KC_B, FR_E_AIGU, KC_P, KC_O, FR_E_GRAVE, XXXXXXX, XXXXXXX, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z,
- LT(NUMB, KC_EQL), HM_GUI_A, HM_ALT_U, HM_SFT_I, HM_CTL_E, HM_HYP_COMM, XXXXXXX, XXXXXXX, HM_HYP_C, HM_CTL_T, HM_SFT_S, HM_ALT_R, HM_GUI_N, LT(SYMB,KC_M),
+ NUMWORD, HM_GUI_A, HM_ALT_U, HM_SFT_I, HM_CTL_E, HM_HYP_COMM, XXXXXXX, XXXXXXX, HM_HYP_C, HM_CTL_T, HM_SFT_S, HM_ALT_R, HM_GUI_N, LT(SYMB,KC_M),
KC_GRV, FR_A_GRAVE, KC_Y, KC_X, KC_DOT, KC_K, FR_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_W,
- XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, LT(MODS, KC_DEL), QK_REP, NUMWORD, KC_RALT, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, LT(MODS, KC_DEL), QK_REP, QK_AREP, KC_RALT, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
LT(NUMB, KC_SPC), LT(NAVI,KC_BSPC), XXXXXXX, XXXXXXX, OS_LSFT, LT(SYMB, KC_ENT)
),
[ERGL] = LAYOUT(
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
- KC_EQL, HM_GUI_A, HM_ALT_S, HM_SFT_D, HM_CTL_F, HM_HYP_G, XXXXXXX, XXXXXXX, HM_HYP_H, HM_CTL_J, HM_SFT_K, HM_ALT_L, HM_GUI_SCLN, KC_QUOT,
+ NUMWORD, HM_GUI_A, HM_ALT_S, HM_SFT_D, HM_CTL_F, HM_HYP_G, XXXXXXX, XXXXXXX, HM_HYP_H, HM_CTL_J, HM_SFT_K, HM_ALT_L, HM_GUI_SCLN, KC_QUOT,
KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC,
- XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_DEL, QK_REP, NUMWORD, KC_RALT, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_DEL, QK_REP, QK_AREP, KC_RALT, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
LT(NUMB, KC_SPC), LT(NAVI,KC_BSPC), XXXXXXX, XXXXXXX, OS_LSFT, LT(SYMB, KC_ENT)
),
[QWER] = LAYOUT(
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
- KC_EQL, HM_GUI_A, HM_ALT_S, HM_SFT_D, HM_CTL_F, HM_HYP_G, XXXXXXX, XXXXXXX, HM_HYP_H, HM_CTL_J, HM_SFT_K, HM_ALT_L, HM_GUI_SCLN, KC_QUOT,
+ NUMWORD, HM_GUI_A, HM_ALT_S, HM_SFT_D, HM_CTL_F, HM_HYP_G, XXXXXXX, XXXXXXX, HM_HYP_H, HM_CTL_J, HM_SFT_K, HM_ALT_L, HM_GUI_SCLN, KC_QUOT,
KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC,
- XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_DEL, QK_REP, NUMWORD, KC_RALT, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_DEL, QK_REP, QK_AREP, KC_RALT, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
LT(NUMB, KC_SPC), LT(NAVI,KC_BSPC), XXXXXXX, XXXXXXX, OS_LSFT, LT(SYMB, KC_ENT)
),
[SYMB] = LAYOUT(
- VRSN, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______,
+ VRSN, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______,
KC_BSLS, FR_GRAVE, KC_LABK, KC_RABK, KC_PMNS, KC_PIPE, XXXXXXX, XXXXXXX, KC_CIRC, KC_LCBR, KC_RCBR, KC_DLR, FR_CIRC, XXXXXXX,
XXXXXXX, KC_EXLM, KC_PAST, KC_PSLS, KC_EQL, KC_AMPR, XXXXXXX, XXXXXXX, KC_HASH, KC_LPRN, KC_RPRN, KC_SCLN, FR_DQUO, XXXXXXX,
XXXXXXX, KC_TILD, KC_LBRC, KC_RBRC, KC_PLUS, KC_PERC, KC_AT, KC_COLN, KC_COMM, KC_DOT, FR_QUOT, XXXXXXX,
keyboards/moonlander/config/layermodes.c
@@ -41,6 +41,8 @@ void process_num_word_activation(uint8_t layer, const keyrecord_t *record) {
}
// Returns true if numword should remain active after pressing this key
+// Note: F-keys (F1-F15) are intentionally NOT in this list, so they will
+// send from the NUMB layer and then automatically disable numword
static bool is_num_word_key(uint16_t keycode) {
switch (keycode) {
// Numbers
@@ -86,13 +88,18 @@ bool process_num_word(uint16_t keycode, const keyrecord_t *record) {
return true;
}
- if (!record->event.pressed) {
- return true;
- }
-
- // Check if this key should keep numword active
- if (!is_num_word_key(keycode)) {
- disable_num_word(_num_word_layer);
+ // Only check on key press to determine if we should disable
+ if (record->event.pressed) {
+ // Check if this key should keep numword active
+ // If not, we'll disable on the RELEASE so the key sends from the layer first
+ if (!is_num_word_key(keycode)) {
+ // Mark for disable, but don't disable yet - let the key send first
+ }
+ } else {
+ // On key release, check if we should disable numword
+ if (!is_num_word_key(keycode)) {
+ disable_num_word(_num_word_layer);
+ }
}
return true;