Turned on NKRO

This commit is contained in:
Drew Whitney 2025-11-16 00:45:42 -07:00
commit a5d339e28d
10 changed files with 101 additions and 86 deletions

View file

@ -6,7 +6,6 @@
/// @brief Custom keycodes.
enum CustomKeycodes {
WIN_SWAP = SAFE_RANGE, // custom alt-tabbing
OSO_SHIFT, // makes thumb shift oneshot-only
PH_P, // placeholder key that passes through to P when Ctrl is held
};
@ -25,7 +24,8 @@ enum CustomKeycodes {
// layers
#define SYM_ENT LT(_SYM, KC_ENT)
#define NAV_CANCEL LT(_NAV, KC_NO) // have to implement this functionality
#define NUM MO(_NUM)
#define NUM_SPC LT(_NUM, KC_SPC)
// #define NUM MO(_NUM)
#define LAUNCH_NUM LT(_SH_NUM, LAUNCH)
#define COMP_ARROW LT(_SH_ARROW, COMPOSE)

View file

@ -2,33 +2,33 @@
#include "../alias.h"
#include "../layers/layers.h"
uint16_t get_combo_term(uint16_t combo_index, combo_t *combo) {
switch (combo_index) {
case NumCombo:
return 75;
break;
}
return COMBO_TERM;
}
// uint16_t get_combo_term(uint16_t combo_index, combo_t *combo) {
// switch (combo_index) {
// case NumCombo:
// return 75;
// break;
// }
// return COMBO_TERM;
// }
bool process_combo_key_release(
uint16_t combo_index, combo_t* combo, uint8_t key_index, uint16_t keycode
) {
switch (combo_index) {
case NumCombo: // release the combo on any releases
switch (keycode) {
case SYM_ENT:
layer_off(_SYM);
break;
case NAV_CANCEL:
layer_off(_NAV);
break;
}
layer_off(_NUM);
break;
}
return false;
}
// bool process_combo_key_release(
// uint16_t combo_index, combo_t* combo, uint8_t key_index, uint16_t keycode
// ) {
// switch (combo_index) {
// case NumCombo: // release the combo on any releases
// switch (keycode) {
// case SYM_ENT:
// layer_off(_SYM);
// break;
// case NAV_CANCEL:
// layer_off(_NAV);
// break;
// }
// layer_off(_NUM);
// break;
// }
// return false;
// }
bool process_combo_key_repress(
uint16_t combo_index, combo_t* combo, uint8_t key_index, uint16_t keycode

View file

@ -3,6 +3,6 @@
#include QMK_KEYBOARD_H
enum Combos {
NumCombo,
// NumCombo,
WinSwapCombo,
};

View file

@ -1,18 +1,21 @@
#pragma once
#define TAPPING_TERM 200
// tap-
// tap-hold
#define QUICK_TAP_TERM_PER_KEY
#define HOLD_ON_OTHER_KEY_PRESS
// #define HOLD_ON_OTHER_KEY_PRESS
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
#define PERMISSIVE_HOLD_PER_KEY
// combos
#define COMBO_PROCESS_KEY_RELEASE
// #define COMBO_PROCESS_KEY_RELEASE
#define COMBO_PROCESS_KEY_REPRESS
#define COMBO_TERM_PER_COMBO
// #define COMBO_TERM_PER_COMBO
#define CAPS_WORD_IDLE_TIMEOUT 0
#define DUMMY_MOD_NEUTRALIZER_KEYCODE KC_RCTL
#define MODS_TO_NEUTRALIZE {MOD_BIT(KC_LALT), MOD_BIT(KC_RALT), MOD_BIT(KC_LGUI), MOD_BIT(KC_RGUI)}
#define NKRO_DEFAULT_ON true

View file

@ -7,7 +7,7 @@
"encoder": false,
"extrakey": false,
"mousekey": false,
"rgb_matrix": true
"rgb_matrix": false
},
"encoder": {
"rotary": [

View file

@ -11,7 +11,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = 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_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
CW_TOGG, KC_Z, KC_X, KC_C, KC_V, KC_B, TD_CLS, GAME, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_DEL,
//└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘
LAUNCH_NUM, NAV_CANCEL, KC_SPC, OSO_SHIFT, SYM_ENT, COMP_ARROW
LAUNCH_NUM, NAV_CANCEL, NUM_SPC, OS_LSFT, SYM_ENT, COMP_ARROW
// └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘
),
@ -37,9 +37,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘
),
[_NUM] = 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_TRNS, KC_SLSH, KC_E, KC_ASTR, KC_MINS, KC_PLUS, KC_CIRC, KC_NO, KC_NO, KC_LPRN, KC_RPRN, KC_TRNS,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, QK_BOOT, KC_NO, KC_COLN, KC_COMM, KC_DOT, KC_SCLN, KC_TRNS,
//└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘
KC_TRNS, NAV_CANCEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
// └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘
),
[_SYM] = LAYOUT(
//┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
@ -53,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAV] = LAYOUT(
//┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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_TRNS, ZOOM_OUT, ZOOM_IN, TAB_LEFT, TAB_RIGHT, KC_F11, KC_WFWD, KC_HOME, KC_UP, KC_END, PH_P, KC_TRNS,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
@ -65,23 +79,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘
),
[_NUM] = LAYOUT(
//┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
KC_TRNS, KC_SLSH, KC_E, KC_ASTR, KC_MINS, KC_PLUS, KC_CIRC, KC_NO, KC_NO, KC_LPRN, KC_RPRN, KC_TRNS,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┐ ┌───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
KC_TRNS, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_TRNS, QK_BOOT, KC_NO, KC_COLN, KC_COMM, KC_DOT, KC_SCLN, KC_TRNS,
//└───────────┴───────────┴───────────┴─────┬─────┴─────┬─────┴─────┬─────┴────┬──────┘ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴───────────┴───────────┴───────────┘
KC_TRNS, NAV_CANCEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
// └───────────┴───────────┴──────────┘ └───────────┴───────────┴───────────┘
),
[_SH_NUM] = LAYOUT( // single-handed numbers
//┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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_TRNS, KC_SLSH, KC_DOT, KC_COMM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_SH_ARROW] = LAYOUT( // single-handed arrows
//┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐ ┌───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRNS,
//├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤ ├───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤
@ -115,11 +115,11 @@ tap_dance_action_t tap_dance_actions[] = {
[TD_GAMER_MODE] = ACTION_TAP_DANCE_FN(enter_gamer_mode),
};
const uint16_t PROGMEM num_layer_combo[] = {NAV_CANCEL, SYM_ENT, COMBO_END};
// const uint16_t PROGMEM num_layer_combo[] = {NAV_CANCEL, SYM_ENT, COMBO_END};
const uint16_t PROGMEM win_swap_combo[] = {TAB_LEFT, TAB_RIGHT, COMBO_END};
combo_t key_combos[] = {
[NumCombo] = COMBO(num_layer_combo, NUM),
// [NumCombo] = COMBO(num_layer_combo, NUM),
[WinSwapCombo] = COMBO(win_swap_combo, WIN_SWAP),
};
@ -168,13 +168,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) {
return false;
}
break;
case OSO_SHIFT: // make thumb shift oneshot-only
if (record->event.pressed) {
(!get_oneshot_mods() && MOD_BIT(KC_LSFT) ? add_oneshot_mods
: del_oneshot_mods)(MOD_BIT(KC_LSFT));
}
break;
}
return true;
}

