Linux には優れたキー再マッピング ソリューションがありません。満足のいく結果を達成するには、さまざまなツール (xcape、xmodmap など) を使用する必要があり、多くの場合、最終結果は指定された環境 (X11) に結び付けられます。 keyd は、カーネル レベルの入力プリミティブ (evdev、uinput) を使用してキーを再マップする柔軟なシステム全体のデーモンを提供することで、この問題を解決しようとします。
構成フォーマットは、最初のリリース以来、何度か反復されてきました。 v1 から設定を移行する場合は、マニュアル ページをもう一度読むことをお勧めします。
変更ログも参照してください。
keyd にはいくつかのユニークな機能があり、その多くは伝統的に QMK などのカスタム キーボード ファームウェアにのみ存在しており、keyd に固有の機能もいくつかあります。
より興味深いものとしては、次のようなものがあります。
C-1
再マップできるようにしたい。注: master は開発ブランチとして機能するため、リリース間で問題が発生する場合があります。リリースにはタグが付けられており、安定していると見なされます。
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd
keyd をインストールして起動します (例: sudo systemctl enable keyd
)
/etc/keyd/default.conf
に以下を記述します。
[ids]
*
[main]
# Maps capslock to escape when pressed and control when held.
capslock = overload(control, esc)
# Remaps the escape key to capslock
esc = capslock
キー名は、 keyd monitor
コマンドを使用して取得できます。 keyd の実行中、このコマンドの出力は keyd の出力に対応することに注意してください。元の入力イベントは、最初に keyd を停止してからコマンドを実行することで確認できます。詳細についてはマニュアルページを参照してください。
sudo keyd reload
を実行して構成セットをリロードします。
より包括的な説明については、マニュアル ページ ( man keyd
) を参照してください。
構成エラーはログ出力に表示され、システムのサービスマネージャーを使用して通常の方法でアクセスできます (例: sudo journalctl -eu keyd
)。
注: 設定ファイルが間違っていると、マシンが使用できなくなる可能性があります。この状況に陥った場合は、特別なキー シーケンスのbackspace+escape+enter
によって keyd が終了するはずです。
一部のマウス (例: Logitech MX Master) はキーを発行できるため、ワイルドカード ID によって照合されます。これらを明示的にブラックリストに登録する必要がある場合があります。
keyd グループに自分を追加します。
usermod -aG keyd <user>
~/.config/keyd/app.conf
を設定します。
例えば
[alacritty]
alt.] = macro(C-g n)
alt.[ = macro(C-g p)
[chromium]
alt.[ = C-S-tab
alt.] = macro(C-tab)
走る:
keyd-application-mapper
Gnome を実行している場合を除き、ディスプレイ サーバーの初期化ロジック (例: ~/.xinitrc) のどこかにkeyd-application-mapper -d
置くとよいでしょう。
詳細についてはマニュアルページを参照してください。
Giorgi Chavchanidze のご厚意により、USB ガジェット経由のシングル ボード コンピューター (SBC) の実験的サポートが追加されました。
詳細については、usb-gadget.md を参照してください。
一部のディストリビューション用のサードパーティ パッケージも存在します。リストにあなたのものを追加したい場合は、PRを提出してください。これらはコミュニティのメンバーによって親切に維持されており、個人的な責任は負いません。
keyd パッケージは @jirutka によって保守されています。
Arch Linux パッケージは Arch パッケージャーによって保守されています。
実験的なkeyd
およびkeyd-application-mapper
パッケージは、進行中の Debian パッケージ リポジトリの CI ビルド アーティファクトにあります。
Debian 化の取り組みをレビューし、そのアップロードを後援する意欲のある Debian 開発者は、@rhansen に連絡することをお勧めします (Debian ITP のバグも参照)。
COPR パッケージは @alternateved によって保守されています。
opensuse パッケージは @bubbleguuum によって管理されています。
sudo zypper in keyd
を使用して簡単にインストールします。
実験的なkeyd
とkeyd-application-mapper
パッケージは、 ppa:keyd-team/ppa
アーカイブにあります。
この PPA の維持を支援したい場合は、@rhansen までご連絡ください。
[ids]
*
[main]
leftshift = oneshot(shift)
capslock = overload(symbols, esc)
[symbols]
d = ~
f = /
...
おそらく多くのユーザーは keyd を最大限に活用することに興味がないでしょう。シンプルな生活の質の向上を求める人には、次の構成をお勧めします。
[ids]
*
[main]
shift = oneshot(shift)
meta = oneshot(meta)
control = oneshot(control)
leftalt = oneshot(alt)
rightalt = oneshot(altgr)
capslock = overload(control, esc)
insert = S-insert
これにより、Capslock キーがエスケープ (タップ時) とコントロール (押したとき) の両方として機能するようにオーバーロードされ、すべての修飾子が「ワンショット」キーに再マップされます。したがって、文字 A を生成するには、Shift キーを押したままにする代わりに、Shift キーを押してから a キーをタップするだけで済みます。最後に、挿入を S-挿入 (X11 に貼り付け) に再マップします。
xmodmap とその仲間は、機能が制限されたディスプレイ サーバー レベルのツールです。 keyd は、階層化やワンショット モディファイアなどの高度な機能を実装するシステム レベルのソリューションです。いくつかの X ツールは同様の機能を提供しますが、キー付きほど柔軟なものは知りません。
keyd は、増え続けるキーボード コレクションでさまざまなレイアウトを簡単に実験できるようにするために、数年前に作成されました。当時、kmonad は存在せず、QMK (keyd のインスピレーションとなった) のようなカスタム キーボード ファームウェアが同等の機能を得る唯一の方法でした。私が kmonad を知ったのは keyd を公開した後でした。 kmonad は同様の目標を持つ優れたプロジェクトですが、異なるアプローチを採用し、異なる設計哲学を持っています。
特に、keyd はパフォーマンスと単純さを考慮して完全に C で書かれており、kmonad (Haskell で拡張可能) ほど構成可能ではない可能性があります。そうは言っても、(著者の意見では) 最も価値のある機能を 2000 行未満の C で提供しながら、言語に依存しないシンプルな構成フォーマットを提供します。
何かが足りないと感じたり、バグを見つけた場合は、github に問題を提出してください。 keyd は、特定の機能を意図的に省略したミニマリスト (ただし健全な) 設計哲学を持っています (たとえば、root として任意の実行可能ファイルを実行します)。 QMK などのカスタム キーボード ファームウェアにすでに存在するものは、含めるのに適した候補です。
「貢献」を参照してください。 IRC チャネル: #keyd (oftc)