qmk_me

QMK Firmware userspace, keyboards, & keymaps
git clone git://git.pngu.org.org/qmk_me
Log | Files | Refs | Submodules | README | LICENSE

commit 96a6ffa99d97f2c6fe66f6615f10e04600cc0304
parent c49769cb731e63cb22d9a384847bee5f1d03b3af
Author: Jack Sangdahl <jack@pngu.org>
Date:   Sun,  7 Dec 2025 17:06:52 +0100

Re-add combos to .def file and introspection file

Diffstat:
Mkeyboards/splitkb/kyria/keymaps/jack/keymap.c | 4++--
Ausers/jack/combos.def | 16++++++++++++++++
Musers/jack/jack.c | 46----------------------------------------------
Musers/jack/jack.h | 10++++++++--
Musers/jack/rules.mk | 4+++-
Ausers/jack/user_introspection.c | 32++++++++++++++++++++++++++++++++
6 files changed, 61 insertions(+), 51 deletions(-)

diff --git a/keyboards/splitkb/kyria/keymaps/jack/keymap.c b/keyboards/splitkb/kyria/keymaps/jack/keymap.c @@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_1, KC_2 , KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, HRML(KC_EXLM, KC_AT, KC_HASH, KC_DLR), KC_PERC, KC_CIRC, HRMR(KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN), _______, _______, KC_VOLD, KC_TAB, KC_CAPS, REMOVE, KC_GRV, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, _______, - _______, _______, _______, _______, _______, _______, _______, SWTCH, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [LAYER3] = LAYOUT_jack( @@ -70,7 +70,7 @@ void oled_wpm(void) { oled_write_ln(get_u8_str(get_current_wpm(), ' '), false); } -bool oled_task_keymap(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { if (timer_elapsed32(oled_timer) > THREE_MIN) { oled_off(); diff --git a/users/jack/combos.def b/users/jack/combos.def @@ -0,0 +1,16 @@ +// Copyright 2025 jack@pngu.org +// SPDX-License-Identifier: GPL-2.0-or-later + +// name output keys +CMB(we_eqal, KC_EQL, KC_W, KC_E) +CMB(er_cbkt, TD(CBRACKET), KC_E, KC_R) +CMB(rt_bsls, KC_BSLS, KC_R, KC_T) +CMB(yu_quot, KC_QUOT, KC_Y, KC_U) +CMB(ui_brkt, TD(SBRACKET), KC_U, KC_I) +CMB(io_mins, TD(EM_DASH_MINS), KC_I, KC_O) +CMB(sd_plus, KC_PLUS, LGUI_T(KC_S), LCTL_T(KC_D)) +CMB(df_coln, KC_COLN, LCTL_T(KC_D), LSFT_T(KC_F)) +CMB(fg_pipe, KC_PIPE, LSFT_T(KC_F), KC_G) +CMB(hj_dquo, KC_DQUO, KC_H, RSFT_T(KC_J)) +CMB(jk_entr, KC_ENT, RSFT_T(KC_J), RCTL_T(KC_K)) +CMB(kl_unds, KC_UNDS, RCTL_T(KC_K), RGUI_T(KC_L)) diff --git a/users/jack/jack.c b/users/jack/jack.c @@ -87,13 +87,6 @@ void ply_nxt_prv(tap_dance_state_t *state, void *user_data) { break; } } - -tap_dance_action_t tap_dance_actions[] = { - [EM_DASH_MINS] = ACTION_TAP_DANCE_FN(em_dash_mins), - [PLY_NXT_PRV] = ACTION_TAP_DANCE_FN(ply_nxt_prv), - [CBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR), - [SBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), -}; #endif __attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { @@ -127,42 +120,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -#ifdef ENCODER_MAP_ENABLE -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [LAYER0] = {{KC_VOLU, KC_VOLD}, {KC_MNXT, KC_MPRV}}, - [LAYER1] = {{XRGB_SAI, XRGB_SAD}, {XRGB_HUI, XRGB_HUD}}, - [LAYER3] = {{C(KC_LEFT), C(KC_RGHT)}, {C(S(KC_TAB)), C(KC_TAB)}}}; -#endif - -#ifdef COMBO_ENABLE -const uint16_t PROGMEM we_eqal[] = {KC_W, KC_E, COMBO_END}; -const uint16_t PROGMEM er_cbkt[] = {KC_E, KC_R COMBO_END}; -const uint16_t PROGMEM rt_bsls[] = {KC_R, KC_T, COMBO_END}; -const uint16_t PROGMEM yu_quot[] = {KC_Y, KC_U, COMBO_END}; -const uint16_t PROGMEM ui_brkt[] = {KC_U, KC_I, COMBO_END}; -const uint16_t PROGMEM io_mins[] = {KC_I, KC_O, COMBO_END}; -const uint16_t PROGMEM sd_plus[] = {LGUI_T(KC_S), LCTL_T(KC_D), COMBO_END}; -const uint16_t PROGMEM df_coln[] = {LCTL_T(KC_D), LSFT_T(KC_F), COMBO_END}; -const uint16_t PROGMEM fg_pipe[] = {LSFT_T(KC_F), KC_G, COMBO_END}; -const uint16_t PROGMEM hj_dquo[] = {KC_H, RSFT_T(KC_J), COMBO_END}; -const uint16_t PROGMEM jk_entr[] = {RSFT_T(KC_J), RCTL_T(KC_K), COMBO_END}; -const uint16_t PROGMEM kl_unds[] = {RCTL_T(KC_K), RGUI_T(KC_L), COMBO_END}; - -combo_t key_combos[] = { - // clang-format off - COMBO(we_eqal, KC_EQL), - COMBO(er_cbkt, TD(CBRACKET)), - COMBO(rt_bsls, KC_BSLS), - COMBO(yu_quot, KC_QUOT), - COMBO(ui_brkt, TD(SBRACKET)), - COMBO(io_mins, TD(EM_DASH_MINS)), - COMBO(sd_plus, KC_PLUS), - COMBO(df_coln, KC_COLN), - COMBO(fg_pipe, KC_PIPE), - COMBO(hj_dquo, KC_DQUO), - COMBO(jk_entr, KC_ENT), - COMBO(kl_unds, KC_UNDS) - // clang-format on -}; -#endif diff --git a/users/jack/jack.h b/users/jack/jack.h @@ -9,6 +9,12 @@ enum tapdances { EM_DASH_MINS, PLY_NXT_PRV, CBRACKET, SBRACKET }; enum custom_keycodes { UPDIR = QK_USER, REMOVE }; +#define CMB(name, action, ...) name, +enum combos { +#include "combos.def" +}; +#undef CMB + #ifdef TAP_DANCE_ENABLE void em_dash_mins(tap_dance_state_t *state, void *user_data); void ply_nxt_prv(tap_dance_state_t *state, void *user_data); @@ -76,7 +82,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record); // #define ___LAYER00___ KC_X, KC_Q, KC_M, KC_W, KC_Z, KC_K, KC_F, KC_QUOT, KC_SCLN, KC_DOT // #define ___LAYER03___ _______, _______, _______, _______ -#define ___LAYER10___ KC_GRV, KC_LT, KC_RT, KC_DQUO, KC_DOT, KC_AMPR, REMOVE, KC_LBRC, KC_RBRC, KC_PERC +#define ___LAYER10___ KC_GRV, KC_LABK, KC_RABK, KC_DQUO, KC_DOT, KC_AMPR, REMOVE, KC_LBRC, KC_RBRC, KC_PERC #define ___LAYER11___ HRML(KC_EXLM, KC_MINS, KC_PLUS, KC_EQL), KC_HASH, KC_PIPE, HRMR(KC_COLN, KC_LPRN, KC_RPRN, KC_QUES) #define ___LAYER12___ KC_CIRC, KC_SLSH, KC_ASTR, KC_BSLS, UPDIR, KC_TILD, KC_DLR, KC_LCBR, KC_RCBR, KC_AT #define ___LAYER13___ _______, _______, _______, _______ @@ -87,7 +93,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record); // #define ___LAYER13___ _______, _______, _______, _______ #define ___LAYER30___ XRGB_TOG, XRGB_NXT, XRGB_HUI, XRGB_SAI, XRGB_VAI, _______, _______, _______, _______, QK_MAKE -#define ___LAYER31___ LUMINO, XRGB_PRV, XRGB_HUD, XRGB_SAD, XRGB_VAD, _______, _______, _______, _______, QK_BOOT +#define ___LAYER31___ _______, XRGB_PRV, XRGB_HUD, XRGB_SAD, XRGB_VAD, _______, _______, _______, _______, QK_BOOT #define ___LAYER32___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 #define ___LAYER33___ _______, _______, _______, _______ // clang-format on diff --git a/users/jack/rules.mk b/users/jack/rules.mk @@ -12,7 +12,9 @@ TAP_DANCE_ENABLE = yes SPACE_CADET_ENABLE = no AUTOCORRECT_ENABLE = yes OS_DETECTION_ENABLE = yes -INTROSPECTION_KEYMAP_C = jack.c +INTROSPECTION_KEYMAP_C = user_introspection.c + +SRC += $(USER_PATH)/jack.c ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) SRC += $(USER_PATH)/colour.c diff --git a/users/jack/user_introspection.c b/users/jack/user_introspection.c @@ -0,0 +1,32 @@ +// Copyright 2025 jack@pngu.org +// SPDX-License-Identifier: GPL-2.0-or-later +#include "jack.h" + +#ifdef TAP_DANCE_ENABLE +tap_dance_action_t tap_dance_actions[] = { + [EM_DASH_MINS] = ACTION_TAP_DANCE_FN(em_dash_mins), + [PLY_NXT_PRV] = ACTION_TAP_DANCE_FN(ply_nxt_prv), + [CBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR), + [SBRACKET] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), +}; +#endif + +#ifdef COMBO_ENABLE +#define CMB(name, action, ...) \ + uint16_t const name##_combo[] PROGMEM = {__VA_ARGS__, COMBO_END}; +#include "combos.def" +#undef CMB + +#define CMB(name, action, ...) [name] = COMBO(name##_combo, action), +combo_t key_combos[] = { +#include "combos.def" +}; +#undef CMB +#endif + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [LAYER0] = {{KC_VOLU, KC_VOLD}, {KC_MNXT, KC_MPRV}}, + [LAYER1] = {{XRGB_SAI, XRGB_SAD}, {XRGB_HUI, XRGB_HUD}}, + [LAYER3] = {{C(KC_LEFT), C(KC_RGHT)}, {C(S(KC_TAB)), C(KC_TAB)}}}; +#endif