Improve keyboard comfort and usability with advanced customization
Kanata GUI is a cross-platform keyboard remapping tool designed to enhance keyboard comfort and usability through advanced customization. It allows users to redefine key functionality, create multiple layers of input behavior, and tailor their keyboard experience to meet specific needs.
Key Features:
Layer-based Customization: Define multiple layers for keys, enabling dynamic switching between different functionalities (e.g., lowercase/uppercase, symbols, or custom actions).
Advanced Key Behaviors: Supports tap-hold mechanics, macros, Unicode output, and leader sequences for complex workflows.
Live Configuration Reloading: Easily test changes without restarting the application.
TCP Server Integration: Enables interaction with external programs to trigger layer changes or respond to events.
README
Kanata
Improve your keyboard comfort
What does this do?
This is a cross-platform software keyboard remapper for Linux, macOS and Windows.
A short summary of the features:
You can check out the online simulator
to test configuration validity and test input simulation.
Why is this useful?
Imagine if, instead of pressing Shift to type uppercase letters, we had giant
keyboards with separate keys for lowercase and uppercase letters. I hope we can
all agree: that would be a terrible user experience!
A way to think of how Shift keys work is that they switch your input to another
layer of functionality where you now type uppercase letters and symbols
instead of lowercase letters and numbers.
What kanata allows you to do is take this alternate layer concept that Shift
keys have and apply it to any key. You can then customize what those layers do
to suit your exact needs and workflows.
Usage
Running kanata currently does not start it in a background process.
You will need to keep the window that starts kanata running to keep kanata active.
Some tips for running kanata in the background:
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike.
VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols.
Simple, fast and powerful
Plays everything - Files, Discs, Webcams, Devices and Streams.
Plays most codecs with no codec packs needed - MPEG-2, MPEG-4, H.264, MKV, WebM, WMV, MP3...
Runs on all platforms - Windows, Linux, Mac OS X, Unix, iOS, Android ...
Completely Free - no spyware, no ads and no user tracking.
PowerShell is a cross-platform (Windows, Linux, and macOS) automation and configuration tool/framework that works well with your existing tools and is optimized for dealing with structured data (e.g. JSON, CSV, XML, etc.), REST APIs, and object models.
It includes a command-line shell, an associated scripting language and a framework for processing cmdlets.
Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards. In 2017, Firefox began incorporating new technology under the code name Quantum to promote parallelism and a more intuitive user interface. Firefox is officially available for Windows 7 or newer, macOS, and Linux. Its unofficial ports are available for various Unix and Unix-like operating systems including FreeBSD, OpenBSD, NetBSD, illumos, and Solaris Unix.
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
PuTTY is a client program for the SSH, Telnet, Rlogin, and SUPDUP network protocols.
These protocols are all used to run a remote session on a computer, over a network. PuTTY implements the client end of that session: the end at which the session is displayed, rather than the end at which it runs.
In really simple terms: you run PuTTY on a Windows machine, and tell it to connect to (for example) a Unix machine. PuTTY opens a window. Then, anything you type into that window is sent straight to the Unix machine, and everything the Unix machine sends back is displayed in the window. So you can work on the Unix machine as if you were sitting at its console, while actually sitting somewhere else.
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike.
VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols.
Simple, fast and powerful
Plays everything - Files, Discs, Webcams, Devices and Streams.
Plays most codecs with no codec packs needed - MPEG-2, MPEG-4, H.264, MKV, WebM, WMV, MP3...
Runs on all platforms - Windows, Linux, Mac OS X, Unix, iOS, Android ...
Completely Free - no spyware, no ads and no user tracking.
PowerShell is a cross-platform (Windows, Linux, and macOS) automation and configuration tool/framework that works well with your existing tools and is optimized for dealing with structured data (e.g. JSON, CSV, XML, etc.), REST APIs, and object models.
It includes a command-line shell, an associated scripting language and a framework for processing cmdlets.
Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards. In 2017, Firefox began incorporating new technology under the code name Quantum to promote parallelism and a more intuitive user interface. Firefox is officially available for Windows 7 or newer, macOS, and Linux. Its unofficial ports are available for various Unix and Unix-like operating systems including FreeBSD, OpenBSD, NetBSD, illumos, and Solaris Unix.
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
PuTTY is a client program for the SSH, Telnet, Rlogin, and SUPDUP network protocols.
These protocols are all used to run a remote session on a computer, over a network. PuTTY implements the client end of that session: the end at which the session is displayed, rather than the end at which it runs.
In really simple terms: you run PuTTY on a Windows machine, and tell it to connect to (for example) a Unix machine. PuTTY opens a window. Then, anything you type into that window is sent straight to the Unix machine, and everything the Unix machine sends back is displayed in the window. So you can work on the Unix machine as if you were sitting at its console, while actually sitting somewhere else.
Cross-Platform Support: Works on Linux, macOS, and Windows, with optional drivers like Interception for enhanced functionality.
Ideal for developers, gamers, and productivity-focused users seeking to optimize their keyboard layout and input methods. Kanata GUI empowers users to create a personalized, efficient, and comfortable typing experience. It is open-source under the LGPL-3.0 license and can be installed via winget or built from source using Rust.
Build it yourself
This project uses the latest Rust stable toolchain. If you installed the
Rust toolchain using rustup, e.g. by using the instructions from the
official website,
you can get the latest stable toolchain with rustup update stable.
Instructions
Using cargo install:
cargo install kanata
# On Linux and macOS, this may not work without `sudo`, see below
kanata --cfg
Build and run yourself in Linux:
git clone https://github.com/jtroo/kanata && cd kanata
cargo build # --release optional, not really perf sensitive
# sudo is used because kanata opens /dev/ files
#
# See below if you want to avoid needing sudo:
# https://github.com/jtroo/kanata/wiki/Avoid-using-sudo-on-Linux
sudo target/debug/kanata --cfg
Build and run yourself in Windows.
git clone https://github.com/jtroo/kanata; cd kanata
cargo build # --release optional, not really perf sensitive
target\debug\kanata --cfg
Build and run yourself in macOS:
First install the Karabiner driver by following the macOS documentation
in the releases page.
Then you can compile and run with the instructions below:
git clone https://github.com/jtroo/kanata && cd kanata
cargo build # --release optional, not really perf sensitive
# sudo is needed to gain permission to intercept the keyboard
sudo target/debug/kanata --cfg
Sample configuration files are found in cfg_samples. The
simple.kbd file contains a basic configuration file
that is hopefully easy to understand but does not contain all features. The
kanata.kbd contains an example of all features with documentation. The
release assets also have a kanata.kbd file that is tested to work with that
release. All key names can be found in the keys module,
and you can also define your own key names.
Feature flags
When either building yourself or using cargo install,
you can add feature flags that
enable functionality that is turned off by default.
Instructions
If you want to enable the cmd actions,
add the flag --features cmd.
For example:
Try it out and let me know what you think. Feel free to file an issue or
start a discussion.
Usability issues and unhelpful error messages are considered bugs that should
be fixed. If you encounter any, I would be thankful if you file an issue.
Browse the open issues and help out if you are able and/or would like to. If
you want to try contributing, feel free to ping jtroo for some pointers.
If you know anything about writing a keyboard driver for Windows, starting an
open-source alternative to the Interception driver would be lovely.
Community projects related to kanata
vscode-kanata: Language support for kanata configuration files in VS Code
komokana: Automatic application-aware layer switching for komorebi (Windows)
I wanted a "k" word since this relates to keyboards. According to Wikipedia,
kanata is an indigenous Iroquoian word meaning "village" or "settlement" and is
the origin of Canada's name.
There's also PPT✧.
Motivation
TLDR: QMK features but for any keyboard, not just fancy mechanical ones.
Long version
I have a few keyboards that run QMK. QMK allows the
user to customize the functionality of their keyboard to their heart's content.
One great use case of QMK is its ability map keys so that they overlap with the
home row keys but are accessible on another layer. I won't comment on
productivity, but I find this greatly helps with my keyboard comfort.
For example, these keys are on the right side of the keyboard:
7 8 9
u i o
j k l
m , .
On one layer I have arrow keys in the same position, and on another layer I
have a numpad.
One could add as many customizations as one likes to improve comfort, speed,
etc. Personally my main motivator is comfort due to a repetitive strain injury
in the past.
However, QMK doesn't run everywhere. In fact, it doesn't run on most
hardware you can get. You can't get it to run on a laptop keyboard or any
mainstream office keyboard. I believe that the comfort and empowerment QMK
provides should be available to anyone with a computer on their existing
hardware, instead of having to purchase an enthusiast mechanical keyboard
(which are admittedly very nice — I own a few — but can be costly).
The best alternative solution that I found for keyboards that don't run QMK was
kmonad. This is an excellent project
and I recommend it if you want to try something similar.
The reason for this project's existence is that kmonad is written in Haskell
and I have no idea how to begin contributing to a Haskell project. From an
outsider's perspective I think Haskell is a great language but I really can't
wrap my head around it. And there are a few outstanding issues
at the time of writing that make kmonad suboptimal for my personal workflows.
This project is written in Rust because Rust is my favourite programming
language and the prior work of the awesome keyberon crate
exists.
capsicain: Windows-only key remapper with driver-level key interception
keyd: Linux-only key remapper very similar to QMK, kmonad, and kanata
xremap: Linux-only application-aware key remapper inspired more by Emacs key sequences vs. QMK layers/Vim modes
keymapper: Context-aware cross-platform key remapper with a different transformation model (Linux, Windows, Mac)
mouseless: Linux-only mouse-focused key remapper that also has layers, key combo and tap-hold capabilities
Why the list?
While kanata is the best tool for some, it may not be the best tool for
you. I'm happy to introduce you to tools that may better suit your needs. This
list is also useful as reference/inspiration for functionality that could be
added to kanata.
Donations/Support?
The author (jtroo) will not accept monetary donations for work on kanata.
Please instead donate your time and/or money to charity.
Some links are below. These links are provided for learning and as interesting
reads. They are not an endorsement.
Signal is an encrypted communications application.
It uses the Internet to send one-to-one and group messages, which can include files, voice notes, images and videos, and make one-to-one voice and video calls.
Signal is an encrypted communications application.
It uses the Internet to send one-to-one and group messages, which can include files, voice notes, images and videos, and make one-to-one voice and video calls.
The Tor software protects you by bouncing your communications around a distributed network of relays run by volunteers all around the world, it prevents somebody watching your Internet connection from learning what sites you visit, it prevents the sites you visit from learning your physical location, and it lets you access sites which are blocked.
The Tor software protects you by bouncing your communications around a distributed network of relays run by volunteers all around the world, it prevents somebody watching your Internet connection from learning what sites you visit, it prevents the sites you visit from learning your physical location, and it lets you access sites which are blocked.
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
KeePassXC is a modern, secure, and open-source password manager that stores and manages your most sensitive information. You can run KeePassXC on Windows, macOS, and Linux systems. KeePassXC is for people with extremely high demands of secure personal data management. It saves many different types of information, such as usernames, passwords, URLs, attachments, and notes in an offline, encrypted file that can be stored in any location, including private and public cloud solutions. For easy identification and management, user-defined titles and icons can be specified for entries. In addition, entries are sorted into customizable groups. An integrated search function allows you to use advanced patterns to easily find any entry in your database. A customizable, fast, and easy-to-use password generator utility allows you to create passwords with any combination of characters or easy to remember passphrases.
KeePassXC is a modern, secure, and open-source password manager that stores and manages your most sensitive information. You can run KeePassXC on Windows, macOS, and Linux systems. KeePassXC is for people with extremely high demands of secure personal data management. It saves many different types of information, such as usernames, passwords, URLs, attachments, and notes in an offline, encrypted file that can be stored in any location, including private and public cloud solutions. For easy identification and management, user-defined titles and icons can be specified for entries. In addition, entries are sorted into customizable groups. An integrated search function allows you to use advanced patterns to easily find any entry in your database. A customizable, fast, and easy-to-use password generator utility allows you to create passwords with any combination of characters or easy to remember passphrases.
VirtualBox is a general-purpose full virtualization software for x86_64 hardware (with version 7.1 additionally for macOS/Arm), targeted at laptop, desktop, server and embedded use.
VirtualBox is a free and open-source virtualization tool that can help you create an emulated machine on your Windows computer. The application is fully customizable and offers high performance and flexibility. Even though VirtualBox doesn’t have a very user-friendly interface or an abundance of automated functions, it’s one of the most-sought after virtualization software by tech-savvy users.
With VirtualBox, you can run multiple operating systems on your computer simultaneously. These operating systems aren’t limited to Windows and also include macOS, Linux, and Oracle Solaris.
VirtualBox is a general-purpose full virtualization software for x86_64 hardware (with version 7.1 additionally for macOS/Arm), targeted at laptop, desktop, server and embedded use.
VirtualBox is a free and open-source virtualization tool that can help you create an emulated machine on your Windows computer. The application is fully customizable and offers high performance and flexibility. Even though VirtualBox doesn’t have a very user-friendly interface or an abundance of automated functions, it’s one of the most-sought after virtualization software by tech-savvy users.
With VirtualBox, you can run multiple operating systems on your computer simultaneously. These operating systems aren’t limited to Windows and also include macOS, Linux, and Oracle Solaris.
Etcher is a powerful OS image flasher built with web technologies to ensure flashing an SDCard or USB drive is a pleasant and safe experience. It protects you from accidentally writing to your hard-drives, ensures every byte of data was written correctly, and much more. It can also directly flash Raspberry Pi devices that support USB device boot mode.
Etcher is a powerful OS image flasher built with web technologies to ensure flashing an SDCard or USB drive is a pleasant and safe experience. It protects you from accidentally writing to your hard-drives, ensures every byte of data was written correctly, and much more. It can also directly flash Raspberry Pi devices that support USB device boot mode.
Opera is a multi-platform web browser developed by Opera Software. Opera is a Chromium-based browser. It distinguishes itself from other browsers through its user interface, functionality, and other features.
Opera is a multi-platform web browser developed by Opera Software. Opera is a Chromium-based browser. It distinguishes itself from other browsers through its user interface, functionality, and other features.
Audacity is the world’s most popular free software for recording and editing audio. So if you're producing music, a podcast, or just playing around with audio, Audacity is for you.
Audacity is for anyone who wants to get creative with sound. It’s also the perfect tool for anyone who needs to quickly edit or export audio, for any reason.
Cross-platform: Runs on all major operating systems – Windows, MacOS and Linux.
Import, export, convert: Audacity supports all major audio formats, allowing you to convert WAV to MP3, FLAC, Ogg and much more.
Plugin support: Elevate your productions with a vast selection of third-party plugins, including VST3, Nyquist and more.
Deep audio analysis: Visualize frequencies in Audacity's Spectogram view or use scientific Vamp analyzers to make discoveries.
Audacity is the world’s most popular free software for recording and editing audio. So if you're producing music, a podcast, or just playing around with audio, Audacity is for you.
Audacity is for anyone who wants to get creative with sound. It’s also the perfect tool for anyone who needs to quickly edit or export audio, for any reason.
Cross-platform: Runs on all major operating systems – Windows, MacOS and Linux.
Import, export, convert: Audacity supports all major audio formats, allowing you to convert WAV to MP3, FLAC, Ogg and much more.
Plugin support: Elevate your productions with a vast selection of third-party plugins, including VST3, Nyquist and more.
Deep audio analysis: Visualize frequencies in Audacity's Spectogram view or use scientific Vamp analyzers to make discoveries.
Audacity is the world’s most popular free software for recording and editing audio. So if you're producing music, a podcast, or just playing around with audio, Audacity is for you.
Audacity is for anyone who wants to get creative with sound. It’s also the perfect tool for anyone who needs to quickly edit or export audio, for any reason.
Cross-platform: Runs on all major operating systems – Windows, MacOS and Linux.
Import, export, convert: Audacity supports all major audio formats, allowing you to convert WAV to MP3, FLAC, Ogg and much more.
Plugin support: Elevate your productions with a vast selection of third-party plugins, including VST3, Nyquist and more.
Deep audio analysis: Visualize frequencies in Audacity's Spectogram view or use scientific Vamp analyzers to make discoveries.
Krita is a FREE and open source painting tool designed for concept artists, illustrators, matte and texture artists, and the VFX industry. Krita has been in development for over 10 years and has had an explosion in growth recently. It offers many common and innovative features to help the amateur and professional alike.
Krita is a FREE and open source painting tool designed for concept artists, illustrators, matte and texture artists, and the VFX industry. Krita has been in development for over 10 years and has had an explosion in growth recently. It offers many common and innovative features to help the amateur and professional alike.
Krita is a FREE and open source painting tool designed for concept artists, illustrators, matte and texture artists, and the VFX industry. Krita has been in development for over 10 years and has had an explosion in growth recently. It offers many common and innovative features to help the amateur and professional alike.