type | without homerow-mods | with homerow-mods | suitable layouts |
---|---|---|---|
ANSI | arsenik_easy_ansi.kbd | arsenik_hrm_ansi.kbd | QWERTY, Dvorak, Colemak, Workman… |
AltGr | arsenik_easy_altgr.kbd | arsenik_hrm_altgr.kbd | Lafayette42, Ergo-L… |
Note that kanata can also use the laptop’s trackpoint buttons (e.g. ThinkPad) as two additional thumb keys. :-)
You can install kanata
by either downloading a pre-built
executable, or by running the
following commands (if you have rustc
installed):
rustup update stable
cargo install kanata
Linux users may want to run these extra steps:
Running kanata without
sudo
kanata needs to intercept uinput
signals, which it cannot do without the
proper authorisations.
If you don’t want to run kanata
with sudo
, you’ll need to allow kanata
to
read from uinput
. This requires the users to be part of both input
and
uinput
groups.
Update README.md
For that, you first need to create a uinput
group if it is not the case yet:
sudo groupadd -U $USERNAME uinput
Where $USERNAME
is the target user (or users in a comma separated list), and
add the target user (or users) to the group input:
sudo usermod -aG input $USERNAME
You can then check after relogin that both groups appear in the result of the
groups
command launched as the target user.
Finally, you need to add a udev rule in /etc/udev/rules.d/50-kanata.rules
:
KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"
Making a user-side systemd service for kanata
Note: This only works if kanata
is able to run without
sudo(and are using
systemd
).
Using a systemd service
allows running kanata
as a daemon, possibly right
after logging in. Here is a template for a service file:
[Unit]
Description=Kanata keyboard remapper
Documentation=https://github.com/jtroo/kanata
[Service]
Environment=PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin
Environment=DISPLAY=:0
Environment=HOME=/path/to/home/folder
Type=simple
ExecStart=/usr/local/bin/kanata --cfg /path/to/kanata/config/file
Restart=no
[Install]
WantedBy=default.target
Copy-paste it into ~/.config/systemd/user/kanata.service
, fill in the
placeholders, then run one of the following commands:
systemctl --user start kanata.service
to manually start kanata
systemctl --user enable kanata.service
so kanata
may autostart whenever the current user logs insystemctl --user status kanata.service
to check if kanata
is running