From b4d8aedc9b1510fe5148a3471c08c22c61bb116b Mon Sep 17 00:00:00 2001 From: Darren Victoriano Date: Tue, 4 Feb 2025 21:14:37 -0800 Subject: [PATCH] added flow for keymap drawer --- .github/workflows/keymap-drawer.yml | 15 + images/config_keymap-drawer.yaml | 555 ++++++++++++++++++++++++++++ 2 files changed, 570 insertions(+) create mode 100644 .github/workflows/keymap-drawer.yml create mode 100644 images/config_keymap-drawer.yaml diff --git a/.github/workflows/keymap-drawer.yml b/.github/workflows/keymap-drawer.yml new file mode 100644 index 0000000..a0305f4 --- /dev/null +++ b/.github/workflows/keymap-drawer.yml @@ -0,0 +1,15 @@ +name: Draw ZMK keymaps +on: [workflow_dispatch] + +jobs: + draw: + uses: caksoylar/keymap-drawer/.github/workflows/draw-zmk.yml@main + permissions: + contents: write # allow workflow to commit to the repo + with: + amend_commit: true + keymap_patterns: "config/*.keymap" # path to the keymaps to parse + config_path: "images/config_keymap-drawer.yaml" # config file, ignored if not exists + output_folder: "images" # path to save produced SVG and keymap YAML files + parse_args: "" # map of extra args to pass to `keymap parse`, e.g. "corne:'-l Def Lwr Rse' cradio:''" + draw_args: "" # map of extra args to pass to `keymap draw`, e.g. "corne:'-k corne_rotated' cradio:'-k paroxysm'" diff --git a/images/config_keymap-drawer.yaml b/images/config_keymap-drawer.yaml new file mode 100644 index 0000000..102a9e6 --- /dev/null +++ b/images/config_keymap-drawer.yaml @@ -0,0 +1,555 @@ +# config from: https://github.com/mctechnology17/zmk-config/blob/main/config/config_keymap-drawer.yaml + +draw_config: + key_w: 60 + key_h: 56 + split_gap: 30.0 + combo_w: 28 + combo_h: 26 + key_rx: 6.0 + key_ry: 6.0 + dark_mode: true + n_columns: 1 + separate_combo_diagrams: false + combo_diagrams_scale: 2 + inner_pad_w: 2.0 + inner_pad_h: 2.0 + outer_pad_w: 40.0 + outer_pad_h: 56.0 + line_spacing: 1.2 + arc_radius: 6.0 + append_colon_to_layer_header: true + small_pad: 2.0 + legend_rel_x: 0.0 + legend_rel_y: 0.0 + draw_key_sides: false + key_side_pars: + rel_x: 0.0 + rel_y: 4.0 + rel_w: 12.0 + rel_h: 12.0 + rx: 4.0 + ry: 4.0 + svg_extra_style: | + /* For default sytles, see https://github.com/caksoylar/keymap-drawer/blob/main/keymap_drawer/config.py#L85 */ + + svg.keymap { + font-family: Ubuntu Mono, Inconsolata, Consolas, Liberation Mono, Menlo, monospace; + font-size: 16px; + font-weight: bold; + text-rendering: optimizeLegibility; + } + + /* Color accent for held keys + red = #f00 + green = #0f0 + blue = #00f + yellow = #ff0 + cyan = #0ff + magenta = #f0f + white = #fff + black = #000 + grey = #888 + light grey = #ccc + #ffc + */ + rect.held, rect.combo.held { + fill: #f00; + } + + /* Technique borrowed and extended from https://github.com/englmaxi/zmk-config/blob/master/keymap-drawer/config.yaml */ + .sym_sub_text.tap { + translate: -5px 2px; + font-size: 20px; + } + .sym_sub_text.shifted { + translate: 10px 13px; + font-size: 10px; + opacity: 1.0; + } + .combo.sym_sub_text.tap { + translate: -1px 1px; + } + .combo.sym_sub_text.shifted { + translate: 7px 5px; + font-size: 10px; + opacity: 1.0; + } + + /* Toggle */ + .toggle.shifted { + translate: -10px 12px; + } + + .toggle.hold { + translate: 13px -23px; + } + + /* Variant for tap-dances */ + .tap_dance.tap { + translate: -7px 0px; + font-size: 12px; + } + .tap_dance.shifted { + translate: 7px 17px; + font-size: 12px; + opacity: 1.0; + } + + /* Variant for symbol next to symbol */ + .sym_by_sym.tap { + translate: -6px 0px; + } + .sym_by_sym.shifted { + translate: 10px 12px; + opacity: 1.0; + } + + .combo.sym_by_sym.tap { + translate: -35px 0px; + } + .combo.sym_by_sym.shifted { + translate: 35px 20px; + opacity: 1.0; + } + + .combo.sym_by_sym.hold { + visibility: hidden; + } + + /* hide hold box for combo sym_by_sym */ + .combo.sym_by_sym.hold > path[stroke="none"][fill="none"] { + visibility: hidden; + } + footer_text: 'Keymap View: keymap-drawer' + shrink_wide_legends: 6 + style_layer_activators: true + glyph_tap_size: 18 + glyph_hold_size: 15 + glyph_shifted_size: 15 + glyphs: {} +parse_config: + preprocess: true + skip_binding_parsing: false + raw_binding_map: + "&sys_reset": Reset + "&bootloader": Boot + "&swapper": Win Next + "&caps_word": Caps Word + "&inv_qm": ¿ + "&kp LC(LG(LEFT))": Desk Left + "&kp LC(LG(RIGHT))": Desk Right + "&kp LC(TAB)": Tab Right + "&kp LC(LS(TAB))": Tab Left + "&kp LA(F4)": Win Close + "&kp LC(F4)": Tab Close + "&kp LS(TAB)": Win Prev + "&kp LS(INS)": Paste + "&kp LG(L)": Lock + "&out OUT_USB": Out USB + "&out OUT_BLE": Out BLE + "&bt BT_SEL 0": BT 1 + "&bt BT_SEL 1": BT 2 + "&bt BT_SEL 2": BT 3 + "&bt BT_SEL 3": BT 4 + "&bt BT_SEL 4": BT 5 + DISPLAY_UP: + t: $$mdi:television-classic$$ + h: $$mdi:arrow-up$$ + type: tap_dance + DISPLAY_DOWN: + t: $$mdi:television-classic$$ + h: $$mdi:arrow-down$$ + type: tap_dance + DISPLAY_LEFT: + t: $$mdi:television-classic$$ + h: $$mdi:arrow-left$$ + type: tap_dance + DISPLAY_RIGHT: + t: $$mdi:television-classic$$ + h: $$mdi:arrow-right$$ + type: tap_dance + DISPLAY_SPACE: + t: $$mdi:television-classic$$ + h: $$mdi:keyboard-space$$ + type: tap_dance + "&rgb_ug RGB_TOG": + t: $$mdi:led-on$$ + h: $$mdi:toggle-switch$$ + s: $$mdi:led-outline$$ + type: toggle + "&rgb_ug RGB_VAI": + t: $$mdi:led-on$$ + s: $$tabler:brightness-up$$ + type: sym_by_sym + "&rgb_ug RGB_VAD": + t: $$mdi:led-outline$$ + s: $$tabler:brightness-down$$ + type: sym_by_sym + "&rgb_ug RGB_BRD": + t: $$mdi:led-on$$ + s: $$tabler:brightness-up$$ + type: sym_by_sym + "&rgb_ug RGB_BRI": + t: $$mdi:led-outline$$ + s: $$tabler:brightness-down$$ + type: sym_by_sym + "&rgb_ug RGB_SAI": + t: $$mdi:led-outline$$ + s: $$mdi:eyedropper$$ + type: sym_by_sym + "&rgb_ug RGB_SAD": + t: $$mdi:led-on$$ + s: $$mdi:eyedropper$$ + type: sym_by_sym + "&rgb_ug RGB_HUI": + t: $$mdi:led-on$$ + s: $$mdi:palette$$ + type: sym_by_sym + "&rgb_ug RGB_HUD": + t: $$mdi:led-outline$$ + s: $$mdi:palette$$ + type: sym_by_sym + "&rgb_ug RGB_RMOD": + t: $$mdi:led-on$$ + h: $$mdi:page-previous-outline$$ + type: tap_dance + "&rgb_ug RGB_MOD": + t: $$mdi:led-on$$ + h: $$mdi:page-next-outline$$ + type: tap_dance + "&rgb_ug RGB_EFF": + t: $$mdi:led-on$$ + h: $$mdi:page-previous-outline$$ + type: tap_dance + "&rgb_ug RGB_EFR": + t: $$mdi:led-on$$ + h: $$mdi:page-next-outline$$ + type: tap_dance + "&rgb_ug RGB_SPI": + t: $$mdi:led-on$$ + h: $$mdi:speedometer$$ + type: sym_by_sym + "&rgb_ug RGB_SPD": + t: $$mdi:led-on$$ + h: $$mdi:speedometer-slow$$ + type: sym_by_sym + "&rgb_ug RGB_UP": + t: $$mdi:led-on$$ + h: $$mdi:arrow-up$$ + type: tap_dance + "&rgb_ug RGB_DOWN": + t: $$mdi:led-on$$ + h: $$mdi:arrow-down$$ + type: tap_dance + "&rgb_ug RGB_LEFT": + t: $$mdi:led-on$$ + h: $$mdi:arrow-left$$ + type: tap_dance + "&rgb_ug RGB_RIGHT": + t: $$mdi:led-on$$ + h: $$mdi:arrow-right$$ + type: tap_dance + "&rgb_ug RGB_SPACE": + t: $$mdi:led-on$$ + h: $$mdi:keyboard-space$$ + type: tap_dance + "&rgb_ug RGB_COLOR_HSB(0,0,100)": + t: $$mdi:led-on$$ + h: $$mdi:palette$$ + type: tap_dance + "&rgb_ug RGB_COLOR_HSB(224,100,100)": + t: $$mdi:led-on$$ + h: $$mdi:palette$$ + type: tap_dance + U_WH_L: + t: $$mdi:mouse-outline$$ + h: $$mdi:arrow-left$$ + type: tap_dance + U_WH_R: + t: $$mdi:mouse-outline$$ + h: $$mdi:arrow-right$$ + type: tap_dance + U_WH_U: + t: $$mdi:mouse-outline$$ + h: $$mdi:arrow-up$$ + type: tap_dance + U_WH_D: + t: $$mdi:mouse-outline$$ + h: $$mdi:arrow-down$$ + type: tap_dance + U_MS_L: + t: $$mdi:mouse$$ + h: $$mdi:arrow-left$$ + type: tap_dance + U_MS_D: + t: $$mdi:mouse$$ + h: $$mdi:arrow-down$$ + type: tap_dance + U_MS_R: + t: $$mdi:mouse$$ + h: $$mdi:arrow-right$$ + type: tap_dance + U_MS_U: + t: $$mdi:mouse$$ + h: $$mdi:arrow-up$$ + type: tap_dance + CLICK_LEFT: $$mdi:cursor-default-click$$ + CLICK_RIGHT: $$mdi:cursor-default-click-outline$$ + CLICK_MIDDLE: $$mdi:cursor-default-click-outline$$ + MEDIA_ESC: + t: $$mdi:keyboard-esc$$ + h: $$mdi:music-note$$ + MOUSE_TAB: + t: $$mdi:keyboard-tab$$ + h: $$mdi:mouse$$ + NUMBER_SPACE: + t: $$mdi:keyboard-space$$ + h: $$mdi:numeric$$ + "&mo _FUNCTION": $$mdi:function-variant$$ + "&mo _CONFIG": $$mdi:cog$$ + "&mo _LOCK": $$mdi:lock$$ + "&mo _SYMBOL": $$mdi:symbol$$ + "&mo _DISPLAY": $$mdi:television-classic$$ + "&mo _OLED": $$mdi:television-classic$$ + "&mo _LINUX": $$mdi:linux$$ + "&mo _RGB": $$mdi:led-on$$ + DE_CAPS: $$mdi:keyboard-caps$$ + TAB: $$mdi:keyboard-tab$$ + "&mt LSHFT COMMA": + t: $$mdi:google-downasaur$$ + h: $$mdi:apple-keyboard-shift$$ + type: tap_dance + "&kp LSHFT": $$mdi:apple-keyboard-shift$$ + "&kp LCTRL": $$mdi:apple-keyboard-control$$ + "&kp RCTRL": $$mdi:apple-keyboard-control$$ + "&kp LGUI": $$mdi:apple-keyboard-command$$ + "&kp RGUI": $$mdi:apple-keyboard-command$$ + "&kp LALT": $$mdi:apple-keyboard-option$$ + "&kp RALT": $$mdi:apple-keyboard-option$$ + "&kp RSHFT": $$mdi:apple-keyboard-shift$$ + "&kp BSPC": $$mdi:backspace-outline$$ + sticky_label: sticky + toggle_label: toggle + tap_toggle_label: tap-toggle + trans_legend: + t: ▽ + type: trans + layer_legend_map: {} + mark_alternate_layer_activators: false + modifier_fn_map: + left_ctrl: Ctl + right_ctrl: Ctl + left_shift: Sft + right_shift: Sft + left_alt: Alt + right_alt: AltGr + left_gui: Gui + right_gui: Gui + keycode_combiner: "{mods}+{key}" + mod_combiner: "{mod_1}+{mod_2}" + special_combinations: + left_ctrl+left_alt+left_gui+left_shift: Hyper + left_ctrl+left_alt+left_shift: Meh + qmk_remove_keycode_prefix: + - KC_ + qmk_keycode_map: + XXXXXXX: "" + "NO": "" + MINUS: "-" + MINS: "-" + EQUAL: "=" + EQL: "=" + LEFT_BRACKET: "[" + LBRC: "[" + RIGHT_BRACKET: "]" + RBRC: "]" + BACKSLASH: \ + BSLS: \ + NONUS_HASH: "#" + NUHS: "#" + SEMICOLON: ; + SCLN: ; + QUOTE: "'" + QUOT: "'" + GRAVE: "`" + GRV: "`" + COMMA: "," + COMM: "," + DOT: . + SLASH: / + SLSH: / + TILDE: "~" + TILD: "~" + EXCLAIM: "!" + EXLM: "!" + AT: "@" + HASH: "#" + DOLLAR: $ + DLR: $ + PERCENT: "%" + PERC: "%" + CIRCUMFLEX: ^ + CIRC: ^ + AMPERSAND: "&" + AMPR: "&" + ASTERISK: "*" + ASTR: "*" + LEFT_PAREN: ( + LPRN: ( + RIGHT_PAREN: ) + RPRN: ) + UNDERSCORE: _ + UNDS: _ + PLUS: + + LEFT_CURLY_BRACE: "{" + LCBR: "{" + RIGHT_CURLY_BRACE: "}" + RCBR: "}" + PIPE: "|" + COLON: ":" + COLN: ":" + DOUBLE_QUOTE: '"' + DQUO: '"' + DQT: '"' + LEFT_ANGLE_BRACKET: < + LABK: < + LT: < + RIGHT_ANGLE_BRACKET: ">" + RABK: ">" + GT: ">" + QUESTION: "?" + QUES: "?" + zmk_remove_keycode_prefix: [] + zmk_keycode_map: + C_VOL_UP: Vol Up + C_VOL_DN: Vol Down + C_AL_CALC: Calc + LCTRL: Ctrl + RCTRL: Ctrl + LALT: Alt + RALT: Alt + LGUI: Gui + RGUI: Gui + LSHFT: Shift + RSHFT: Shift + ESC: Esc + SPACE: ␣ + BSPC: ⌫ + RET: ⏎ + TAB: ↹ + DEL: ⌦ + PG_UP: Page Up + PG_DN: Page Down + INS: Insert + HOME: Home + END: End + CAPS: Caps Lock + PSCRN: Print Scrn + PAUSE_BREAK: Pause Break + UP: ↑ + DOWN: ↓ + LEFT: ← + RIGHT: → + C_PP: ⏯ + C_NEXT: ⏭️ + C_PREV: ⏮️ + 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: _ + zmk_combos: + combo_tab: + draw_separate: true + combo_del: + draw_separate: true + combo_f12: + align: bottom + combo_btclr: + align: bottom + combo_play: + align: right + combo_capswd: + draw_separate: true + combo_semi: + draw_separate: true + combo_grave: + draw_separate: true + combo_lpar: + draw_separate: true + combo_rpar: + draw_separate: true + combo_lbkt: + draw_separate: true + combo_rbkt: + draw_separate: true + combo_esc: + draw_separate: true + combo_ret: + draw_separate: true + combo_lock: + draw_separate: true + combo_bslh: + draw_separate: true + combo_slsh: + draw_separate: true + zmk_preamble: "#define KEYMAP_DRAWER" + zmk_additional_includes: []