xkeysnail:柔軟なカスタマイズが魅力の高機能キーマップツール

目次
xkeysnail(エックスキー・スネイル)についての概要と詳細
xkeysnailとは
xkeysnail
は、LinuxのX11環境でキーボード入力を柔軟にリマッピングするためのPython製のキーカスタマイズツールです。Emacs風のキーバインド、キーの置き換え、アプリケーション別のキー設定などが可能で、WindowsのAutoHotkeyやmacOSのKarabiner-Elementsのような機能をLinuxで実現できます。
主な用途
- Emacsライクなキーバインドを全アプリに適用
- CapsLockや無変換キーをControlやEscに割り当て
- アプリケーション別に異なるキー挙動を設定
- キーの連打禁止や同時押しの条件付き割り当て
特徴
- X11で動作(Wayland未対応)
- Pythonで設定: 柔軟なロジックを記述できる
- キーストローク単位で細かな制御
- ユーザー空間で動作: root権限で実行が必要
インストール方法
- 依存パッケージのインストール: sudo apt install python3-pip uinput x11-utils x11-xkb-utils xserver-xephyr
- xkeysnailのインストール: pip3 install --user xkeysnail もしくはソースから: git clone https://github.com/mooz/xkeysnail.git cd xkeysnail sudo python3 setup.py install
権限設定(/dev/uinput)
/dev/uinput
へのアクセスが必要です。以下のようにモジュールを有効にし、権限を設定します:
$ sudo modprobe uinput
$ sudo chmod 666 /dev/uinput
設定ファイルの記述
設定ファイル(例:xkeysnail_config.py
)はPython形式で記述します。
基本的な設定例
from xkeysnail.transform import *
define_modmap({
Key.CAPSLOCK: Key.LEFTCTRL, # CapsLock を Ctrl に
})
define_keymap(re.compile(".*"), {
K("C-b"): with_mark(K("left")), # Ctrl-b で ←
K("C-f"): with_mark(K("right")), # Ctrl-f で →
K("C-p"): with_mark(K("up")), # Ctrl-p で ↑
K("C-n"): with_mark(K("down")), # Ctrl-n で ↓
})
アプリごとの切り替え例
define_keymap(re.compile("Firefox"), {
K("C-y"): "C-v", # Firefoxでは Ctrl-y を Ctrl-v に
})
起動方法
以下のコマンドで設定ファイルを指定して起動します:
$ sudo xkeysnail ~/.config/xkeysnail/config.py
常駐させたい場合は、デーモン化や systemd に登録するのがおすすめです。
systemdサービス登録(例)
[Unit]
Description=xkeysnail
[Service]
ExecStart=/usr/local/bin/xkeysnail /home/youruser/.config/xkeysnail/config.py
Restart=on-failure
[Install]
WantedBy=default.target
注意点
- Waylandでは使えない(X11専用)
- root権限で起動する必要がある
- 入力方式エンジン(fcitxやibus)と干渉する場合あり
- ターミナルでは動作するが、ChromeやFirefoxで一部キーバインドが効かないことがある
主な使用例まとめ
目的 | 設定内容 |
---|---|
CapsLock → Ctrl | Key.CAPSLOCK: Key.LEFTCTRL |
Ctrl+Y → 貼り付け | K("C-y"): "C-v" |
Ctrl+HJKL → ←↓↑→ | K("C-h"): K("left") など |
アプリごとに分岐 | re.compile("AppName") |
まとめ
xkeysnail
は、Linux上で高度なキーボードカスタマイズを行うための最も柔軟なツールの一つです。Pythonスクリプトによる記述により、細かい制御やアプリ別対応が可能です。X11専用ではあるものの、開発者・プログラマ・Emacsユーザーにとって非常に有用なツールです。