Skip to content

Releases: jtroo/kanata

v1.10.1

17 Dec 07:51

Choose a tag to compare

Configuration guide

Link to the appropriate configuration guide version: guide link.

Changelog (since v1.10.0)

BUGFIX HIGHLIGHT: mouse activity is not intercepted when configuring process-unmapped-keys yes. Explicitly defining in defsrc will still have the desired behaviour.

Change log

fix: omit mouse activity from process-unmapped-keys (#1880)
fix: avoid leaks in custom actions (#1853)
fix: make td-eager first custom action press work (#1852)
fix: evaluate switch transparency correctly (#1885)
fix(oneshot): release other actions on same key (#1881)
fix(jis,winiov2): add mapping for hiragana/katakana (#1893)
fix(jis,winiov2): add mapping for yen/pipe key (#1886)
feat: add --no-wait flag to skip exit prompt (#1872)
feat: add string mappings for keypad parenthesis keys (#1871)
feat: add tap-hold-tap-keys action (#1866)
feat(linux): add VID/PID to --list output (#1857)
doc: adjust transparent keys (#1888)
doc: clarify setmouse platforms and coordinates (#1883)
doc: reference tap-hold discussion and docs
doc: add push-msg action documentation and sample config (#1867)
doc: add comprehensive TCP protocol documentation (#1868)
doc: fix dead link for keys list (#1856)
doc(linux): update kanata setup and uinput instructions (#1891)

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
f755a4bdeb26821893ef954732db34eda845dcecd421c6f06a8b4b280ea38a39  kanata-linux-binaries-v1.10.1-x64.zip
2b9a1d012c83e62912f719f3be2d22f2cc3d63c6e0ef025bf980e4d427e1cb09  kanata-macos-binaries-arm64-v1.10.1.zip
0c57ed05f4b74d0832891bfcc1008bd5e5c2b87cc8d6c47ef281af7be201e5fc  kanata-macos-binaries-x64-v1.10.1.zip
5ab9748cd99f5b9acf95f8119808d3b53fd72fef9021afcdcd98df9ef3b4b308  kanata-windows-binaries-arm64-v1.10.1.zip
7c8fad2264d39245441a7e232d2dc6eb09004f475fb926576ab5cea880f9dcc7  kanata-windows-binaries-x64-v1.10.1.zip
16f01dc778edcda62a91c394ee4f8bf8ca1a0a8df5bc4400a42a696fecd9d07e  kanata.kbd

v1.10.1-prerelease-1

05 Dec 11:15

Choose a tag to compare

v1.10.1-prerelease-1 Pre-release
Pre-release

Configuration guide

Link to the appropriate configuration guide version: guide link.

Changelog (since v1.10.0)

BUGFIX HIGHLIGHT: mouse activity is not intercepted when configuring process-unmapped-keys yes. Explicitly defining in defsrc will still have the desired behaviour.

Change log
  • feat: add --no-wait flag to skip exit prompt (#1872)
  • feat: add string mappings for keypad parenthesis keys (#1871)
  • feat: add tap-hold-tap-keys action (#1866)
  • feat(linux): add VID/PID to --list output (#1857)
  • fix: omit mouse activity from process-unmapped-keys (#1880)
  • fix: avoid leaks in custom actions (#1853)
  • fix: make td-eager first custom action press work (#1852)
  • fix: clippy warnings

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
03668fd658463151077a4c73c848429a8581ba907272d052eaab1c4560f590ae  kanata-linux-binaries-x64-v1.10.1-prerelease-1.zip
cc6cb4b07c188bfc7093932dd6031cd9690c262f1b8b74afe888e77b5e235089  kanata-macos-binaries-arm64-v1.10.1-prerelease-1.zip
963ebff9665cd14545e85e507bc4f9a8f8afad2294859041063548409a8814e6  kanata-macos-binaries-x64-v1.10.1-prerelease-1.zip
8ec5f54e7df5a10077e9b32ac54572d99b6e16545ab4c2d8894da5e97b163208  kanata-windows-binaries-arm64-v1.10.1-prerelease-1.zip
3e28379018a45262f480fa4d6f91ffcf0d4a3a5739cdb18d2e79ee833b3c8eb0  kanata-windows-binaries-x64-v1.10.1-prerelease-1.zip
16f01dc778edcda62a91c394ee4f8bf8ca1a0a8df5bc4400a42a696fecd9d07e  kanata.kbd

v1.10.0

11 Nov 20:49

Choose a tag to compare

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: 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: 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 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
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

v1.10.0-prerelease-3

03 Nov 09:43

Choose a tag to compare

v1.10.0-prerelease-3 Pre-release
Pre-release

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

v1.10.0-prerelease-2

11 Oct 07:41

Choose a tag to compare

v1.10.0-prerelease-2 Pre-release
Pre-release

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.

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

NOTE: All Windows binaries are compiled for x86-64 architectures only.

Download kanata.exe. Optionally, download kanata.kbd. With the two files in the same directory, you can double-click the exe 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 kanata.exe via cmd or powershell to use a different configuration file:

kanata.exe --cfg <cfg_file>


NOTE: The kanata_winIOv2.exe variant contains an experimental breaking change that fixes an issue where the Windows LLHOOK+SendInput version of kanata does not handle defsrc consistently compared to other versions and other operating systems. This variant will be of interest to you for any of the following reasons:

  • you are a new user
  • you are a cross-platform user
  • you use multiple language layouts within Windows and want kanata to handle the key positions consistently

This variant contains the same output change as in the scancode variant below, and also changes the input to also operate on scancodes.


NOTE: The kanata_legacy_output.exe variant has the same input defsrc handling as the standard kanata.exe file. It uses the same output mechanism as the standard kanata.exe variant in version 1.6.1 and earlier. In other words the formerly experimental_scancode variant is now the default binary. The non-legacy variants contain changes for an issue; the fix is omitted from this legacy variant. The legacy variant is included in case issues are found with the new output mechanism.


Linux

Instructions

NOTE: All Linux binaries are compiled for x86 architectures only.

Download kanata.

Run it 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.

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

To avoid requiring sudo, follow the instructions here.

macOS

Instructions

WARNING: feature support on macOS is limited.

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

Old instructions for macOS 11 and newer

Click to expand

First install Karabiner driver for macOS 11 and newer:

To activate it:

sudo /Applications/.Karabiner-VirtualHIDDevice-Manager.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Manager activate

Then you need to run the daemon. You should run this in the background somehow or leave the terminal window where you run this command open.

sudo '/Library/Application Support/org.pqrs/Karabiner-DriverKit-VirtualHIDDevice/Applications/Karabiner-VirtualHIDDevice-Daemon.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Daemon'

Install Karabiner driver for macOS 10 and older:

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

Download a kanata_macos variant.

Run it 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.

cmd_allowed variants

Explanation

The binaries with the name cmd_allowed are conditionally compiled with the cmd action enabled.

Using the regular binaries, there is no way to get the cmd action to work. This action is restricted behind conditional compilation because I consider the action to be a security risk that should be explicitly opted into and completely forbidden by default.

wintercept variants

Explanation and instructions

Warning: known issue

This issue in the Interception driver exists: oblitum/Interception#25. This will affect you if you put your PC to sleep instead of shutting it down, or if you frequently plug/unplug USB devices.

Description

These variants use the Interception driver instead of Windows hooks. 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. This means kanata will work in more applications.

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 think 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:

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

kanata_passthru.dll

Explanation and instructions

The Windows kanata_passthru.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, download kanata_passthru.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.

sha256 checksums

Sums
1cc0349bf59e7c07c324baff0a45c9c3ad921f5fe26a5054da7198c4a3fb29d6  kanata
b322ab3457d5b8fb59bb84217c1c9b0870f7f3a79322829b2121aee7ffc7b78e  kanata.exe
87fbe84cc768...
Read more

v1.10.0-prerelease-1

13 Sep 07:59

Choose a tag to compare

v1.10.0-prerelease-1 Pre-release
Pre-release

Configuration guide

Link to the appropriate configuration guide version: guide link.

Changelog (since v1.9.0)

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

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 mapping for EjectKey

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

NOTE: All Windows binaries are compiled for x86-64 architectures only.

Download kanata.exe. Optionally, download kanata.kbd. With the two files in the same directory, you can double-click the exe 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 kanata.exe via cmd or powershell to use a different configuration file:

kanata.exe --cfg <cfg_file>


NOTE: The kanata_winIOv2.exe variant contains an experimental breaking change that fixes an issue where the Windows LLHOOK+SendInput version of kanata does not handle defsrc consistently compared to other versions and other operating systems. This variant will be of interest to you for any of the following reasons:

  • you are a new user
  • you are a cross-platform user
  • you use multiple language layouts within Windows and want kanata to handle the key positions consistently

This variant contains the same output change as in the scancode variant below, and also changes the input to also operate on scancodes.


NOTE: The kanata_legacy_output.exe variant has the same input defsrc handling as the standard kanata.exe file. It uses the same output mechanism as the standard kanata.exe variant in version 1.6.1 and earlier. In other words the formerly experimental_scancode variant is now the default binary. The non-legacy variants contain changes for an issue; the fix is omitted from this legacy variant. The legacy variant is included in case issues are found with the new output mechanism.


Linux

Instructions

NOTE: All Linux binaries are compiled for x86 architectures only.

Download kanata.

Run it 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.

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

To avoid requiring sudo, follow the instructions here.

macOS

Instructions

WARNING: feature support on macOS is limited.

Instructions for macOS 11 and newer

Please read through this issue comment:

#1264 (comment)

Also have a read through this discussion:

#1537

Old instructions for macOS 11 and newer

Click to expand

First install Karabiner driver for macOS 11 and newer:

To activate it:

sudo /Applications/.Karabiner-VirtualHIDDevice-Manager.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Manager activate

Then you need to run the daemon. You should run this in the background somehow or leave the terminal window where you run this command open.

sudo '/Library/Application Support/org.pqrs/Karabiner-DriverKit-VirtualHIDDevice/Applications/Karabiner-VirtualHIDDevice-Daemon.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Daemon'

Install Karabiner driver for macOS 10 and older:

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

Download a kanata_macos variant.

Run it 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.

cmd_allowed variants

Explanation

The binaries with the name cmd_allowed are conditionally compiled with the cmd action enabled.

Using the regular binaries, there is no way to get the cmd action to work. This action is restricted behind conditional compilation because I consider the action to be a security risk that should be explicitly opted into and completely forbidden by default.

wintercept variants

Explanation and instructions

Warning: known issue

This issue in the Interception driver exists: oblitum/Interception#25. This will affect you if you put your PC to sleep instead of shutting it down, or if you frequently plug/unplug USB devices.

Description

These variants use the Interception driver instead of Windows hooks. 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. This means kanata will work in more applications.

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 think 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:

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

kanata_passthru.dll

WARNING: In this version, the dll is not included because of a build issue. This will be fixed in the next release.

Explanation and instructions

The Windows kanata_passthru.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, download kanata_passthru.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.

sha256 checksums

Sums
b2c695992094c8bcb0fad78ac70c1632dabb10c18bdd60a740c0020cafdaf032  kanata
52cce61f47f1267e7024b3588a4eb4f437688fc84a449ddcd20aa70079439744  kanata.exe
2015fdc16b63e3c23049ea539f90d050815...
Read more

v1.9.0

23 Jun 07:53

Choose a tag to compare

Configuration guide

Link to the appropriate configuration guide version: guide link.

Changelog (since v1.8.1)

Change log
  • Added: name change of tap-timeout to tap-repress-timeout
  • Added: capability to tap a key on mouse movement
  • Added (Linux): configuration item for customizing kanata device name for uinput
  • Added (macOS): mappings for Lang1/Lang2, for Japanese keyboard
  • Fixed (macOS): unicode should now work properly in all applications

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

NOTE: All Windows binaries are compiled for x86-64 architectures only.

Download kanata.exe. Optionally, download kanata.kbd. With the two files in the same directory, you can double-click the exe 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 kanata.exe via cmd or powershell to use a different configuration file:

kanata.exe --cfg <cfg_file>


NOTE: The kanata_winIOv2.exe variant contains an experimental breaking change that fixes an issue where the Windows LLHOOK+SendInput version of kanata does not handle defsrc consistently compared to other versions and other operating systems. This variant will be of interest to you for any of the following reasons:

  • you are a new user
  • you are a cross-platform user
  • you use multiple language layouts within Windows and want kanata to handle the key positions consistently

This variant contains the same output change as in the scancode variant below, and also changes the input to also operate on scancodes.


NOTE: The kanata_legacy_output.exe variant has the same input defsrc handling as the standard kanata.exe file. It uses the same output mechanism as the standard kanata.exe variant in version 1.6.1 and earlier. In other words the formerly experimental_scancode variant is now the default binary. The non-legacy variants contain changes for an issue; the fix is omitted from this legacy variant. The legacy variant is included in case issues are found with the new output mechanism.


Linux

Instructions

NOTE: All Linux binaries are compiled for x86 architectures only.

Download kanata.

Run it 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.

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

To avoid requiring sudo, follow the instructions here.

macOS

Instructions

WARNING: feature support on macOS is limited.

Instructions for macOS 11 and newer

Please read through this issue comment:

#1264 (comment)

Also have a read through this discussion:

#1537

Old instructions for macOS 11 and newer

Click to expand

First install Karabiner driver for macOS 11 and newer:

To activate it:

sudo /Applications/.Karabiner-VirtualHIDDevice-Manager.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Manager activate

Then you need to run the daemon. You should run this in the background somehow or leave the terminal window where you run this command open.

sudo '/Library/Application Support/org.pqrs/Karabiner-DriverKit-VirtualHIDDevice/Applications/Karabiner-VirtualHIDDevice-Daemon.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Daemon'

Install Karabiner driver for macOS 10 and older:

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

Download a kanata_macos variant.

Run it 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.

cmd_allowed variants

Explanation

The binaries with the name cmd_allowed are conditionally compiled with the cmd action enabled.

Using the regular binaries, there is no way to get the cmd action to work. This action is restricted behind conditional compilation because I consider the action to be a security risk that should be explicitly opted into and completely forbidden by default.

wintercept variants

Explanation and instructions

Warning: known issue

This issue in the Interception driver exists: oblitum/Interception#25. This will affect you if you put your PC to sleep instead of shutting it down, or if you frequently plug/unplug USB devices.

Description

These variants use the Interception driver instead of Windows hooks. 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. This means kanata will work in more applications.

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 think 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:

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

kanata_passthru.dll

Explanation and instructions

The Windows kanata_passthru.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, download kanata_passthru.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.

sha256 checksums

Sums
440ce0f754adc32b1e9d0f47c0016c59222eaad7c1b2c86ce19f2559e4d54ffa  kanata
18bdeaa4c51ce404ece4d94b6fa00aa355062dd703236398eeb12e684493ddcb  kanata.exe
067e80d41531089055527d9aebe3671cae395607a4f8e5793f76731d43e11527  kanata.kbd
947563c29394955f033c0d749446f7b7cd60279b7b96cd7eb51011e2cbea1aaf  kanata_cmd_allowed
8b4f9e9c8b67bdb989e40d4152c5ac18d722108177cdb980cd7b2c395f95152f  kanata_cmd_allowed.exe
a08f30169a169a1d38152979d195666b5ddfda31a8748235143de6f7e51d8232  kanata_gui.exe
badc6bb56b6100b363a4d5b6cbd5acd25c90cfefb8d198922e553b6e1bb11e71  kanata_gui_cmd_allowed.exe
fd28181fdd45fe73961c750095d9a2d3039ee2811d71b2c574c5489fcfdcd058  kanata_gui_wintercept.exe
777e06b3222a76f60ea7bbb4bf79563657853e2c0c46d0a710e033119e4cab88  kanata_gui_wintercept_cmd_allowed.exe
0e40f135693a4ce373ea1cd4c508c95105f50964dcc715efeec41f42456e8cd6  kanata_legacy_output.exe
7bf2dd077f11f6db8fe792720ce39163c60712153420cd835ccedb7027aa6033  kanata_macos_arm64
616480fc13b9040a02f7df13f7b49fce8273aa68d2cc73d8416e50fd9cfc2f7f  kanata_macos_cmd_allowed_arm64
6f7839e2c6894cd51d6876192874f823c801220d6c7d607c82126f80a15bad20  kanata_macos_cmd_allowed_x86_64
99b2f7604a282db1452d441cc0aee6304e4e14b7a58600d807c899b6149f30ee  kanata_macos_x86_64
eea8ff43fb319f6442dba9b8c651bbbef15c70779479b3656959914eeb2cecf3  kanata_passthru.dll
83e0e0e84e21cc78f38be00ca8c10711ab55fa094be34458db9f0a0309b39819  kanata_winIOv2.exe
...
Read more

v1.8.1

31 Mar 01:05

Choose a tag to compare

Configuration guide

Link to the appropriate configuration guide version: guide link.

Changelog (since v1.8.0)

Change log
  • Added: more key names
  • Added(macOS): add missing mappings for F keys
  • Fix: TCP layer names response now returns layers correctly
  • Fix(macOS): allow devices with null product strings, preventing some crashes
  • Fix(Windows): fix screenshot output for non-scancode read with scancode output (default binary behaviour)

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

NOTE: All Windows binaries are compiled for x86-64 architectures only.

Download kanata.exe. Optionally, download kanata.kbd. With the two files in the same directory, you can double-click the exe 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 kanata.exe via cmd or powershell to use a different configuration file:

kanata.exe --cfg <cfg_file>


NOTE: The kanata_winIOv2.exe variant contains an experimental breaking change that fixes an issue where the Windows LLHOOK+SendInput version of kanata does not handle defsrc consistently compared to other versions and other operating systems. This variant will be of interest to you for any of the following reasons:

  • you are a new user
  • you are a cross-platform user
  • you use multiple language layouts within Windows and want kanata to handle the key positions consistently

This variant contains the same output change as in the scancode variant below, and also changes the input to also operate on scancodes.


NOTE: The kanata_legacy_output.exe variant has the same input defsrc handling as the standard kanata.exe file. It uses the same output mechanism as the standard kanata.exe variant in version 1.6.1 and earlier. In other words the formerly experimental_scancode variant is now the default binary. The non-legacy variants contain changes for an issue; the fix is omitted from this legacy variant. The legacy variant is included in case issues are found with the new output mechanism.


Linux

Instructions

NOTE: All Linux binaries are compiled for x86 architectures only.

Download kanata.

Run it 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.

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

To avoid requiring sudo, follow the instructions here.

macOS

Instructions

WARNING: feature support on macOS is limited.

Instructions for macOS 11 and newer

Please read through this issue comment:

#1264 (comment)

Also have a read through this discussion:

#1537

Old instructions for macOS 11 and newer

Click to expand First install Karabiner driver for macOS 11 and newer:

To activate it:

sudo /Applications/.Karabiner-VirtualHIDDevice-Manager.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Manager activate

Then you need to run the daemon. You should run this in the background somehow or leave the terminal window where you run this command open.

sudo '/Library/Application Support/org.pqrs/Karabiner-DriverKit-VirtualHIDDevice/Applications/Karabiner-VirtualHIDDevice-Daemon.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Daemon'

Install Karabiner driver for macOS 10 and older:

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

Download a kanata_macos variant.

Run it 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>`

If the above shows Kanata running but keys are not being sent, you may need to add permissions: #1211.

cmd_allowed variants

Explanation

The binaries with the name cmd_allowed are conditionally compiled with the cmd action enabled.

Using the regular binaries, there is no way to get the cmd action to work. This action is restricted behind conditional compilation because I consider the action to be a security risk that should be explicitly opted into and completely forbidden by default.

wintercept variants

Explanation and instructions

Warning: known issue

This issue in the Interception driver exists: oblitum/Interception#25. This will affect you if you put your PC to sleep instead of shutting it down, or if you frequently plug/unplug USB devices.

Description

These variants use the Interception driver instead of Windows hooks. 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. This means kanata will work in more applications.

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 think 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:

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

kanata_passthru.dll

Explanation and instructions

The Windows kanata_passthru.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, download kanata_passthru.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.

sha256 checksums

Sums
7c123b3897af15e8520e439acde4c9be0c50ccd810a60273d84295750eec4921  kanata
347352299b8d5fc307bcb1106c4b1f1c8e419de5dc986ab9acabb489b300fcd6  kanata.exe
83fd9419c3976fe289a302a946eb3ab0a08aa185f13fe09451e819e48c93a9ab  kanata.kbd
6a4f05fa050a23ff2e1b35be56ad26fc62ca5bc7f5a8c20d7395569fa8e88d2d  kanata_cmd_allowed
f2fdbdc6cc901a810be9f41998d1f298a2f202153eb7fe5f6a60362f5ca92297  kanata_cmd_allowed.exe
76afd191897c52ad03f1dc78a71508924bfd4177d8d8a4bf681ee79e4a5a24b2  kanata_gui.exe
14e1d309d65d16bd71a26641592d5edcf2d0beb9adeb71731768961d5b79a91a  kanata_gui_cmd_allowed.exe
114d9c4d4e58a659410e76580fb8545365776cd36f622fcb6c474212076f8358  kanata_gui_wintercept.exe
ddc9baa29fca60852535f3e44a60975dd3c3b6264888e9c4c817de812ae79a5f  kanata_gui_wintercept_cmd_allowed.exe
91b89749a665ff72f1f4cdf0fa71eda841c2badba0f6d3fdcc71825cf4e0a36c  kanata_legacy_output.exe
f8704e1007cef9533bd80452e343ffc6f84f2b7747124716cdb533106ffa2e12  kanata_macos_arm64
44afb42be91824beb55cf607db8750ad3129af644959415765316ae8bdc45d26  kanata_macos_cmd_allowed_arm64
2082a84749644fb313028b8598fbd3e360784defed75f69796290f96b37b1648  kanata_macos_cmd_allowed_x86_64
7d5abf3dbe4b9a4aca85fa7b61f821fed9b1cf4e502a641b639b54e8eb45326c  kanata_macos_x86_64
7f3c0f496e11c9978f11a775bb04e6d9590c52dc6c884fcdefc5ebe70f6e34dc  kanata_passthru.dll
d5117c783b97b664c34374c5565a49bde1c17785fb937c7ffafc32083c5984ec  kanata_winIOv2.exe
a4024417ed9f682fdba48f06505d4a6c430ea6b3a278ae303f1382110a92d46e  kana...
Read more

v1.8.0

09 Feb 07:05

Choose a tag to compare

Configuration guide

Link to the appropriate configuration guide version: guide link.

Changelog (since v1.7.0)

BREAKING CHANGE (macOS): v5 of the karabiner driver is now used instead of v3. See macOS instructions for install details.

BEHAVIOUR CHANGE (Linux): defcfg to include device names now disregards mouse-like/keyboard-like check, now grabbing more devices than previously.

BEHAVIOUR CHANGE: defoverrides will eagerly release the non-modifier key on release of a modifier or on the next action.

Change log
  • Added: clipboard actions
  • Added: use-defsrc action
  • Added: zippychord, yet another chording implementation intended primarily for text expansion
  • Added: chordsv2 is no longer marked experimental; using -experimental now generates a warning
  • Added: macro variant that cancels on another press
  • Added: hold-for-duration action for virtual keys
  • Added: one-shot-pause-processing action
  • Added: all-except configuration for process-unmapped-keys
  • Added: template-expand is now allowed within deftemplate
  • Added(macOS): now uses the v5 karabiner driver
  • Added(macOS): macos-dev-names-exclude
  • Fix(Windows): keypad enter now works when passed through without remapping
  • Fix(macOS): mouse drag now works
  • Fix(Linux): improve device identification
  • Fix(Linux): fix unbounded reading of an endless device event stream

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

NOTE: All Windows binaries are compiled for x86-64 architectures only.

Download kanata.exe. Optionally, download kanata.kbd. With the two files in the same directory, you can double-click the exe 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 kanata.exe via cmd or powershell to use a different configuration file:

kanata.exe --cfg <cfg_file>


NOTE: The kanata_winIOv2.exe variant contains an experimental breaking change that fixes an issue where the Windows LLHOOK+SendInput version of kanata does not handle defsrc consistently compared to other versions and other operating systems. This variant will be of interest to you for any of the following reasons:

  • you are a new user
  • you are a cross-platform user
  • you use multiple language layouts within Windows and want kanata to handle the key positions consistently

This variant contains the same output change as in the scancode variant below, and also changes the input to also operate on scancodes.


NOTE: The kanata_legacy_output.exe variant has the same input defsrc handling as the standard kanata.exe file. It uses the same output mechanism as the standard kanata.exe variant in version 1.6.1 and earlier. In other words the formerly experimental_scancode variant is now the default binary. The non-legacy variants contain changes for an issue; the fix is omitted from this legacy variant. The legacy variant is included in case issues are found with the new output mechanism.


Linux

Instructions

NOTE: All Linux binaries are compiled for x86 architectures only.

Download kanata.

Run it 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.

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

To avoid requiring sudo, follow the instructions here.

macOS

Instructions

WARNING: feature support on macOS is limited.

Instructions for macOS 11 and newer

Please read through this issue comment:

#1264 (comment)

Also have a read through this discussion:

#1537

Old instructions for macOS 11 and newer

Click to expand First install Karabiner driver for macOS 11 and newer:

To activate it:

sudo /Applications/.Karabiner-VirtualHIDDevice-Manager.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Manager activate

Then you need to run the daemon. You should run this in the background somehow or leave the terminal window where you run this command open.

sudo '/Library/Application Support/org.pqrs/Karabiner-DriverKit-VirtualHIDDevice/Applications/Karabiner-VirtualHIDDevice-Daemon.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Daemon'

Install Karabiner driver for macOS 10 and older:

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

Download a kanata_macos variant.

Run it 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>`

If the above shows Kanata running but keys are not being sent, you may need to add permissions: #1211.

cmd_allowed variants

Explanation

The binaries with the name cmd_allowed are conditionally compiled with the cmd action enabled.

Using the regular binaries, there is no way to get the cmd action to work. This action is restricted behind conditional compilation because I consider the action to be a security risk that should be explicitly opted into and completely forbidden by default.

wintercept variants

Explanation and instructions

Warning: known issue

This issue in the Interception driver exists: oblitum/Interception#25. This will affect you if you put your PC to sleep instead of shutting it down, or if you frequently plug/unplug USB devices.

Description

These variants use the Interception driver instead of Windows hooks. 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. This means kanata will work in more applications.

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 think 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:

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

kanata_passthru.dll

Explanation and instructions

The Windows kanata_passthru.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, download kanata_passthru.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.

sha256 checksums

Sums
d3644a07164be46c3d507cffed5e3b2838dc08dcdd9b2e62f5906ce8b5ea0578  kanata
e279508bfce6471b5fd62c8848fce7fd9785b8d2d40c1cd6c08152ee2d17161d  kanata.exe
83fd9419c3976fe289a302a946eb3ab0a08aa185f13fe09451e819e48c93a9ab  kanata.kbd
1466e42d1c6e3e164e6bb6899167c03e424a2d5aea8ff136e114591d0569129c  kanata_cmd_allowed
7bfbd1f846c8fae3df535b09c6a8cbebd2ca63003fb6546327fff39ee751e532  kanata_cmd_allowed.exe
1092c18f0da75c58147a19d379ee2796e0554b467d6715f873fd065e1c42cd8b  kanata_gui.exe
8d6105b28948000b5fb00c7b7975947cd8c18456806198f3972faf81ab...
Read more

v1.8.0-prerelease-1

11 Dec 08:34

Choose a tag to compare

v1.8.0-prerelease-1 Pre-release
Pre-release

Configuration guide

Link to the appropriate configuration guide version: guide link.

Changelog (since v1.7.0)

BEHAVIOUR CHANGE (Linux): defcfg to include device names now disregards mouse-like/keyboard-like check, now grabbing more devices than previously

Change log
  • Added: use-defsrc action
  • Added: zippychord-experimental, yet another chording implementation
  • Added: chordsv2 is no longer marked experimental; using -experimental now generates an error
  • Added: macro variant that cancels on another press
  • Added: hold-for-duration action for virtual keys
  • Added: one-shot-pause-processing action
  • Added: all-except configuration for process-unmapped-keys
  • Added(macOS): now uses the v5 karabiner driver
  • Fix(Windows): keypad enter now works when passed through without remapping
  • Fix(macOS): mouse drag now works

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

NOTE: All Windows binaries are compiled for x86-64 architectures only.

Download kanata.exe. Optionally, download kanata.kbd. With the two files in the same directory, you can double-click the exe 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 kanata.exe via cmd or powershell to use a different configuration file:

kanata.exe --cfg <cfg_file>


NOTE: The kanata_winIOv2.exe variant contains an experimental breaking change that fixes an issue where the Windows LLHOOK+SendInput version of kanata does not handle defsrc consistently compared to other versions and other operating systems. This variant will be of interest to you for any of the following reasons:

  • you are a new user
  • you are a cross-platform user
  • you use multiple language layouts within Windows and want kanata to handle the key positions consistently

This variant contains the same output change as in the scancode variant below, and also changes the input to also operate on scancodes.


NOTE: The kanata_legacy_output.exe variant has the same input defsrc handling as the standard kanata.exe file. It uses the same output mechanism as the standard kanata.exe variant in version 1.6.1 and earlier. In other words the formerly experimental_scancode variant is now the default binary. The non-legacy variants contain changes for an issue; the fix is omitted from this legacy variant. The legacy variant is included in case issues are found with the new output mechanism.


Linux

Instructions

NOTE: All Linux binaries are compiled for x86 architectures only.

Download kanata.

Run it 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.

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

To avoid requiring sudo, follow the instructions here.

macOS

Instructions

WARNING: feature support on macOS is limited.

Install Karabiner driver for macOS 11 and newer:

To activate it:

sudo /Applications/.Karabiner-VirtualHIDDevice-Manager.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Manager activate

Then you need to run the daemon. You should run this in the background somehow or leave the terminal window where you run this command open.

sudo '/Library/Application Support/org.pqrs/Karabiner-DriverKit-VirtualHIDDevice/Applications/Karabiner-VirtualHIDDevice-Daemon.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Daemon'

Install Karabiner driver for macOS 10 and older:

After installing the appropriate driver for your OS

Download a kanata_macos variant.

Run it 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>`

If the above shows Kanata running but keys are not being sent, you may need to add permissions: #1211.

cmd_allowed variants

Explanation

The binaries with the name cmd_allowed are conditionally compiled with the cmd action enabled.

Using the regular binaries, there is no way to get the cmd action to work. This action is restricted behind conditional compilation because I consider the action to be a security risk that should be explicitly opted into and completely forbidden by default.

wintercept variants

Explanation and instructions

Warning: known issue

This issue in the Interception driver exists: oblitum/Interception#25. This will affect you if you put your PC to sleep instead of shutting it down, or if you frequently plug/unplug USB devices.

Description

These variants use the Interception driver instead of Windows hooks. 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. This means kanata will work in more applications.

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 think 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:

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

kanata_passthru.dll

Explanation and instructions

The Windows kanata_passthru.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, download kanata_passthru.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.

sha256 checksums

Sums
f2b611dfd8f24be77550d94f1a962240abbde6a91651e6d40abf9a2bc6774753  kanata
0c1861bbb950264811601a4ff15562b2e3bd53ced7736fc0e5426b3a2bf0f5bd  kanata.exe
578de9340f710a687a68562cac11667f1be66bcbc9f2a863d75eb6102670e4ff  kanata.kbd
49efab53c96f685f2149cb12dc8be7cc4671616916104215967dd8112cd89420  kanata_cmd_allowed
405b54709a7745464dab0fe959d002cfb88f7b6922503c2bf2347caee8b09dfc  kanata_cmd_allowed.exe
83343f798edb4ecfd0837946eb7b5c153960ac07eda2292ea306a37ad2e05848  kanata_gui.exe
29c92373971275a06815eff530e7cd722438871123d8210ff49f7b4ef1cdbccb  kanata_gui_cmd_allowed.exe
19ca1458d79bf66d0631dedc577ce08f62e3bb8b1d5bb586ac1671804339512c  kanata_gui_wintercept.exe
0a148987272028f22b6eb0a1b753b843f6e237aa39ff243d694b4ef9302e5bd5  kanata_gui_wintercept_cmd_allowed.exe
c6b6009ed79d919bf2f5b7c0cc3df2fbd20fdb68d63e6e900efb42f1cfb68f97  kanata_legacy_output.exe
c0c4b88eb026f9767ac626b5950c0d4c423e52d37d05d54d0d328e4c1e30bbba  kanata_macos_arm64
bdf52fe6610d60fc49eb055ad6ed9361a9119075c9b164a6cf29d12bf515254b  kanata_macos_cmd_allowed_arm64
08446f4c646748233c2aafa73d2aafa019745f532ceb6d7930366c0b5b893015  kanata_macos_cmd_allowed_x86_64
f827fdd8c8260ae94b033ddb2213a8bbf2c377047679de11f649efa32fd91be6  kanata_macos_x86_64
78fc5b925ec0b0bff5e0ec60e19f02dedc17c4a93c49af059d6d34788b3d76d5  kanata_passthru.dll
46ea129bfdb970b9a7be5e2868be97a2a248ff137718777eedbbb83df9f88fa7  kanata_winIOv2.exe
12c8f75d8a0c207c9fb1c6176be20be1e848159a59f54...
Read more