commit 1d3c16d8a8db0b69fe06fd86889aab9edd1bb76c
parent d3bec43c97c99113745dca19a822e458d2ed0ee7
Author: Jack Sangdahl <jack@pngu.org>
Date: Mon, 15 Dec 2025 20:53:22 -0700
More layout updates
Diffstat:
5 files changed, 41 insertions(+), 36 deletions(-)
diff --git a/users/jack/jack.c b/users/jack/jack.c
@@ -41,7 +41,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case ESC_L1:
- case UND_L2:
+ case REP_L2:
case SPC_L1:
case BSPC_L2:
return TAPPING_TERM - 40;
@@ -74,8 +74,12 @@ tap_dance_action_t tap_dance_actions[] = {
#ifdef COMBO_ENABLE
const uint16_t PROGMEM enter_combo[] = {RSFT_T(KC_J), RCTL_T(KC_K), COMBO_END};
+const uint16_t PROGMEM unds_combo[] = {LCTL_T(KC_D), LSFT_T(KC_F), COMBO_END};
-combo_t key_combos[] = {COMBO(enter_combo, KC_ENT)};
+combo_t key_combos[] = {
+ COMBO(enter_combo, KC_ENT),
+ COMBO(unds_combo, KC_UNDS),
+};
#endif
#ifdef KEY_OVERRIDE_ENABLE
@@ -85,6 +89,13 @@ const key_override_t volume_key_override =
const key_override_t *key_overrides[] = {&volume_key_override};
#endif
+bool remember_last_key_user(uint16_t keycode, keyrecord_t *record,
+ uint8_t *remembered_mods) {
+ if (keycode == REP_L2)
+ return false;
+ return true;
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keymap(keycode, record))
return false;
@@ -115,14 +126,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed)
SEND_STRING("jack@pngu.org");
break;
-
- case LT(LAYER2, KC_UNDS):
- if (record->tap.count && record->event.pressed) {
- tap_code16(KC_UNDS);
+ case REP_L2:
+ if (record->tap.count) {
+ repeat_key_invoke(&record->event);
return false;
}
break;
- INTERCEPT_MOD_TAP(LSFT_T, KC_PLUS)
INTERCEPT_MOD_TAP(LALT_T, KC_EXLM)
INTERCEPT_MOD_TAP(LGUI_T, KC_ASTR)
INTERCEPT_MOD_TAP(RSFT_T, KC_LPRN)
diff --git a/users/jack/jack.h b/users/jack/jack.h
@@ -54,7 +54,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
#endif
#define ESC_L1 LT(LAYER1, KC_ESC)
-#define UND_L2 LT(LAYER2, KC_UNDS)
+#define REP_L2 LT(LAYER2, KC_NO)
#define SPC_L1 LT(LAYER1, KC_SPC)
#define BSPC_L2 LT(LAYER2, KC_BSPC)
#define HRML(k1, k2, k3, k4) LALT_T(k1), LGUI_T(k2), LCTL_T(k3), LSFT_T(k4)
@@ -63,21 +63,17 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
// clang-format off
#define ___LAYER00___ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P
#define ___LAYER01___ HRML(KC_A, KC_S, KC_D, KC_F), KC_G, KC_H, HRMR(KC_J, KC_K, KC_L, KC_SCLN)
-#define ___LAYER02___ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT
-#define ___LAYER03___ ESC_L1, KC_SPC, KC_BSPC, UND_L2
-
-// #define ___LAYER00___ KC_V, KC_M, KC_L, KC_C, KC_P, KC_X, KC_F, KC_O, KC_U, KC_J
-// #define ___LAYER01___ KC_S, KC_T, KC_R, KC_D, KC_Y, KC_DOT, KC_N, KC_A, KC_E, KC_I
-// #define ___LAYER02___ KC_Z, KC_K, KC_Q, KC_G, KC_W, KC_B, KC_H, KC_QUOT, KC_SCLN, KC_COMM
+#define ___LAYER02___ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
+#define ___LAYER03___ ESC_L1, KC_SPC, KC_BSPC, REP_L2
#define ___LAYER10___ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0
-#define ___LAYER11___ HRML(KC_SLSH, KC_ASTR, KC_MINS, KC_PLUS), KC_TAB, KC_LEFT, HRMR(KC_DOWN, KC_UP, KC_RGHT, KC_CAPS)
+#define ___LAYER11___ HRML(_______, _______, _______, _______), KC_TAB, KC_LEFT, HRMR(KC_DOWN, KC_UP, KC_RGHT, KC_CAPS)
#define ___LAYER12___ KC_VOLU, TD(PLY_NXT_PRV), REMOVE, UPDIR, USRNME, _______, _______, _______, _______, _______
#define ___LAYER13___ _______, _______, _______, _______
#define ___LAYER20___ KC_GRV, KC_LABK, KC_RABK, KC_MINS, KC_PIPE, KC_CIRC, KC_LCBR, KC_RCBR, KC_DLR, KC_BSLS
-#define ___LAYER21___ HRML(KC_EXLM, KC_ASTR, KC_SLSH, KC_EQL), KC_AMPR, KC_HASH, HRMR(KC_LPRN, KC_RPRN, KC_SCLN, KC_DQUO)
-#define ___LAYER22___ KC_TILD, KC_PLUS, KC_LBRC, KC_RBRC, KC_PERC, KC_AT, KC_COLN, KC_COMM, KC_DOT, KC_QUOT
+#define ___LAYER21___ HRML(KC_EXLM, KC_ASTR, KC_SLSH, KC_EQL), KC_AMPR, KC_HASH, HRMR(KC_LPRN, KC_RPRN, KC_QUOT, KC_DQUO)
+#define ___LAYER22___ KC_TILD, KC_PLUS, KC_LBRC, KC_RBRC, KC_PERC, KC_AT, KC_COLN, _______, _______, _______
#define ___LAYER23___ _______, _______, _______, _______
#define ___LAYER30___ XRGB_NXT, XRGB_HUI, XRGB_SAI, XRGB_VAI, XRGB_TOG, _______, _______, _______, _______, QK_MAKE
diff --git a/users/jack/rules.mk b/users/jack/rules.mk
@@ -9,6 +9,7 @@ EXTRAKEY_ENABLE = yes
BOOTMAGIC_ENABLE = yes
CAPS_WORD_ENABLE = yes
TAP_DANCE_ENABLE = yes
+REPEAT_KEY_ENABLE = yes
SPACE_CADET_ENABLE = no
AUTOCORRECT_ENABLE = yes
OS_DETECTION_ENABLE = yes
diff --git a/util/keymap.yaml b/util/keymap.yaml
@@ -15,18 +15,18 @@ layers:
{h: $$mdi:apple-keyboard-command$$, t: "L"},
{h: $$mdi:apple-keyboard-option$$, t: ";"}
]
- - ["Z", "X", "C", "V", "B", "N", "M", ",", ".", "'"]
+ - ["Z", "X", "C", "V", "B", "N", "M", ",", ".", {t: "/", s: "?"}]
- {type: ghost}
- {h: "L1", t: "Esc", type: held}
- {t: $$mdi:keyboard-space$$ }
- {t: $$mdi:backspace-outline$$}
- - {h: "L2", t: "_", type: held}
+ - {h: "L2", t: "Rep", type: held}
- {type: ghost}
LAYER1:
- ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
- - ["/", "*", "-", "+", $$mdi:keyboard-tab$$, $$mdi:arrow-left$$, $$mdi:arrow-down$$, $$mdi:arrow-up$$, $$mdi:arrow-right$$, $$mdi:apple-keyboard-caps$$]
+ - [null, null, null, null, $$mdi:keyboard-tab$$, $$mdi:arrow-left$$, $$mdi:arrow-down$$, $$mdi:arrow-up$$, $$mdi:arrow-right$$, $$mdi:apple-keyboard-caps$$]
- [
- $$mdi:volume-minus$$,
+ {t: $$mdi:volume-plus$$, s: $$mdi:volume-minus$$},
$$mdi:play-pause$$,
$$mdi:trash-can-outline$$,
$$mdi:folder-arrow-left-outline$$,
@@ -35,7 +35,7 @@ layers:
null,
null,
null,
- $$mdi:volume-plus$$
+ null
]
- {type: ghost}
- {t: "▽", type: trans}
@@ -45,8 +45,8 @@ layers:
- {type: ghost}
LAYER2:
- ["`", "<", ">", "-", "|", "^", "{", "}", "$", "\\"]
- - ["!", "*", "/", "=", "&", "#", "(", ")", ";", "\""]
- - ["~", "+", "[", "]", "%", "@", ":", ",", ".", "'"]
+ - ["!", "*", "/", "=", "&", "#", "(", ")", "'", "\""]
+ - ["~", "+", "[", "]", "%", "@", ":", null, null, null]
- {type: ghost}
- {t: "▽", type: trans}
- {t: "▽", type: trans}
@@ -65,4 +65,5 @@ layers:
- {type: ghost}
combos:
- {p: [16, 17], k: $$mdi:keyboard-return$$, l: ["LAYER0"]}
+ - {p: [12, 13], k: "_", l: ["LAYER0"]}
- {p: [13, 16], k: "Cap Wrd", l: ["LAYER0"], align: top, offset: 0.1}
diff --git a/util/layout.svg b/util/layout.svg
@@ -312,7 +312,8 @@ path.combo {
</g>
<g transform="translate(700, 161)" class="key keypos-29">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<text x="0" y="0" class="key tap">'</text>
+<text x="0" y="0" class="key tap">/</text>
+<text x="0" y="-24" class="key shifted">?</text>
</g>
<g transform="translate(168, 205)" class="key ghost keypos-30">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key ghost"/>
@@ -332,7 +333,7 @@ path.combo {
</g>
<g transform="translate(498, 213) rotate(-15.0)" class="key held keypos-34">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key held"/>
-<text x="0" y="0" class="key held tap">_</text>
+<text x="0" y="0" class="key held tap">Rep</text>
<text x="0" y="24" class="key held hold">L2</text>
</g>
<g transform="translate(560, 205)" class="key ghost keypos-35">
@@ -343,6 +344,10 @@ path.combo {
<use href="#mdi:keyboard-return" xlink:href="#mdi:keyboard-return" x="553" y="80" height="14" width="14.0" class="combo tap glyph mdi:keyboard-return"/>
</g>
<g class="combo combopos-1">
+<rect rx="6" ry="6" x="154" y="74" width="28" height="26" class="combo"/>
+<text x="168" y="88" class="combo tap">_</text>
+</g>
+<g class="combo combopos-2">
<path d="M364,56 h-162 a6.0,6.0 0 0 0 -6.0,6.0 v10" class="combo"/>
<path d="M364,56 h162 a6.0,6.0 0 0 1 6.0,6.0 v10" class="combo"/>
<rect rx="6" ry="6" x="350" y="43" width="28" height="26" class="combo"/>
@@ -397,19 +402,15 @@ path.combo {
</g>
<g transform="translate(28, 105)" class="key keypos-10">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<text x="0" y="0" class="key tap">/</text>
</g>
<g transform="translate(84, 91)" class="key keypos-11">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<text x="0" y="0" class="key tap">*</text>
</g>
<g transform="translate(140, 84)" class="key keypos-12">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<text x="0" y="0" class="key tap">-</text>
</g>
<g transform="translate(196, 91)" class="key keypos-13">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<text x="0" y="0" class="key tap">+</text>
</g>
<g transform="translate(252, 98)" class="key keypos-14">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
@@ -437,7 +438,8 @@ path.combo {
</g>
<g transform="translate(28, 161)" class="key keypos-20">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<use href="#mdi:volume-minus" xlink:href="#mdi:volume-minus" x="-7" y="-7" height="14" width="14.0" class="key tap glyph mdi:volume-minus"/>
+<use href="#mdi:volume-plus" xlink:href="#mdi:volume-plus" x="-7" y="-7" height="14" width="14.0" class="key tap glyph mdi:volume-plus"/>
+<use href="#mdi:volume-minus" xlink:href="#mdi:volume-minus" x="-5" y="-24" height="10" width="10.0" class="key shifted glyph mdi:volume-minus"/>
</g>
<g transform="translate(84, 147)" class="key keypos-21">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
@@ -469,7 +471,6 @@ path.combo {
</g>
<g transform="translate(700, 161)" class="key keypos-29">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<use href="#mdi:volume-plus" xlink:href="#mdi:volume-plus" x="-7" y="-7" height="14" width="14.0" class="key tap glyph mdi:volume-plus"/>
</g>
<g transform="translate(168, 205)" class="key ghost keypos-30">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key ghost"/>
@@ -572,7 +573,7 @@ path.combo {
</g>
<g transform="translate(644, 91)" class="key keypos-18">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<text x="0" y="0" class="key tap">;</text>
+<text x="0" y="0" class="key tap">'</text>
</g>
<g transform="translate(700, 105)" class="key keypos-19">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
@@ -608,15 +609,12 @@ path.combo {
</g>
<g transform="translate(588, 140)" class="key keypos-27">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<text x="0" y="0" class="key tap">,</text>
</g>
<g transform="translate(644, 147)" class="key keypos-28">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<text x="0" y="0" class="key tap">.</text>
</g>
<g transform="translate(700, 161)" class="key keypos-29">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
-<text x="0" y="0" class="key tap">'</text>
</g>
<g transform="translate(168, 205)" class="key ghost keypos-30">
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key ghost"/>