Remap any key on any keyboard to a different key or action without buying new hardware
Set up tap-hold behavior so a key types a character when tapped and acts as a modifier when held
Create layers so one key activates a whole alternate keyboard layout, like turning home-row keys into arrow keys
Test and iterate on keyboard config changes live without restarting the remapping tool
Requires admin or root access on Linux, macOS needs an additional kernel extension from the releases page.
Kanata is a keyboard remapping tool that runs on Linux, macOS, and Windows. It lets you change what any key does, and more importantly, it lets you create multiple layers of keyboard behavior that you can switch between. The concept is similar to how a Shift key works: pressing Shift puts you into a layer where letters become uppercase. Kanata extends that idea so any key can activate any layer, and each layer can do anything you define. The feature set includes tap-hold behavior (a key does one thing when tapped quickly and another when held down), macros, unicode output, and leader key sequences where pressing a prefix key then another key triggers an action. Configuration is written in a human-readable text file. The configuration can be reloaded while the program is running, so you can test changes without restarting. To use kanata, you run it and point it at your configuration file. On Linux it needs administrator access because it reads directly from the kernel's input device files. On macOS it requires a separate kernel driver that is documented on the releases page. On Windows it works without extra drivers, though an optional interception driver is available for certain use cases. Pre-built binaries are available on the releases page for all three platforms. The project also provides an online simulator where you can test a configuration without installing anything locally. Community-built tools add things like a system tray icon for controlling kanata and syntax highlighting for configuration files in VS Code.
← jtroo on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.