From 125ae6ecf51c9155fef385800de6f14530ebb4fe Mon Sep 17 00:00:00 2001
From: urob <978080+urob@users.noreply.github.com>
Date: Sat, 11 Jan 2025 22:44:29 -0500
Subject: [PATCH] Add keymap drawer graph
---
.gitignore | 3 -
Justfile | 3 +-
config/base.keymap | 12 +-
config/combos.dtsi | 8 +-
draw/base.svg | 1237 ++++++++++++++++++++++++++++++++++++++++++++
draw/config.yaml | 169 +++++-
readme.md | 3 +
7 files changed, 1421 insertions(+), 14 deletions(-)
create mode 100644 draw/base.svg
diff --git a/.gitignore b/.gitignore
index 4efbe97b6..9ab1e1a94 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,8 @@
.build
.direnv
-.venv
.west
modules
firmware
zephyr
zmk
-# Ignore keymap-drawer output for now
-draw/base.svg
draw/base.yaml
diff --git a/Justfile b/Justfile
index 1c4c91d14..0e5678d18 100644
--- a/Justfile
+++ b/Justfile
@@ -84,7 +84,8 @@ clean-nix:
draw:
#!/usr/bin/env bash
set -euo pipefail
- keymap -c "{{ draw }}/config.yaml" parse -z "{{ config }}/base.keymap" >"{{ draw }}/base.yaml"
+ keymap -c "{{ draw }}/config.yaml" parse -z "{{ config }}/base.keymap" --virtual-layers Combos >"{{ draw }}/base.yaml"
+ yq -Yi '.combos.[].l = ["Combos"]' "{{ draw }}/base.yaml"
keymap -c "{{ draw }}/config.yaml" draw "{{ draw }}/base.yaml" -k "ferris/sweep" >"{{ draw }}/base.svg"
# initialize west
diff --git a/config/base.keymap b/config/base.keymap
index 7f15e1f24..316da3f49 100644
--- a/config/base.keymap
+++ b/config/base.keymap
@@ -188,7 +188,7 @@ ZMK_CONDITIONAL_LAYER(sys, FN NUM, SYS) // FN + NUM --> SYS.
ZMK_LAYER(name, LT RT LM RM LB RB LH RH)
#endif
-ZMK_BASE_LAYER(base,
+ZMK_BASE_LAYER(Base,
//╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
&kp Q &kp W &kp F &kp P &kp B , &kp J &kp L &kp U &kp Y &kp SQT ,
//├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
@@ -200,7 +200,7 @@ ZMK_BASE_LAYER(base,
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
)
-ZMK_BASE_LAYER(nav,
+ZMK_BASE_LAYER(Nav,
//╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
___ ___ &kp LS(TAB) &swapper ___ , &kp PG_UP NAV_BSPC NAV_UP NAV_DEL ___ ,
//├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
@@ -212,7 +212,7 @@ ZMK_BASE_LAYER(nav,
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
)
-ZMK_BASE_LAYER(fn,
+ZMK_BASE_LAYER(Fn,
//╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
&kp F12 &kp F7 &kp F8 &kp F9 ___ , ___ &kp C_PREV &kp C_VOL_UP &kp C_NEXT ___ ,
//├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
@@ -224,7 +224,7 @@ ZMK_BASE_LAYER(fn,
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
)
-ZMK_BASE_LAYER(num,
+ZMK_BASE_LAYER(Num,
//╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
___ &kp N7 &kp N8 &kp N9 ___ , ___ ___ ___ ___ ___ ,
//├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
@@ -236,7 +236,7 @@ ZMK_BASE_LAYER(num,
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
)
-ZMK_BASE_LAYER(sys,
+ZMK_BASE_LAYER(Sys,
//╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
_BT_SEL_KEYS_ , ___ ___ ___ ___ ___ ,
//├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
@@ -248,7 +248,7 @@ ZMK_BASE_LAYER(sys,
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
)
-ZMK_BASE_LAYER(mouse,
+ZMK_BASE_LAYER(Mouse,
//╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
___ ___ ___ ___ ___ , ___ &kp PG_UP U_MS_U &kp PG_DN ___ ,
//├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
diff --git a/config/combos.dtsi b/config/combos.dtsi
index c29f0afdc..68097849d 100644
--- a/config/combos.dtsi
+++ b/config/combos.dtsi
@@ -15,8 +15,8 @@
/* Horizontal combos - left hand */
ZMK_COMBO(esc, &kp ESC, LT3 LT2, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST)
-ZMK_COMBO(ret, &kp RETURN, LT2 LT1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST)
-ZMK_COMBO(mouse, &smart_mouse, LT3 LT1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST)
+ZMK_COMBO(ret, &kp RET, LT2 LT1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST)
+ZMK_COMBO(mouse, &smart_mouse, LT2 LT1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST)
// Combos overlapping HRMs are set up as hold-taps themselves to allow for instantaneous
// chording of mods. Custom hold-tap instances can be bootstrapped on the go using the
@@ -35,13 +35,17 @@ ZMK_COMBO(del, &kp DEL, RT2 RT3, DEF NAV NUM, COMBO_TERM_FAST, COMBO_
ZMK_COMBO(lpar, &lpar_lt, RM1 RM2, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, RS(LCTRL), KEYS_L)
ZMK_COMBO(rpar, &rpar_gt, RM2 RM3, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, RS(LALT), KEYS_L)
+#ifndef KEYMAP_DRAWER
ZMK_COMBO(lt, &kp LT, RM1 RM2, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST)
ZMK_COMBO(gt, &kp GT, RM2 RM3, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST)
+#endif
ZMK_COMBO(lbkt, &kp LBKT, RB1 RB2, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST)
ZMK_COMBO(rbkt, &kp RBKT, RB2 RB3, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST)
+#ifndef KEYMAP_DRAWER
ZMK_COMBO(lbrc, &kp LBRC, RB1 RB2, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST)
ZMK_COMBO(rbrc, &kp RBRC, RB2 RB3, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST)
+#endif
/* Vertical combos - left hand */
ZMK_COMBO(at, &kp AT, LT3 LM3, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW)
diff --git a/draw/base.svg b/draw/base.svg
new file mode 100644
index 000000000..abbd1db10
--- /dev/null
+++ b/draw/base.svg
@@ -0,0 +1,1237 @@
+
diff --git a/draw/config.yaml b/draw/config.yaml
index dc22ec871..6435abf5e 100644
--- a/draw/config.yaml
+++ b/draw/config.yaml
@@ -1,8 +1,173 @@
parse_config:
- zmk_preamble: "#include "
zmk_additional_includes:
- "modules/zmk/helpers/include"
+ zmk_preamble: |
+ #include
+ #define CONFIG_WIRELESS
+ #define KEYMAP_DRAWER
+
+ raw_binding_map:
+ "&sys_reset": Reset
+ "&bootloader": Boot
+ "&caps_word": Caps Word
+
+ "&bt BT_SEL 0": BT 1
+ "&bt BT_SEL 1": BT 2
+ "&bt BT_SEL 2": BT 3
+ "&bt BT_SEL 3": BT 4
+
+ "&kp LC(INS)": Copy
+ "&kp LC(X)": Cut
+ "&kp LS(INS)": Paste
+
+ "&kp LG(LC(LEFT))": Prev Desk
+ "&kp LG(LC(RIGHT))": Next Desk
+ "&kp LG(LC(LS(A)))": Pin App
+ "&kp LG(LC(LS(Q)))": Pin Win
+
+ "&swapper": Next Win
+ "&kp LS(TAB)": Prev Win
+ "&dot_spc": Sentence
+ "&num_dance": { "t": "Numword", "s": "Sticky Num" }
+ "&magic": Repeat / Smart Shift
+ "&smart_mouse": Smart Mouse
+ # "&smart_num": Smart Num
+ # "&smart_shft": Smart Shift
+
+ "&hml LS(LALT)TAB": Tab
+ "&hm_combo_ldr": Leader
+ "&hm_combo_ldrsh": Shift+Leader
+ "&hm_combo_lpar": { "t": "(", "right": "<" }
+ "&hm_combo_rpar": { "t": ")", "right": ">" }
+ "&kp LBKT": { "t": "[", "right": "{" }
+ "&kp RBKT": { "t": "]", "right": "}" }
+
+ "&mmv MOVE_UP": Mouse ↑
+ "&mmv MOVE_DOWN": Mouse ↓
+ "&mmv MOVE_LEFT": Mouse ←
+ "&mmv MOVE_RIGHT": Mouse →
+
+ "&msc SCRL_UP": Scroll ↑
+ "&msc SCRL_DOWN": Scroll ↓
+ "&msc SCRL_LEFT": Scroll ←
+ "&msc SCRL_RIGHT": Scroll →
+
+ "&mkp LCLK": Left Click
+ "&mkp RCLK": Right Click
+ "&mkp MCLK": Middle Click
+ "&mkp MB4": Back Click
+ "&mkp MB5": Forward Click
+
+ trans_legend: { "t": "", "type": "trans" }
+
+ zmk_combos:
+ combo_cut: { align: bottom, o: 0.15 }
+ combo_ldrsh: { align: top, o: 1.35 }
+
+ zmk_keycode_map:
+ # custom mappings
+ LALT: Alt
+ RALT: Alt
+ LCTRL: Ctrl
+ RCTRL: Ctrl
+ LGUI: Gui
+ RGUI: Gui
+ LSHFT: Shift
+ RSHFT: Shift
+
+ BSPC: Bspc
+ DEL: Del
+ ESC: Esc
+ RET: Enter
+ SPACE: Spc
+ TAB: Tab
+
+ PG_UP: PgUp
+ PG_DN: PgDn
+ INS: Ins
+ HOME: Home
+ END: End
+
+ UP: ↑
+ DOWN: ↓
+ LEFT: ←
+ RIGHT: →
+
+ C_MUTE: $$mdi:volume-off$$
+ C_PP: $$mdi:play-pause$$
+ C_VOL_UP: $$mdi:volume-high$$
+ C_VOL_DN: $$mdi:volume-medium$$
+ C_NEXT: $$mdi:skip-forward$$
+ C_PREV: $$mdi:skip-backward$$
+
+ # defaults
+ AMPERSAND: "&"
+ AMPS: "&"
+ APOS: "'"
+ APOSTROPHE: "'"
+ ASTERISK: "*"
+ ASTRK: "*"
+ AT: "@"
+ AT_SIGN: "@"
+ BACKSLASH: \
+ BSLH: \
+ CARET: ^
+ COLON: ":"
+ COMMA: ","
+ DLLR: $
+ DOLLAR: $
+ DOT: .
+ DOUBLE_QUOTES: '"'
+ DQT: '"'
+ EQUAL: "="
+ EXCL: "!"
+ EXCLAMATION: "!"
+ FSLH: /
+ GRAVE: "`"
+ GREATER_THAN: ">"
+ GT: ">"
+ HASH: "#"
+ LBKT: "["
+ LBRC: "{"
+ LEFT_BRACE: "{"
+ LEFT_BRACKET: "["
+ LEFT_PARENTHESIS: (
+ LESS_THAN: <
+ LPAR: (
+ LT: <
+ MINUS: "-"
+ NON_US_BACKSLASH: \
+ NON_US_BSLH: "|"
+ NON_US_HASH: "#"
+ NUHS: "#"
+ PERCENT: "%"
+ PERIOD: .
+ PIPE: "|"
+ PIPE2: "|"
+ PLUS: +
+ POUND: "#"
+ PRCNT: "%"
+ QMARK: "?"
+ QUESTION: "?"
+ RBKT: "]"
+ RBRC: "}"
+ RIGHT_BRACE: "}"
+ RIGHT_BRACKET: "]"
+ RIGHT_PARENTHESIS: )
+ RPAR: )
+ SEMI: ;
+ SEMICOLON: ;
+ SINGLE_QUOTE: "'"
+ SLASH: /
+ SQT: "'"
+ STAR: "*"
+ TILDE: "~"
+ TILDE2: "~"
+ UNDER: _
+ UNDERSCORE: _
+
draw_config:
- footer_text: "urob/zmk-config"
+ append_colon_to_layer_header: false
dark_mode: auto
+ footer_text: "urob/zmk-config"
diff --git a/readme.md b/readme.md
index 3e9938034..830e37e82 100644
--- a/readme.md
+++ b/readme.md
@@ -25,6 +25,9 @@ The state of the entire firmware is pinned in my `west`
- Fully automated, nix-based [local build environment](#local-build-environment)

+([Click here](https://raw.githubusercontent.com/urob/zmk-config/refs/heads/main/draw/base.svg)
+for a breakdown by layer - powered by
+[keymap-drawer](https://github.com/caksoylar/keymap-drawer).)
## Timeless homerow mods