View file

@ -1,26 +1,26 @@
#include "./layers.h"
bool NUM_latched = false;
// bool NUM_latched = false;
layer_state_t layer_state_set_user(layer_state_t state) {
// layer_state_t layer_state_set_user(layer_state_t state) {
// NUM latching
if (NUM_latched) {
if (IS_LAYER_ON_STATE(state, _SYM) && IS_LAYER_ON_STATE(state, _NAV)) {
state |= 1 << _NUM; // turn on NUM
} else {
// if both NAV and SYM are off, de-latch NUM
if (!IS_LAYER_ON_STATE(state, _SYM) && !IS_LAYER_ON_STATE(state, _NAV)) {
NUM_latched = false;
}
// since both layers aren't held, turn off NUM
state &= ~(1 << _NUM);
}
} else if (IS_LAYER_ON_STATE(state, _NUM)) {
NUM_latched = true;
state |= 1 << _NAV | 1 << _SYM; // turn on NAV and SYM
}
// if (NUM_latched) {
// if (IS_LAYER_ON_STATE(state, _SYM) && IS_LAYER_ON_STATE(state, _NAV)) {
// state |= 1 << _NUM; // turn on NUM
// } else {
// // if both NAV and SYM are off, de-latch NUM
// if (!IS_LAYER_ON_STATE(state, _SYM) && !IS_LAYER_ON_STATE(state, _NAV)) {
// NUM_latched = false;
// }
// // since both layers aren't held, turn off NUM
// state &= ~(1 << _NUM);
// }
// } else if (IS_LAYER_ON_STATE(state, _NUM)) {
// NUM_latched = true;
// state |= 1 << _NAV | 1 << _SYM; // turn on NAV and SYM
// }
// return update_tri_layer_state(state, _SYM, _NAV, _NUM);
return state;
}
// return state;
// }

View file

@ -6,12 +6,11 @@
enum {
_BASE,
_GAME,
_NUM,
_SYM,
_NAV,
_NUM,
_SH_NUM,
_SH_ARROW,
};
extern bool NUM_latched;
// extern bool NUM_latched;

View file

@ -17,3 +17,5 @@ CAPS_WORD_ENABLE = yes
TAP_DANCE_ENABLE = yes
KEY_OVERRIDE_ENABLE = yes
COMBO_ENABLE = yes
NKRO_ENABLE = yes

View file

@ -6,9 +6,27 @@
uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t* record) {
switch (keycode) {
case SYM_ENT: // no repeat tapping for this key
case NUM_SPC:
return 0;
break;
}
return QUICK_TAP_TERM;
}
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t* record) {
switch (keycode) {
case NUM_SPC:
return false;
break;
}
return true;
}
bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case NUM_SPC:
return true;
break;
}
return false;
}