From 6d6eee5571f282d96408e95f7b0ed38886d29b9a Mon Sep 17 00:00:00 2001 From: rootiest Date: Fri, 10 Apr 2026 23:13:36 -0400 Subject: [PATCH] feat(k17): add tap-chords to keychron k17_max --- .../ansi_encoder/rgb/keymaps/via/keymap.c | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/keyboards/keychron/k17_max/ansi_encoder/rgb/keymaps/via/keymap.c b/keyboards/keychron/k17_max/ansi_encoder/rgb/keymaps/via/keymap.c index a4260abe38..cea2ebfb89 100644 --- a/keyboards/keychron/k17_max/ansi_encoder/rgb/keymaps/via/keymap.c +++ b/keyboards/keychron/k17_max/ansi_encoder/rgb/keymaps/via/keymap.c @@ -21,6 +21,12 @@ enum { TD_HOME_END, + TD_CHORDS, +}; + +enum custom_keycodes { + CK_CTRL_K_C = NEW_SAFE_RANGE, + CK_CTRL_K_D, }; enum layers { @@ -33,7 +39,7 @@ enum layers { // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_BASE] = LAYOUT_104_ansi( - KC_ESC, KC_BRID, KC_BRIU, KC_MCTRL, KC_LNPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, RGB_MOD, KC_DEL, KC_F13, KC_F14, KC_F15, KC_MUTE, + KC_ESC, KC_BRID, KC_BRIU, KC_MCTRL, KC_LNPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, RGB_MOD, KC_DEL, TD(TD_CHORDS), KC_F14, KC_F15, KC_MUTE, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, TD(TD_HOME_END), KC_P4, KC_P5, KC_P6, @@ -49,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [WIN_BASE] = LAYOUT_104_ansi( - KC_ESC, 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_PSCR, RGB_MOD, KC_DEL, _______, _______, _______, KC_MUTE, + KC_ESC, 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_PSCR, RGB_MOD, KC_DEL, TD(TD_CHORDS), _______, _______, KC_MUTE, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, KC_P4, KC_P5, KC_P6, @@ -79,6 +85,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (!process_record_keychron_common(keycode, record)) { return false; } + switch (keycode) { + case CK_CTRL_K_C: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("kc")); + } + return false; + case CK_CTRL_K_D: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("kd")); + } + return false; + } return true; } @@ -86,4 +104,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { tap_dance_action_t tap_dance_actions[] = { // Tap once for Home, twice for End [TD_HOME_END] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END), + [TD_CHORDS] = ACTION_TAP_DANCE_DOUBLE(CK_CTRL_K_C, CK_CTRL_K_D), }; \ No newline at end of file