kanata Changelog

What's new in kanata 1.6.1 Pre-release 1

Apr 26, 2024
  • Fixed: some major issues with defchordsv2-experimental usability
  • Fixed: key repeat now works again for transparent/unmapped-but-processed keys in Windows and Linux TTY (macOS unknown if affected).

New in kanata 1.6.0 Pre-release 4 (Apr 15, 2024)

  • deflayermap no longer uses the mapping string - it now uses configuration pairs similar items like defvar and defalias, instead of triples.

New in kanata 1.6.0 Pre-release 3 (Mar 29, 2024)

  • Fix: kanata_winIOv2.exe now handles arrow keys and other "extended scancode" keys correctly at the input side.

New in kanata 1.6.0 Pre-release 2 (Mar 26, 2024)

  • Added: concurrent-tap-hold to defcfg, allowing tap-hold actions to time out in parallel
  • Added: --check argument to verify config file without starting kanata
  • Added: lrld-num action, allowing live reloading a specific config argument position
  • Added: block-unmapped-keys to defcfg
  • Added: rapid-event-delay as a mitigation around desktop environments incorrectly handling some rapid events
  • Added: template definition and expansion for reducing boilerplate
  • Added: more switch logic (not, key-timing, input, input-history)
  • Added: lrld-file action
  • Added: improved wording + syntax of fake key operations, changing name from fake to virtual
  • Added: more TCP client requests and server events
  • Added (Windows Interception): windows-interception-keyboard-hwids to specify specific keyboards to intercept
  • Added (Windows Interception): windows-interception-mouse-hwids to specify multiple mice to intercept
  • Added (macOS): kext support for macOS version 10
  • Fixed: chord key association for presses/releases
  • Fixed: chords resulting in multiple tap-holds can now activate both holds
  • Fixed (Linux): exit on SIGTSTP to prevent locking out users from using the keyboard
  • Fixed (Windows LLHOOK): reduced blast radius of lsft workaround (properly this time)
  • Fixed (Windows LLHOOK): handling of locking via Win+L works correctly

New in kanata 1.6.0 Pre-release 1 (Feb 11, 2024)

  • Added: concurrent-tap-hold to defcfg, allowing tap-hold actions to time out in parallel
  • Added: --check argument to verify config file without starting kanata
  • Added: lrld-num action, allowing live reloading a specific config argument position
  • Added: block-unmapped-keys to defcfg
  • Added (Windows Interception): windows-interception-keyboard-hwids to specify specific keyboards to intercept

New in kanata 1.5.0 (Dec 25, 2023)

  • Added: on-idle-fakekey action
  • Added: toggle option for fake key actions
  • Added: error message improvement when list action isnot ina list
  • Added: movemouse-inherit-accel-state
  • Added: movemouse-smooth-diagonals
  • Added: mouse wheel events in defsrc for Linux and Interception
  • Added: unmod and unshift actions
  • Added: key-history in switch
  • Added: tap-hold-except-keys
  • Added (macOS): limited support
  • Added (Linux): allow list syntax to define devices
  • Fixed: avoid crash in an error case of macro parsing
  • Fixed: change unicode yen key mapping to mean KEY_YEN instead of backslash
  • Fixed: rpt-any works in more cases
  • Fixed: allow unmodded list in macro
  • Fixed (Windows-Interception): mbck/mfwd up/down were switched, making Windows behave strangely
  • Fixed (Windows-Interception): send/release Esc for OsCode with unknown mapping instead of crashing
  • Fixed (Linux): maybe-fixed an issue around high CPU and memory consumption due to the rustix dependency
  • Fixed (Linux): fixed issue related to touchpad disable

