v1.10.0
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
WARNING - KNOWN ISSUE: touchpad/smooth scrolling is broken in Windows because of the below feature, when using process-unmapped-keys yes
Workaround: explicitly ignore the mouse activity (see below). This should be fixed in v1.10.1-prerelease-1 and later.
(defcfg
process-unmapped-keys (all-except lctl ralt caps mwu mwd mwl mwr)
)
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:
XXaction now works withswitchaction'sinputlogic - 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
composekey - added:
reset-timeout-on-pressas an option totap-hold-release-timeout - added:
U+<hex_code>syntax for unicode action - added:
on-physical-idleaction - added: TCP commands for live reload of configuration
- added:
--listflag to list devices for all platforms - added:
--cfg-stdinflag to read config from stdin instead of a file - added:
tap-hold-release-tap-keys-releasewhich has a similar behaviour to QMK "chordal hold" - added: mouse-accel actions for inertial scrolling
- 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
cmdactions; otherwise, they are compiled out of the application
- cmd_allowed allows the
- 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 will work in more applications.
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
cmdactions; otherwise, they are compiled out of the application
- cmd_allowed allows the
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
cmdactions; otherwise, they are compiled out of the application
- cmd_allowed allows the
Instructions for macOS 11 and newer
You must use the Karabiner driver version v6.2.0.
Please read through this issue comment:
https://github.com/jtroo/kanata/issues/1264#issuecomment-2763085239
Also have a read through this discussion:
https://github.com/jtroo/kanata/discussions/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:
- Install the Karabiner kernel extension.
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
fe6ba3768c1a7a60d94628a613f168f464b7ab88d34077e26896a7d3967e5eb6 linux-binaries-x64-v1.10.0.zip
19fdeb89087b83cd6c1ac8f49612206acbb5134f5b14154966dcb3fa80dc9150 macos-binaries-arm64-v1.10.0.zip
c1d5a36b630a61d0b43ed66beaa752405a23616c7972db04aa90d4341bc7264a macos-binaries-x64-v1.10.0.zip
f6b192fefca10e384efea26d9cd22a337910faa58ae9487350226879a1022709 windows-binaries-arm64-v1.10.0.zip
2fd5a32a0ca96308ee665ed62ad96f14c882dea10e7a43873b8f8113f1ee5b95 windows-binaries-x64-v1.10.0.zip