ユーザごとにキーリマップする on Linux
以前書いた記事では、システム全体でのキーリマップ設定をしているけど、今回はシステム全体を汚染せずユーザごとに設定する方法を記す。
使うもの
jtroo/kanata: Improve keyboard comfort and usability with advanced customization
自分でビルドする場合はrustupでRustのツールチェーンを整備する。
セットアップ
kanata
GithubのReleasesページからバイナリを取ってきてパスを通すか、cargo install kanataで自前ビルドする。
uinput
uinputカーネルモジュールを使えるようにする設定を公式ドキュメントに従って行う。
kanata/docs/setup-linux.md at main · jtroo/kanata
sudo groupadd uinput
sudo usermod -aG input $USER
sudo usermod -aG uinput $USER
sudo tee /etc/udev/rules.d/99-input.rules > /dev/null <<EOF
KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"
EOF
sudo tee /etc/modules-load.d/uinput.conf << 'EOF'
uinput
EOF
再起動してグループとモジュールの設定を適用する。
config (kanata)
私の使用例として、JIS配列のキーボードをUS配列として使用する際に用いている、CapsLockを「ろ」に割り当てる設定を示す。以下を~/.config/kanata/10-jis2us.kbdとして保存する。
(defsrc
caps IntlRo
)
(deflayer default
lctl caps
)
config (systemd)
ユーザサービスとしてkanataを自動起動する。以下はcargoでセットアップしたこと前提。必要に応じてExecStartのパスを変更したりkanataのパスを通したりすること。
mkdir -p ~/.config/systemd/user/
cat > ~/.config/systemd/user/kanata.service << 'EOF'
[Unit]
Description=Kanata
[Service]
ExecStart=%h/.cargo/bin/kanata -c %h/.config/kanata/10-jis2us.kbd
Restart=on-failure
RestartSec=3
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now kanata.service