New in kanata 1.5.0 Pre-release 3 (Nov 24, 2023)

  • Added: on-idle-fakekey action
  • Added: toggle option for fake key actions
  • Added: error message improvement when list action isnot ina list
  • Added: movemouse-inherit-accel-state
  • Added: movemouse-smooth-diagonals
  • Added: mouse wheel events in defsrc for Linux and Interception
  • Added: unmod and unshift actions
  • Added: key-history in switch
  • Fixed: avoid crash in an error case of macro parsing
  • Fixed: change unicode yen key mapping to mean KEY_YEN instead of backslash
  • Fixed: rpt-any works in more cases
  • Fixed: allow unmodded list in macro
  • Fixed (Windows-Interception): mbck/mfwd up/down were switched, making Windows behave strangely
  • Fixed (Windows-Interception): send/release Esc for OsCode with unknown mapping instead of crashing
  • Fixed (Linux): maybe-fixed an issue around high CPU and memory consumption due to the rustix dependency

New in kanata 1.5.0 Pre-release 2 (Oct 25, 2023)

  • BREAKING FIXES:
  • Change unicode yen key mapping to mean KEY_YEN instead of backslash
  • Clear non-oneshot output chord (e.g. C-a) on next action

New in kanata 1.5.0 Pre-release 1 (Aug 28, 2023)

  • Added: on-idle-fakekey action
  • Added: toggle option for fake key actions
  • Fixed: avoid crash in an error case of macro parsing
  • Fixed: change unicode yen key mapping to mean KEY_YEN instead of backslash
  • Fixed: rpt-any works in more cases
  • Fixed (Windows-Interception): mbck/mfwd up/down were switched, making Windows behave strangely

New in kanata 1.4.0 (Jul 31, 2023)

  • BREAKING FIX: kanata now errors on unknown defcfg options instead of silently ignoring them.
  • BREAKING FIX: kanata now errors on unknown defcfg boolean values (e.g. this-is-not-yes) instead of silently ignoring them.
  • BREAKING FIX: kanata timer handling accuracy has improved. The accuracy should now be +-1ms of the configuration. It was slow before this version, meaning a value of 100 for a delay/timeout might result in 110 ms instead. This might mean your configured timeouts and delays are now too fast for what you're used to.

New in kanata 1.4.0 Pre-release 3 (Jul 7, 2023)

  • Fixed: macro with delay at end now behaves correctly
  • Fixed: rpt now follows caps-word
  • Fixed: trigger error on duplicate file name
  • Fixed: time handling accuracy is now +- 1ms.
  • Fixed(Linux): kanata hi-res scroll now works properly
  • Fixed(Linux): symlink path was incorrect
  • Fixed(Windows): swiss $ key
  • Fixed(Windows): kprt key behaviour with Interception
  • Fixed(Windows): lsft-arrow workaround now triggers more accurately, breaking fewer use cases
  • Added: chords in defseq
  • Added: caps-word
  • Added: macro-repeat
  • Added: dynamic-macro-record-stop-truncate
  • Added: defaliasenvcond
  • Added: config directory discovery for kanata cfg file
  • Added: rpt-any
  • Added: flag to remove kanata startup delay
  • Added: chord output key(s)/layer-while-held release only when all input keys are released
  • Added: defcfg item to delegate transparent keys to first layer
  • Added: include in configuration to include other files
  • Added(Windows): increase kanata process priority for better responsiveness
  • Added(Linux): defcfg items for filtering by device name
  • Added(Linux-X11): defcfg item for setting key repeat delay and rate

New in kanata 1.4.0 Pre-release 2 (May 23, 2023)

  • BREAKING CHANGE: kanata now errors on unknown defcfg options instead of silently ignoring them
  • Change log:
  • Fixed: macro with delay at end now behaves correctly
  • Fixed: rpt now follows caps-word
  • Fixed: trigger error on duplicate file name
  • Fixed(Linux): kanata hi-res scroll now works properly
  • Fixed(Windows): kprt key behaviour with Interception
  • Fixed(Windows): lsft-arrow workaround now triggers more accurately, breaking fewer use cases
  • Added: caps-word
  • Added: macro-repeat
  • Added: dynamic-macro-record-stop-truncate
  • Added: defaliasenvcond
  • Added: config directory discovery for kanata cfg file
  • Added: rpt-any
  • Added: flag to remove kanata startup delay
  • Added: chord output key(s)/layer-while-held release only when all input keys are released
  • Added(Linux): defcfg items for filtering by device name

