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:
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