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 @@ + +/* start glyphs */ + + + + + + + + + + + + + + + + + + +/* end glyphs */ + + +Base + + + +Q + + + +W + + + +F + + + +P + + + +B + + + +J + + + +L + + + +U + + + +Y + + + +' + + + +A +Gui + + + +R +Alt + + + +S +Shift + + + +T +Ctrl + + + +G + + + +M + + + +N +Ctrl + + + +E +Shift + + + +I +Alt + + + +O +Gui + + + +Z + + + +X + + + +C + + + +D + + + +V + + + +K + + + +H + + + +, +; + + + +. +: + + + +? +! + + + +Spc + +Nav +Sentence + + + +Enter + +Fn + + + +Numword + +Num +Sticky Num + + + +Shift +sticky +Caps Word + + + + +Nav + + + + + + + + + + +PrevWin + + + + + +NextWin + + + + + + + +PgUp + + + +Bspc +Ctl+Bspc + + + + +Ctl+Home + + + +Del +Ctl+Del + + + + + + +Gui +sticky + + + +Alt +sticky + + + +Shift +sticky + + + +Ctrl +sticky + + + + + + +PgDn + + + + +Home + + + + +Ctl+End + + + + +End + + + +Enter + + + + + + + + + + + + + + + + + + +Ins + + + +Tab + + + + + + + + + + + + + + + + + + + + + +CANCEL + + + + +Fn + + + +F12 + + + +F7 + + + +F8 + + + +F9 + + + + + + + + + + + + + + + + + + + + + + + + +F11 +Gui + + + +F4 +Alt + + + +F5 +Shift + + + +F6 +Ctrl + + + + + + + + + + +PrevDesk + +Ctrl + + + + +Shift + + + + +NextDesk + +Alt + + + + + + +F10 + + + +F1 + + + +F2 + + + +F3 + + + + + + + +PinApp + + + + + +PinWin + + + + +Alt+` + + + + + + + + + + + + + + + + + + + + + + + + +Num + + + + + + +7 + + + +8 + + + +9 + + + + + + + + + + + + + + + + + + + + + +0 +Gui + + + +4 +Alt + + + +5 +Shift + + + +6 +Ctrl + + + + + + + + + + + + + + + + + + + + + + + + +1 + + + +2 + + + +3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Sys + + + + +BT1 + + + + + +BT2 + + + + + +BT3 + + + + + +BT4 + + + + + +BTCLR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Boot + + + +Boot + + + + + + + + + + + + + + + + + + + + + + + + + + + +Reset + + + +Reset + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Mouse + + + + + + + + + + + + + + + + + + + + + +PgUp + + + + +Mouse + + + + +PgDn + + + + + + + + + + + + + + + + + + + + + + +Scroll + + + + + +Mouse + + + + + +Mouse + + + + + +Mouse + + + + + +Scroll + + + + + + + + + + + + + + + + + + + + + + + +LeftClick + + + + + +MiddleClick + + + + + +RightClick + + + + + + + + + + + + + + +Scroll + + + + + +Scroll + + + + + +Combos + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Esc + + + +Enter + + + + +SmartMouse + + + + +Tab + + + +Leader + + + + + + + +Shift+Leader + + + + + + +Cut + + + +Copy + + + +Paste + + + +Bspc + + + +Del + + + +( +< + + + +) +> + + + +[ +{ + + + +] +} + + + +@ + + + +# + + + +$ + + + +% + + + +` + + + +\ + + + += + + + +~ + + + +^ + + + ++ + + + +* + + + +& + + + +_ + + + +- + + + +/ + + + +| + + + +urob/zmk-config 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) ![](draw/keymap.png) +([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