New in kanata 1.4.0 Pre-release 1 (Apr 3, 2023)

  • Fixed: kprt key behaviour with Windows Interception
  • Added: caps-word
  • Added: macro-repeat
  • Added: dynamic-macro-record-stop-truncate

New in kanata 1.3.0 (Mar 27, 2023)

  • WARNING: Kanata now errors on invalid top-level config items. Kanata previously would ignore these and they would do nothing. Now they result in errors in the configuration.
  • Fix: do not close immediately on error
  • Fix: increase keyberon key queue size to help with long tap-hold durations
  • Fix(Linux): change locking pattern causing unresponsiveness in some cases
  • Fix(Linux): add accidentally uncfg'd key names
  • Fix(Windows): release shift properly on shifted arrows
  • Fix(Windows-Interception): correction of deflocalkeys-wintercept
  • Fix(Windows-Interception): fix issue with Interception driver sending Esc
  • Fix(Windows-Interception): use Interception mouse movement instead of SendInput
  • Added: -timeout variants of tap-hold that add a third potential action
  • Added: pretty errors using the miette crate
  • Added: make defcfg optional
  • Added: allow disabling of layer logging
  • Added: ensure all keys are released at the end of a dynamic macro
  • Added: tap-hold-release-keys
  • Added: one-shot variants
  • Added: defvar to allow defining variables
  • Added: fork action that chooses left or right actions based on currently active keys
  • Added(Linux): mouse move support to Linux
  • Added(Linux): systemd notification when kanata has finished starting up
  • Added(Windows-Interception): use SendInput for arbitrary-code in Interception as well

New in kanata 1.3.0 Pre-release 3 (Mar 17, 2023)

  • Fix: do not close immediately on error
  • Fix: increase keyberon key queue size to help with long tap-hold durations
  • Fix(Linux): change locking pattern causing unresponsiveness in some cases
  • Fix(Linux): add accidentally uncfg'd key names
  • Fix(Windows): release shift properly on shifted arrows
  • Fix(Windows-Interception): correction of deflocalkeys-wintercept
  • Fix(Windows-Interception): fix issue with Interception driver sending Esc
  • Fix(Windows-Interception): use Interception mouse movement instead of SendInput

New in kanata 1.3.0 Pre-release 2 (Mar 12, 2023)

  • Fix: do not close immediately on error
  • Fix: increase keyberon key queue size to help with long tap-hold durations
  • Fix(Windows): release shift properly on shifted arrows
  • Fix(Windows-Interception): correction of deflocalkeys-wintercept
  • Fix(Windows-Interception): fix issue with Interception driver sending Esc
  • Fix(Windows-Interception): use Interception mouse movement instead of SendInput
  • Added: -timeout variants of tap-hold that add a third potential action
  • Added: pretty errors using the miette crate
  • Added: make defcfg optional
  • Added: allow disabling of layer logging
  • Added: ensure all keys are released at the end of a dynamic macro
  • Added: tap-hold-release-keys
  • Added(Windows-Interception): use SendInput for arbitrary-code in Interception as well

New in kanata 1.3.0 Pre-release 1 (Feb 27, 2023)

  • Fix: do not close immediately on error
  • Fix(Windows-Interception): correct of deflocalkeys-wintercept
  • Fix(Windows-Interception): fix issue with Interception driver sending Esc
  • Fix(Windows-Interception): use Interception mouse movement instead of SendInput
  • Added: -timeout variants of tap-hold that add a third potential action
  • Added: pretty errors using the miette crate
  • Added: make defcfg optional
  • Added: ensure all keys are released at the end of a dynamic macro
  • Added(Windows-Interception): use SendInput for arbitrary-code in Interception as well

New in kanata 1.2.1 Pre-release 3 (Feb 22, 2023)

  • Fix name of deflocalkeys-wintercept
  • Fix Windows Interception driver randomly pressing esc
  • Fix dynamic macro behaviour keys held at end of macro
  • Fix a locking pattern that causes unresponsiveness
  • Add Linux systemd notification for kanata startup
  • Add Linux support for existing move mouse actions

