qmk-config
qmk configs for my open-source keyboards
git clone https://9o.is/git/qmk-config.git
commit 8b2d2f572b5b51d51b36e2686764221e2be131eb parent 86eea5f26a750f6d9076b4d4932d6f41307502fb Author: Jul <jul@9o.is> Date: Thu, 1 Jan 2026 10:39:56 -0500 enable pinky combos for chocofi Diffstat:
| M | chocofi/config.h | | | 1 | + |
| M | chocofi/rules.mk | | | 1 | + |
| M | keymaps/default/keymap.c | | | 36 | ++++++++++++++++++++++++++++++++++++ |
3 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/chocofi/config.h b/chocofi/config.h @@ -3,6 +3,7 @@ #define SOFT_SERIAL_PIN D2 #define TAPPING_TERM 160 #define TAPPING_TERM_PER_KEY +#define COMBO_MUST_TAP_PER_COMBO #define QUICK_TAP_TERM 120 #define PERMISSIVE_HOLD #define ACHORDION_STREAK diff --git a/chocofi/rules.mk b/chocofi/rules.mk @@ -2,6 +2,7 @@ CONVERT_TO=rp2040_ce MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CAPS_WORD_ENABLE = yes +COMBO_ENABLE = yes NKRO_ENABLE = yes STENO_ENABLE = yes STENO_PROTOCOL = geminipr diff --git a/keymaps/default/keymap.c b/keymaps/default/keymap.c @@ -123,4 +123,40 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; +#ifdef COMBO_ENABLE +const uint16_t PROGMEM pinky_combo1[] = {KC_W, KC_F, COMBO_END}; +const uint16_t PROGMEM pinky_combo2[] = {LT_R, LT_S, COMBO_END}; +const uint16_t PROGMEM pinky_combo3[] = {KC_X, KC_C, COMBO_END}; +const uint16_t PROGMEM pinky_combo4[] = {KC_U, KC_Y, COMBO_END}; +const uint16_t PROGMEM pinky_combo5[] = {LT_E, LT_I, COMBO_END}; +const uint16_t PROGMEM pinky_combo6[] = {KC_COMM, KC_DOT, COMBO_END}; + +combo_t key_combos[] = { + COMBO(pinky_combo1, KC_Q), + COMBO(pinky_combo2, KC_A), + COMBO(pinky_combo3, KC_Z), + COMBO(pinky_combo4, KC_QUOT), + COMBO(pinky_combo5, KC_O), + COMBO(pinky_combo6, KC_SLSH), +}; +#endif + +#ifdef COMBO_MUST_TAP_PER_COMBO +bool get_combo_must_tap(uint16_t combo_index, combo_t *combo) { + // all combos that have Mod-Tap/Layer-Tap/Momentary keys in its chord are tap only + uint16_t key; + uint8_t idx = 0; + while ((key = pgm_read_word(&combo->keys[idx])) != COMBO_END) { + switch (key) { + case QK_MOD_TAP...QK_MOD_TAP_MAX: + case QK_LAYER_TAP...QK_LAYER_TAP_MAX: + case QK_MOMENTARY...QK_MOMENTARY_MAX: + return true; + } + idx += 1; + } + return false; +} +#endif + // vim: nowrap