Linuxのキーボードレイアウトは、Wayland、X11(Xorg)、文字コンソールのどこで使うかによって確認・変更方法が異なります。デスクトップで普段使う配列はGNOMEやKDE Plasmaの設定画面から変更するのが基本です。setxkbmapとxmodmapはX11向けで、すべてのLinux環境にそのまま使えるわけではありません。この記事では、対象環境の確認、一時変更と永続設定、キーの割り当て変更を分けて説明します。
変更前の注意:現在のレイアウト、モデル、バリアント、追加オプションを記録し、元に戻せる状態で試してください。配列が変わると記号やパスワードの入力も変わります。まずテキストエディターで文字・記号・修飾キーを確認し、ログイン画面やシステム全体への変更は必要な場合だけ行います。
まずWayland・X11・コンソールを区別する
対象のデスクトップ上で端末を開き、セッション種別の手がかりを確認します。SSH先やコンテナー内ではなく、配列を変更したいログインセッションで確認してください。
printf '%s\n' "$XDG_SESSION_TYPE"wayland:GNOME、KDE Plasmaなどのデスクトップ設定、または利用中のWaylandコンポジター固有の設定を使います。x11:GUI設定に加えて、setxkbmapやxmodmapで現在のXサーバーの設定を確認できます。ttyまたは未設定:これだけで断定せず、ログイン方法やディストリビューションの案内を確認します。文字コンソールとグラフィカル画面では設定が別です。
Wayland上でX11アプリを動かすXwaylandは、通常はコンポジターからキーマップを受け取ります。setxkbmapのマニュアルは、Xwaylandのキーマップ変更には対応していないと明記しています。DISPLAYが設定されていてもXorgとは限らないため、警告を無視して繰り返し実行しないでください。
キーボードレイアウトの確認方法
X11ではsetxkbmap -queryで確認する
X11セッションの端末で、次の読み取り専用コマンドを実行します。通常、管理者権限は不要です。
setxkbmap -query出力にはrules、model、layout、variant、optionsなどが含まれます。layoutがjpなら日本語配列、usなら米国英語配列です。複数の配列が登録されている場合は、その一覧が表示されることがあります。これは設定内容の確認であり、いま選ばれている入力ソースや日本語変換モードの表示とは区別します。現在選択中の入力ソースはデスクトップのインジケーターでも確認してください。
システムの既定値はlocalectlで確認する
systemd-localedを利用する環境では、次のコマンドでコンソールとX11のシステム設定を確認できます。コマンドの有無や対応状況はディストリビューションによって異なります。
localectl statusVC Keymapは文字コンソール用、X11 LayoutなどはX11の既定設定です。ユーザーのGNOMEやKDE設定で上書きされる場合があるので、この出力だけで現在のデスクトップ配列を断定しません。コマンドがない、サービスへ接続できない、変更機能が未対応と表示される場合は、そのOSの設定方法を確認します。
キーボードレイアウトの変更方法
X11で一時的に日本語配列へ変更する
現在の設定を記録したうえで、X11セッション内で次のコマンドを実行します。
setxkbmap -layout jp日本語配列へ変更する例です。setxkbmap jpという短い書式も使えます。米国英語配列ならus、ドイツ語配列ならde、フランス語配列ならfrを指定します。ハードウェアや配列によってはモデルやバリアントも確認してください。この操作だけでは設定ファイルに保存されず、再ログイン後の保持は保証されません。デスクトップ設定が後から適用されて戻る場合もあります。
変更後はsetxkbmap -queryと実際の入力を確認します。元へ戻すときは記録したレイアウト・モデル・バリアント・オプションを復元します。もともと米国英語配列だけを使っていた場合のレイアウト指定はsetxkbmap -layout usですが、複数配列や独自設定を使っていた場合の完全な復元コマンドではありません。
設定の永続化
通常のデスクトップ利用では、後述のGUIからユーザーの入力ソースを保存してください。~/.xinitrcは主にxinitやstartxでXセッションを開始するときのスクリプトです。一般的なGUIログインやWaylandで必ず読み込まれるものではなく、~/.xsessionの扱いもOSやログイン方法に依存します。
echo "setxkbmap jp" >> ~/.xinitrcを万能な永続化手順として実行するのは避けます。新規作成したファイルが既定のセッション起動を置き換えたり、既存のexecによるデスクトップ起動より後へ追記して実行されなかったりするためです。手動のXセッションを管理する場合に限り、既存ファイルをバックアップし、ディストリビューションの起動手順に従って適切な位置へ設定します。
システム全体の既定値を変更する場合
複数ユーザーやログイン画面の既定値まで変更する必要がある場合は、ユーザー設定とは影響範囲が異なります。localectlの変更に対応するOSでは、管理者が現在の設定と復元方法を記録してから行います。X11の既定配列だけを日本語へ変更し、文字コンソールへの自動変換を避ける例は次のとおりです。
sudo localectl --no-convert set-x11-keymap jpこれは現在のWaylandセッションを直接切り替えるコマンドではありません。必要なモデル・バリアント・オプションがある場合は、それらもOSの案内に沿って指定します。--no-convertを省くと、近い文字コンソール用マップへの変換も行われます。文字コンソールを変更したい場合は、まずlocalectl list-keymapsで利用可能な名前を調べてから、別途set-keymapの手順を確認してください。X11のjpとコンソールの名前が同一とは限りません。
ログイン前や起動初期の画面は別途確認が必要です。systemdの公式マニュアルは、起動初期への反映にinitrdの再生成が必要な場合があり、自動では行われないと説明しています。配列変更だけを理由に起動構成を闇雲に変更せず、対象ディストリビューションの手順に従います。
コマンドラインツールの使用例:xmodmapでキーを変更する
xmodmapはX11のキーコードとキーシンボル(keysym)、修飾キーマップを表示・変更するツールです。Wayland全体のキー設定を変更するための共通ツールではありません。通常の配列選択はGUIやXKB設定を優先し、特定のX11キー割り当てを調整したいときに使います。
キーボードのキーコードを確認する
xmodmap -pke
xmodmap -pm-pkeはキーコードとキーシンボルの対応を、再入力できる式の形式で表示します。アプリの全ショートカットや「操作一覧」ではありません。-pmはControlやLockなどの修飾キーマップを表示します。変更前に両方を記録し、Caps LockにCaps_Lockが割り当てられているか確認します。
Caps LockをControlとして使う例
標準的なX11の割り当てを前提に、Caps Lockを追加のControlキーにする例です。Caps LockとControlを相互に入れ替える例ではありません。既存のControlキーは残ります。Caps Lockがオンなら先にオフにします。カスタマイズ済みの環境では、そのまま適用せず現在のマップを確認してください。
xmodmap -e "remove Lock = Caps_Lock" \
-e "keysym Caps_Lock = Control_L" \
-e "add Control = Control_L"Lockの修飾キー登録から元のCaps Lockを外し、対応するキーシンボルをControlへ変更して、Controlの修飾キー登録へ加えます。実行後は通常の文字入力とControlを使うショートカットを確認します。Caps Lockの大文字固定機能はこのキーでは使えなくなります。キー名が見つからないなどのエラーが出る場合、同じ処理を繰り返さず元の配列を確認します。
xmodmap設定の保存と読み込み
この設定をファイルで管理する場合、~/.xmodmaprcなどへ次の式を書きます。以下は設定ファイルの内容であり、そのままシェルで実行するコマンドではありません。既存ファイルがある場合はバックアップし、重複して追記しないでください。
remove Lock = Caps_Lock
keysym Caps_Lock = Control_L
add Control = Control_L保存した内容は、X11セッションで明示的に読み込みます。
xmodmap "$HOME/.xmodmaprc".xmodmaprcや.Xmodmapという名前だけで自動適用されるとは限りません。永続化には利用環境で実際に読み込まれるX11の自動起動設定が必要で、デスクトップのキーボード管理機能が後から上書きする場合もあります。解除するときは自動起動への登録を外し、元の配列設定を再適用して確認します。設定ファイルを消すだけでは、現在のセッションに適用済みの変更は戻りません。
GUIツールを使用した方法
GNOMEやKDE Plasmaでは、まずGUIから入力ソースやレイアウトを変更します。ディストリビューション、デスクトップの版、日本語翻訳によって項目名が異なるため、設定画面の検索で「キーボード」を探すと確実です。
GNOMEを使用する場合
- [設定]を開き、[キーボード]を選びます。古い版では[地域と言語]に入力ソースがある場合もあります。
- [入力ソース]の追加ボタンを選びます。
- 言語を選んだあと、必要なキーボードレイアウトを選び、追加します。言語名だけでなく配列の種類も確認します。
- レイアウトのプレビューを確認し、上部バーの入力ソース表示から追加した配列へ切り替えて試します。
GNOMEの既定の切り替えはSuper + Space、逆順はShift + Super + Spaceです。ユーザーの設定で変更されている場合もあります。ログイン画面用の設定は通常のユーザー設定と別なので、個人の配列だけを変えたい場合は混同しないでください。
KDE Plasmaを使用する場合
- [システム設定]で「キーボード」を検索して設定モジュールを開きます。版によって[入力デバイス]などの分類にあります。
- [レイアウト]で、レイアウトを構成する設定を有効にします。
- [追加]から配列を選び、必要に応じてバリアントを指定します。プレビューがあれば確認します。
- 表示順、切り替え方法、適用範囲を確認して設定を適用し、入力を試します。
KDEではアプリ単位・ウィンドウ単位などの切り替え方も選べます。別のウィンドウで配列が戻る場合は、レイアウト自体だけでなく切り替えポリシーも確認します。
よくある質問とトラブルシューティング
Q1:再起動すると元の配列に戻るのはなぜですか?
X11で一時的に変更しただけ、設定ファイルを読み込んでいない、またはデスクトップ設定に上書きされている可能性があります。まずGUIに保存された入力ソースを確認します。~/.xinitrcへの追記をすべてのログイン方式に共通の解決策としないでください。
Q2:特定のキーの機能だけを変えたい場合は?
X11ではxmodmap -pkeとxmodmap -pmで現在の設定を確認してから調整します。Waylandではデスクトップやコンポジターが提供する設定を使います。アプリのショートカットだけを変えたい場合は、そのアプリ内の設定を先に確認すると影響を限定できます。
Q3:setxkbmapが使えない、または変更が効かない場合は?
command not foundならツールが未導入、Cannot open displayなら対象のXサーバーへ接続できていない可能性があります。まずWayland・X11・SSH先・コンソールのどこで実行しているかを確認します。sudoを付ければ解決するとは限りません。Waylandの警告が出る場合はGUIまたはコンポジター固有の設定へ切り替えます。
Q4:jpにしたのに日本語へ変換できません
jpはキーと記号の配列の指定で、かな漢字変換エンジンの有効化ではありません。日本語変換にはMozcなどの入力メソッドと、IBusやFcitxなど利用環境の設定を別に確認します。USキーボードでも日本語入力は可能なので、文字変換の問題を配列変更だけで直そうとしないでください。
Q5:ログイン画面や文字コンソールだけ配列が違います
ユーザーのデスクトップ配列、ログイン画面の既定値、文字コンソール用キーマップは別の設定として確認します。リモート接続や仮想マシンの場合は接続元・ゲスト側の配列も区別します。相談時はディストリビューション名、デスクトップと版、WaylandかX11か、物理キーボードの配列、どの画面でどのキーが違うかを伝えると切り分けやすくなります。
まとめ
Linuxのキーボードレイアウトは、最初にWayland・X11・文字コンソールを区別し、通常のデスクトップ利用ならGUIで保存します。setxkbmapとxmodmapはX11に対象を絞って使い、一時変更と永続設定を分けてください。変更前の設定を記録し、文字や記号、Controlなどの操作、再ログイン後の保持まで確認すれば、配列の不一致や設定の競合を見つけやすくなります。


コメント