keyd:Wayland時代の新定番・システム全体対応キーマッピング

keyd

keyd(Linux用の低レベルキーマッピングデーモン)についての概要と詳細

keydとは

keydは、Linux環境全体でキーボードの入力を柔軟かつ高速に再マッピングする低レベルなキーボードデーモンです。WaylandやX11に依存せず、コンソール(tty)を含むすべての環境で動作する点が大きな特徴です。
キーのリマッピング、モード切替、同時押しやホールド動作の定義などが可能で、システム全体に影響するキーバインド制御を実現できます。

主な用途

  • CapsLockキーをCtrlやEscに変更
  • 左右Shiftで異なるキー操作を割り当て
  • モディファイア付きの独自キー定義(例:SpaceFN)
  • Waylandでもキーボードリマッピングを実現
  • X11やWayland、TTY間で一貫したキー設定を適用

特徴

  • Wayland/X11/TTY対応: すべての環境で動作
  • 低レベルでのリマッピング: input subsystem(/dev/input)を使用
  • 軽量かつ高速: Cで実装され、遅延ゼロの高速応答
  • 設定が直感的で柔軟: ファイルベースのシンプルな構成

インストール方法

Debian/Ubuntu系
$ sudo apt install keyd

Fedora系
$ sudo dnf install keyd

またはGitHubから最新版をビルド:

$ git clone https://github.com/rvaiya/keyd
$ cd keyd
$ make
$ sudo make install
$ sudo systemctl enable --now keyd

基本的な設定ファイル

設定ファイルは /etc/keyd/default.conf に配置します。

例:CapsLock → Ctrlに変更

[ids]

*

[main]

capslock = control

例:スペースFN(SpaceをホールドでFn、タップでSpace)

[ids]

*

[main]

space = overload(space, fn)

[fn]

h = left j = down k = up l = right

設定ファイルの再読み込み

$ sudo systemctl restart keyd

デバイス識別と個別設定

[ids]セクションで特定のキーボードデバイスに対して設定を分けることができます。 keydは以下のコマンドで識別子を表示可能です:

$ keyd -d

注意点

  • root権限でデバイス(/dev/input/event*)にアクセスするため、サービスとして起動
  • 他のキーマッピングツール(xmodmap, setxkbmap, xkeysnail等)と併用する際は競合に注意
  • Waylandの制限を受けずに利用できる数少ないツール

他のツールとの比較

ツール特徴
keydWayland対応。全環境共通。低レベル処理で高速
xkeysnailX11限定。柔軟なPython設定。Emacs風に最適
setxkbmapX11標準。単純なリマップに向く
xmodmap古い方法。複雑なことには不向き

まとめ

keydは、Linux全体に影響する安定したキーボード再マッピングを提供するツールです。Wayland時代にも対応し、複雑なキー操作も直感的に設定可能なため、プログラマやパワーユーザーにとって非常に有用です。設定の柔軟性、軽快な動作、環境非依存性を兼ね備えた、次世代のキーマッピングソリューションです。