New in kanata 1.2.1 Pre-release 2 (Feb 19, 2023)

  • Fix name of deflocalkeys-wintercept
  • Fix Windows Interception driver randomly pressing esc
  • Fix dynamic macro behaviour keys held at end of macro
  • Add Linux systemd notification for kanata startup
  • Add Linux support for existing move mouse actions

New in kanata 1.2.1 Pre-release 1 (Feb 12, 2023)

  • Fix name of deflocalkeys-wintercept
  • Fix Windows Interception driver randomly pressing esc
  • Attempted fix for dynamic macro layer change behaviour

New in kanata 1.2.0 (Feb 11, 2023)

  • Fix a bug in fake keys with incorrect layer assignment in the layout
  • Fix sequence timeout
  • Fix some keycodes, add new ones
  • Fix support for multiline comment syntax in cfg file
  • Fix memory leak in live reload
  • Improve device discovery behaviour in Linux
  • Add support for defsrc mouse buttons in Windows
  • Add deflocalkeys to help with non-US layouts
  • Add tap-dance-eager
  • Add mouse movement actions
  • Add sending an initial LayerChange message to newly connected TCP clients
  • Add dynamic macro
  • Add different sequence input modes
  • Add sending arbitrary keycodes
  • Add configuration cycling with lrld-next and lrld-prev
  • Add mappings for higher numbered OS codes

New in kanata 1.2.0 Pre-release 1 (Jan 31, 2023)

  • Changelog:
  • Fix a bug in fake keys with incorrect layer assignment in the layout
  • Fix sequence timeout
  • Fix some keycodes, add new ones
  • Fix support for multiline comment syntax in cfg file
  • Improve device discovery behaviour in Linux
  • Add support for defsrc mouse buttons in Windows
  • Add defcustomkeys to help with non-US layouts
  • Add tap-dance-eager
  • Add mouse movement actions
  • Add sending an initial LayerChange message to newly connected TCP clients
  • Add dynamic macro
  • Add different sequence input modes

New in kanata 1.1.1 Pre-release 1 (Dec 21, 2022)

  • Fix a bug in fake keys with incorrect layer assignment in the layout
  • Add/fix some keycodes
  • Explicitly add support for multiline comment syntax in cfg file
  • Windows: Implement preliminary (still buggy) defsrc mouse buttons
  • Linux: improve device discovery behaviour
  • Add defcustomkeys to help with non-US layouts

New in kanata 1.1.0 (Nov 27, 2022)

  • fix incorrect mapping of kp0
  • fix key repeat behaviour with some key actions
  • add cancellable macro
  • allow some actions in macro
  • improve leniency with linux device definitions

New in kanata 1.0.8 (Nov 6, 2022)

  • Fixes to some Interception keys
  • Improve CPU usage when nothing is being typed
  • Allow colons in device path by escaping with backslash
  • Add AltGr chord shortcut (AG- or RA-)
  • Autodetect keyboard devices if linux-dev is omitted
  • Add more mappable keys
  • Add guaranteed termination of kanata using the key combo LCtrl+Space+Escape
  • Enable defsrc and rempping of mouse buttons in Linux
  • Allow automatic handling of unmapped keys
  • Fix an issue on Windows related to keys mapped to shift
  • Fix behaviour of nested multi actions
  • Fix one-shot behaviour when followed by certain other special actions
  • Add more remappable mouse buttons

New in kanata 1.0.7 (Aug 20, 2022)

  • Add support for the interception driver
  • Add vertical and horizontal mouse scrolling actions
  • Add fake keys feature with press-only, release-only actions
  • Add leader->sequence actions that activate a fake key tap
  • Fix mouse button regression in Linux in v1.0.6

New in kanata 1.0.6 (Jul 31, 2022)

  • Add TCP server for changing layers and publishing layer changes
  • Add release-key and release-layer
  • Add ro key (ABNT2 slash key)
  • Add tap-hold-press and tap-hold-release actions
  • Add Windows AltGr behaviour mitigations
  • Enable Linux to listen for multiple devices