Tags: caksoylar/keymap-drawer
Tags
This is a small release with some quality-of-life improvements and ne… …w layouts. ## Features - You can now pass multiple keymap YAMLs to `keymap draw`, which will be combined to one keymap before drawing - This can be used to have a fixed additional keymap that is added to a parse output, for example with additional combos or layers - Allow defining n 8000 o layers in keymap YAML, in case you only have combos to draw - Add Font Awesome SVG glyphs support via `$$fa:...$$`, see [README](https://github.com/caksoylar/keymap-drawer#custom-svg-glyphs) - Support using `deflayermap` with Kanata ## Misc - Bumped minimum required Python version to 3.12. Please open a discussion item if this creates an unsolvable problem for you. - Fix Kanata block comment parsing ## New layouts - Add a custom `silakka54` physical layout, since QMK Configurator one seems incorrect - Add `apiaster`, `lintilla` `menura`, `eyelash_corne` and `eyelash_sofle ## ZMK drawing workflow - Auto-detect `<keyboard>-layouts.dtsi` files in the repo to use as physical layouts, similar to `<keyboard>.json` detection logic - The detection is now skipped if you provide one of the layout arguments in `draw_args` already **Full Changelog**: v0.21.0...v0.22.0
The highlights in this release are an experimental parser for Kanata … …configurations and ability to specify combos via contents/legends of the triggering keys. ## Features - Add an _experimental_ parser for [Kanata](https://github.com/jtroo/kanata/) configuration files (#95) - Currently supports `defsrc`, layers via `deflayer`, combos via `defchordsv2`, and `include`/`defvar`/`defalias` - Physical layouts are automatically selected depending on keys used in `defsrc`, ranging from a 60% to a full size layout - Output legends can only be customized via [`raw_binding_map`](https://github.com/caksoylar/keymap-drawer/blob/v0.21.0/CONFIGURATION.md#raw_binding_map) - Feel free to open a new [discussion](https://github.com/caksoylar/keymap-drawer/discussions/new?category=kanata) for any feedback, it'd help me prioritize any future improvements - Add a new way to specify [combo](https://github.com/caksoylar/keymap-drawer/blob/v0.21.0/KEYMAP_SPEC.md#combos) positions: using `trigger_keys`/`tk`. This lets you do QMK-like combo specs, where you list the legends for the keys that would be used to trigger a combo - By default a full match for the legend will be searched for, but it will fall back to matching only the center/tap legends if not found - Example: ```yaml layers: base: - { h: Ctrl, t: J } - { h: Alt, t: K } ... combos: # below are all equivalent - { p: [0, 1], k: Esc } - { tk: [{ h: Ctrl, t: J }, { h: Alt, t: K }], k: Esc } - { tk: [J, K], k: Esc } ``` - Add a new physical layout spec: `zmk_keyboard`. This typically corresponds to ZMK keyboard name used in `<keyboard>.keymap`, such as `zmk_keyboard: corne` - Internally this is used as an alias to map to other physical layout types; see the new [physical layouts documentation](https://github.com/caksoylar/keymap-drawer/blob/v0.21.0/PHYSICAL_LAYOUTS.md#keyboard-aliases) for details - `keymap parse` will output this spec by default after parsing ZMK keymaps ## New layouts - Add `tsuru` physical layout - Add corrected `lotus58` layout for its ZMK definition - Add support for Corne v4 layouts with extra keys to `corne_rotated` (#161) ## ZMK drawing workflow - Optimize fetching modules from `west.yml` and turn it on by default - Excludes fetching ZMK and Zephyr, aiming to only get user-specified extra modules - Improve behavior when there are errors in the parse/draw, specifically when `fail_on_error` isn't set - Now the workflow will show as failed when there are any errors, but commit/upload will happen for successful operations if `fail_on_error` is not set - Add a `debug_mode` flag that sets `keymap` CLI's `--debug` flag and echoes the commands run inside the actions - Add `install_version` input that lets you specify `keymap-drawer` version to use. Ignored if `install_branch` is set **Full Changelog**: v0.20.0...v0.21.0
This release fixes the package installation issue due to breaking cha… …nges in Poetry 2.0. (If you really need a backport of the fix to previous versions, let me know.) ## Features - Add a logging mechanism and a debug flag `keymap -d` to the CLI, where it prints debug-level logs to the stderr by default ### Drawing - Add `left` and `right` key fields, to draw on left and right side of the key. - Also add new aliases `top` and `bottom` for `shifted` and `held` respectively. - Initial implementation contributed by @magicDGS - Add automatic line breaking based on word boundaries - Line breaking using spaces is still respected, but additional line breaks can be added if line is too long - Desired line length is controlled by `draw_config.shrink_wide_legends`, set to 0 to disable ### Parsing - Support `zmk,physical-layout` selections in ZMK keymaps' `chosen` nodes, similar to `zmk,matrix-transform` ## Fixes - Fix package installation bug due to breaking change in Poetry 2.0, where `resources` files weren't installed when installing from a wheel (e.g. using `pip install`) - Fix validation of `draw_config` field in keymap YAML files ## Misc - Add `forager` physical layout **Full Changelog**: v0.19.0...v0.20.0
This release updates ZMK parsing to use a tree-sitter-based parser an… …d adds support for ZMK physical layouts in devicetree format (used by Studio), among other improvements. The new parsing implementation results in speed improvements that range from 10% shorter runtime to 7x, with a median speed-up of ~2x in my test cases. If you encounter any new problems with parsing your keymaps, please open an issue! ## Features ### Drawing - Add [`parse_config.layer_legend_map`](https://github.com/caksoylar/keymap-drawer/blob/v0.19.0/CONFIGURATION.md#layer_legend_map) which can be used to customize how layer names are represented in the keymap - This is similar to how e.g. `zmk_keycode_map` is used to change keycode representations, but applied to layer names instead - Add [`dts_layout` option](https://github.com/caksoylar/keymap-drawer/blob/v0.19.0/KEYMAP_SPEC.md#zmk-physical-layout-specification) for physical layouts, and corresponding `--dts-layout` CLI arg. - This is analogous to `qmk_info_json` field pointing to a file path, except the file should contain ZMK's physical layout nodes in devicetree - **Deprecated** `qmk_layout` field in physical layout definitions, and corresponding`--qmk-layout` CLI arg. Use `layout_name` instead, which also works with `dts_layout` above ### Parsing - Switch to a [`tree-sitter-devicetree`](https://pypi.org/project/tree-sitter-devicetree/)-based parser for ZMK, from the old `pyparsing`-based one - Add `--virtual-layers` CLI argument to `keymap parse` - This appends empty "virtual" layers at the end of the keymap; this can be used for assigning combos etc. to show them on a separate diagram - Also look-up behavior prefixes in `raw_binding_map` - For example match entries like `&td` for ZMK behavior bindings like `&td 0` to fix for behaviors nested in hold-taps ## Fixes - Ignore "reserved" ZMK layers while parsing, used for ZMK Studio - Better support for Studio-related ZMK updates to come, see #125 - Switch to using Github raw URL for `mdi` glyphs, by @magicDGS in #132 - The old unpkg URL was unreliable and seems to have eventually disappeared - Add retries and a more generous timeout for fetching SVG glyphs from remote URLs - More correctly center/normalize QMK physical layouts when there are rotated keys ## ZMK drawing workflow * docs: Update minusfive config url by @minusfive in #117 - Use pipx for installs in draw-zmk.yml (PEP 668) by @janwvjaarsveld in #118 - Enable extended globbing for pattern matching by @thazhemadam in #121 ## New Contributors * @janwvjaarsveld made their first contribution in #118 * @thazhemadam made their first contribution in #121 * @dhruvinsh made their first contribution in #126 * @magicDGS made their first contribution in #132 **Full Changelog**: v0.18.1...v0.19.0
PreviousNext