setxkbmap:X11標準のレイアウト切替&シンプルなキーマップ変更ツール

xkeymap

setxkbmapコマンドについての概要と詳細

setxkbmapとは

setxkbmapは、X11環境で使用されるキーボードレイアウトを設定・変更するためのコマンドラインツールです。主にLinuxのX環境で、キーボードのレイアウト、オプション、バリアントを変更するために使われます。Xサーバの再起動なしで、リアルタイムにキーマッピングを切り替えることができ、マルチレイアウト設定や特殊キーの動作カスタマイズにも対応しています。

主な用途

  • 英語(us)や日本語(jp)などのキーボードレイアウト切り替え
  • CapsLockをCtrlに変更、AltとWinキーの入れ替えなどのカスタマイズ
  • 複数レイアウトをトグル切り替え(例:英語 ↔ 日本語)
  • ウィンドウマネージャやXセッションの初期化スクリプトでの使用

インストール方法

Debian/Ubuntu系: sudo apt install x11-xkb-utils

Fedora/RedHat系: sudo dnf install setxkbmap

Arch Linux系: sudo pacman -S xorg-setxkbmap

基本的な使い方

$ setxkbmap us          # 英語レイアウトに設定
$ setxkbmap jp          # 日本語キーボードに設定
$ setxkbmap -layout us,ru -option "grp:alt_shift_toggle"                      # Alt+Shiftで英語/ロシア語を切り替え
$ setxkbmap -layout jp -option "ctrl:nocaps"                      # CapsLockキーをCtrlに変更

よく使うオプション

オプション説明
-layout使用するキーボードレイアウトを指定(例: us, jp)
-variantレイアウトのバリアント(例: dvorak, intl)
-option特殊なキー設定や切替オプションを指定
-print現在の設定を出力(xkbcompとの組み合わせ用)

複数レイアウトの切り替え設定例

$ setxkbmap -layout us,jp -option "grp:win_space_toggle"

→ Windowsキー+Spaceで英語と日本語キーボードを切り替え可能になります。

CapsLockをCtrlキーに変更する例

$ setxkbmap -option "ctrl:nocaps"

→ CapsLockキーを完全にCtrlキーとして動作させます。

Xの起動時に自動で適用するには

~/.xinitrcまたはウィンドウマネージャの起動スクリプトに追加:

$ setxkbmap -layout jp -option "ctrl:nocaps"

他のXキーボードユーティリティとの違い

  • xmodmap: キーコードとシンボルを直接編集(低レベル)
  • setxkbmap: レイアウト単位で設定(高レベル・推奨)
  • xkbcomp: カスタムレイアウトを構築・ビルド

使用上の注意

  • X11専用であり、Waylandでは使用不可
  • ディストリビューションによっては最初から導入されていない
  • 入力メソッド(IBus、Fcitxなど)と競合する場合がある

まとめ

setxkbmapは、LinuxのX11環境において最も手軽にキーボードレイアウトを変更できるツールの一つです。レイアウト切替、特殊キー再割り当て、多言語入力のトグルなど、幅広いカスタマイズに対応しており、軽量なウィンドウマネージャとの組み合わせに最適です。Wayland環境では使用できませんが、X11ユーザーにとっては今なお有効なツールです。