はじめに
Linuxの仮想コンソール環境でXKB(X Keyboard Extension)定義のキーレイアウトを利用するには、ckbcompを用いてコンソール専用のキーマップ形式へとコンパイルする処理が不可欠です。本記事では、難解なmanドキュメントを読み解く代わりに、実践的なターミナル操作を通じてckbcompの基礎的な構文から各国語キー配列の生成、CapsLockとCtrlの入れ替えといったカスタマイズ、さらにはloadkeysによるシステムへの即時反映までを一通り分かりやすく解説します。
1. 動作環境の整備とデフォルトUSキーマップの出力確認
コンソールにおけるキーマップ変換と適用を行う事前準備として、console-setup、kbd、xkb-dataの必須パッケージ群をシステムに導入します。

ckbcompユーティリティは、X Window Systemで用いられるキー定義を解析し、カーネルコンソール(loadkeys)で解釈可能なバイナリ/テキストキーマップへとトランスパイルする役割を果たします。
まずは標準的なUS配列を指定し、パイプ経由でhead -n 30に渡してキーコードとシンボルの対応構造の先頭30行を観察してみましょう。
⚙️ [頻出コマンドオプション解説]
-model : ハードウェアのキーボード型番(例: pc105、pc104)を明示します。-variant : 配列の派生バリエーション(例: dvorak、colemak)を選択します。-option : CapsLockのCtrl化など、XKBの拡張挙動オプション(例: ctrl:nocaps)を付与します。-charmap : 生成ファイルが準拠する文字エンコーディング(例: UTF-8、ISO-8859-1)を定義します。-compact : 重複するキーバインド定義を統合・整理し、出力ファイルの記述量を最小化します。-freebsd : Linux標準ではなく、FreeBSDのsyscons/vtコンソール向け互換形式で生成します。

2. キーボードモデル(-model)とレイアウト派生(-variant)の指定
一般的な105キー仕様(-model pc105)を指定した上で、韓国語レイアウト(-layout kr)を対象にコンパイルを実行します。
出力内容を確認すると、個々の物理スキャンコードに対してUnicodeコードポイントや装飾キー併用時の挙動が厳密に割り当てられていることが分かります。

独語配列(-layout de)をベースとし、デッドキーを排したバリアント(-variant nodeadkeys)を組み合わせて出力を検証します。
このオプションを指定することで、ウムラウト等の入力待ち(デッドキー動作)が解除され、キー打鍵と同時に該当する記号がダイレクトに出力される仕様へと切り替わります。

3. 特殊キー動作のカスタマイズ:CapsLockをCtrlとして扱う
-option ctrl:nocapsを付与してCapsLockキーをControlキー化するキーマップを出力し、結果に対してgrepでCaps_Lock文字列を探索してみます。
CapsLock機能が完全にControlへと上書きされているため、定義内からCaps_Lockシンボルが消失し、検索に何もヒットしない挙動が確認できます。

一方、-option ctrl:swapcapsを指定すると、CapsLockとControlの両キーが相互にスワップされたキーマップが構成されます。
生成内容をフィルタリングすると、本来の左Control位置であるkeycode 29にCaps_Lockが再割り当てされるなど、双方のファンクションが完全に逆転している事実が掴めます。

4. 生成キーマップの保存とloadkeysによるコンソールへの即時適用
作成したカスタムキーマップを整理して保管するため、作業用ディレクトリとしてmkdir -p ~/keymapsを実行します。

USレイアウトをベースにCapsLockをCtrlへ置き換える指定を盛り込み、出力先をリダイレクト(>)して~/keymaps/custom_us.mapへと書き出します。

コンソール環境のストレージ消費を抑えつつ迅速にロードできるよう、元ファイルを保持したままアーカイブ化するgzip -fk ~/keymaps/custom_us.mapを実行します。

ls -lh ~/keymaps/custom_us.map*を実行し、生成されたプレーンテキストと圧縮版のファイルサイズを比較してみましょう。
約120KBあった定義テキストが、gzip圧縮によって4.0KB前後にまで大幅にスリム化されていることが視認できます。

コンパイル済みの定義を現在の仮想コンソールセッションへ反映させるため、sudo loadkeys ~/keymaps/custom_us.mapを実行します。
エラーなくプロンプトが復帰すれば、コンソール上のCapsLockが即座にControlキーとして振る舞うよう切り替わります。

ここまで、Ubuntu環境におけるckbcompを用いたXKBキーボード配列のコンソール向けコンパイルと、設定のロード手順をステップバイステップで確認しました。
難解なマニュアルの記述に悩まされることなく、本稿の実践手順を応用してCUI作業環境を自分好みの快適なレイアウトにカスタマイズしてみてください。