Skip to content

v1.3.0

Latest

Choose a tag to compare

@coffeeOwl1 coffeeOwl1 released this 25 Jun 02:21
· 8 commits to main since this release

[1.3.0] - 2026-06-24

Added

  • Custom key labels. Rename what any key shows on the board — name a layer key
    ("Nav", "Sym"), spell out a cryptic keysym, or annotate a macro — without changing the
    binding. Labels are stored as keyd-safe # keyd-viz: comment lines, so they survive a
    round-trip through keyd untouched and a plain keyd install simply ignores them.
  • Edit mode (visual config editing). An explicit edit toggle turns the viewer
    into an editor for the displayed config: click a key, then set its binding by typing
    it, pressing the key you want (capture), or searching keyd's full key list
    (pick…); watch the board re-render live, then persist. You can also make a key
    dual-function (tap/hold) — a hold layer/modifier + a tap key, chosen by an
    outcome-labelled "feel" rather than raw timeouts — unbind a key so keyd stops
    remapping it, and get an inline warning when a binding activates a layer the config
    never defines (keyd would reject it). The editor is line-faithful — untouched lines
    round-trip byte-for-byte — and any file it can't reproduce exactly (or that keyd would
    reject) stays view-only rather than risk clobbering it. Persist via save draft
    (writes to ~/.config/keyd-viz/drafts/ with copy-paste install steps, a diff, and a
    keyd check verdict) — works on every install, including the AppImage.
  • One-click apply with auto-revert (AUR/source installs). Apply to /etc/keyd…
    hands the edited config to keydviz-apply, a new one-shot privileged tool invoked
    via polkit (pkexec; a password per apply, by design). It validates with
    keyd check, writes atomically with a timestamped backup, reloads keyd, and then
    arms a dead-man's switch: only clicking KEEP within the countdown makes the
    change permanent — timeout, closing the app, or a crash automatically restores the
    previous config and reloads. command()/macro() configs require an extra explicit
    confirmation first. keyd's panic sequence (Backspace+Escape+Enter) remains the
    always-available failsafe and is surfaced in the UI during the countdown.
  • Richer editing — chords, macros, daemon options, and layers. Beyond simple
    remaps, edit mode now builds chords (press key1+key2 → an action), a
    structured macro editor (key / typed-text / chord / delay steps, with repeat),
    and the [global] daemon options (overload/timeout/etc., with unit-aware fields).
    You can create, rename, and delete layers, and create a fresh config for an
    unconfigured keyboard or delete an existing one — both through the same vetted
    one-click apply path.
  • Discoverable layer actions. A dedicated layer key-mode lets you point a key — or
    a chord — at a layer and pick how it activates: momentary (active while held),
    toggle (latches on/off), or one-shot (applies to the next key only), without
    hand-writing layer()/toggle()/oneshot(). Dual-function (tap/hold) keys now also
    surface the home-row-mod "feel", so a hold-for-modifier / tap-for-letter key is set by
    the outcome you want rather than raw timeouts.
  • Backup and restore for applied configs. Every one-click apply leaves a timestamped
    backup; a restore panel lists them newest-first and rolls any one back through the same
    validate-write-reload-countdown path (so a restore is as safe as an apply).
  • Composite layer overlays in the viewer. A layer defined as a composite of others
    ([a+b]) now renders as an overlay of its constituents, so the board shows what the
    combined layer actually produces.