github jtroo/kanata v1.10.0-prerelease-3

latest releases: v1.12.0-prerelease-1, v1.11.0, v1.10.1...
pre-release5 months ago

Configuration guide

Link to the appropriate configuration guide version: guide link.

Changelog (since v1.9.0)

BREAKING CHANGE (macOS): The supported karabiner driverkit is now v6

HIGHLIGHT: the years-old feature request to handle mouse activity in Windows LLHOOK (non-Intereception) is now implemented.

HIGHLIGHT: the GitHub release binaries have been revamped into zipped bundles compiled from GitHub Actions. Windows only has winIOv2 and wintercept variants, but you can still compile the legacy and old-default variants yourself.

Change log
  • fixed: a tap-hold that has been released but is pending is now able to tap
  • fixed: output chord before or after an action using the same key now activates the key
  • fixed: vkey press-release events on sequence completion are prioritized in the event queue
  • fixed: more graceful handling of fast socket disconnection
  • fixed: deflocalkeys no longer tries to parse other variants
  • fixed: vkey actions no longer interfere with tap-hold tap repress
  • fixed: XX action now works with switch action's input logic
  • fixed(Windows): avoid double action activation on first wake after long idle time
  • fixed(macOS): devices with empty names no longer cause a crash
  • fixed(macOS): emit correct code for compose key
  • added: reset-timeout-on-press as an option to tap-hold-release-timeout
  • added: U+<hex_code> syntax for unicode action
  • added: on-physical-idle action
  • added: TCP commands for live reload of configuration
  • added: --list flag to list devices for all platforms
  • added: --cfg-stdin flag to read config from stdin instead of a file
  • added: tap-hold-release-tap-keys-release which has a similar behaviour to QMK "chordal hold"
  • added(Windows): non-Interception support for mouse buttons and scroll
  • added(macOS): key mappings for EjectKey, IntlRo

Sample configuration file

The attached kanata.kbd file is tested to work with the current version. The one in the main branch of the repository may have extra features that are not supported in this release.

Windows

Instructions

Download the appropriate kanata-windows-variant.zip file for your machine CPU. Extract and move the desired binary variant to its intended location. Optionally, download kanata.kbd. With the two files in the same directory, you can double-click the extracted .exe file to start kanata. Kanata does not start a background process, so the window needs to stay open after startup. See this discussion for tips to run kanata in the background.

You need to run via cmd or powershell to use a different configuration file:

kanata_windows_binaryvariant.exe --cfg <cfg_file>

Binary variants

Explanation of items in the binary variant:

  • x64 vs. arm64:
    • Select x64 if your machine's CPU is Intel or AMD. If ARM, use arm64.
  • tty vs gui:
    • tty runs in a terminal, gui runs as a system tray application
  • cmd_allowed vs. not
    • cmd_allowed allows the cmd actions; otherwise, they are compiled out of the application
  • winIOv2 vs. wintercept
    • winIOv2 uses the LLHOOK and SendInput Windows mechanisms to intercept and send events.
    • wintercept uses the Interception driver. Beware of its known issue that disables keyboards and mice until system reboot: Link to issue.
      • you will need to install the driver using the release or from the copy in this repo.
      • the benefit of using this driver is that it is a lower-level mechanism than Windows hooks, and kanata will work in more applications.

wintercept installation

Steps to install the driver

  • extract the .zip
  • run a shell with administrator privilege
  • run the script "command line installer/install-interception.exe"
  • reboot

Additional installation steps

The above steps are those recommended by the interception driver author. However, I have found that those steps work inconsistently and sometimes the dll stops being able to be loaded. I suspect it has something to do with being installed in the privileged location of system32\drivers.

To help with the dll issue, you can copy the following file in the zip archive to the directory that kanata starts from: Interception\library\x64\interception.dll.

E.g. if you start kanata from your Documents folder, put the file there:

Example:

C:\Users\my_user\Documents\
    kanata_windows_wintercept_x64.exe
    kanata.kbd
    interception.dll

kanata_passthru_x64.dll

The Windows kanata_passthru_x64.dll file allows using Kanata as a library within AutoHotkey to avoid conflicts between keyboard hooks installed by both. You can channel keyboard input events received by AutoHotkey into Kanata's keyboard engine and get the transformed keyboard output events (per your Kanata config) that AutoHotkey can then send to the OS.

To make use of this, take kanata_passthru_x64.dll, then the simulated_passthru_ahk folder with a brief example, place the dll there, open kanata_passthru.ahk to read what the example does and then double-click to launch it.

Linux

Instructions

Download the kanata-linux-x64.zip file.

Extract and move the desired binary variant to its intended location. Run the binary in a terminal and point it to a valid configuration file. Kanata does not start a background process, so the window needs to stay open after startup. See this discussion for how to set up kanata with systemd.

Example:

chmod +x kanata   # may be downloaded without executable permissions
sudo ./kanata_linux_x64 --cfg <cfg_file>`

To avoid requiring sudo, follow the instructions here.

Binary variants

Explanation of items in the binary variant:

  • cmd_allowed vs. not
    • cmd_allowed allows the cmd actions; otherwise, they are compiled out of the application

macOS

Instructions

The supported Karabiner driver version in this release is v6.2.0.

WARNING: macOS does not support mouse as input. The mbck and mfwd mouse button actions are also not operational.

Binary variants

Explanation of items in the binary variant:

  • x64 vs. arm64:
    • Select x64 if your machine's CPU is Intel. If ARM, use arm64.
  • cmd_allowed vs. not
    • cmd_allowed allows the cmd actions; otherwise, they are compiled out of the application

Instructions for macOS 11 and newer

You must use the Karabiner driver version v6.2.0.

Please read through this issue comment:

#1264 (comment)

Also have a read through this discussion:

#1537

At some point it may be beneficial to provide concise and accurate instructions within this documentation. The maintainer (jtroo) does not own macOS devices to validate; please contribute the instructions to the file docs/release-template.md if you are able.

Install Karabiner driver for macOS 10 and older:

After installing the appropriate driver for your OS (both macOS <=10 and >=11)

Download the appropriate kanata-macos-variant.zip for your machine CPU.

Extract and move the desired binary variant to its intended location. Run the binary in a terminal and point it to a valid configuration file. Kanata does not start a background process, so the window needs to stay open after startup.

Example:

chmod +x kanata_macos_arm64   # may be downloaded without executable permissions
sudo ./kanata_macos_arm64 --cfg <cfg_file>`

Add permissions

If Kanata is not behaving correctly, you may need to add permissions. Please see this issue: link to macOS permissions issue.

sha256 checksums

Sums
33440a3faccec495d2221ef322566de10831cfc72c4f818dd1cdd2a9d0aafed3  kanata.kbd
233e4194fad81dd1f4670ba9e3a5585b226fb7723df0ad68cac3b1cbd59d3b4b  linux-binaries-x64.zip
bd8fdf0d909c04db5815bfc4ccc69c34ee066501ffc2e46dd88869a01093e171  macos-binaries-arm64.zip
1b8e40080eee45959e66b24e464c46a411d202b1564a1303de5820489153f5f9  macos-binaries-x64.zip
0e3b19cddc963d71abbed5af7fd42c3a1211469178931c03c245e8bf96fbfd70  windows-binaries-arm64.zip
8d971ba472043cf94eeb7cfce6319e328f053a77d82751d6386bd725d2734350  windows-binaries-x64.zip

Don't miss a new kanata release

NewReleases is sending notifications on new releases.