LinuxでColemakに切り替える方法
LinuxでColemakを設定する場所を、テキストコンソール、X11、Wayland別に解説します。SSHサーバーで不要な理由や、VimのhjklとCtrlショートカットへの影響も確認できます。
Linux で Colemak レイアウトを設定する場所
Linux の Colemak は、システム全体で共通する単一の設定ではありません。その時点でキーボード入力を読み取っている仕組みがレイアウトを適用するため、設定場所はテキストコンソール、X11 サーバー、Wayland コンポジターのいずれかです。誤った場所に設定すると、何も変わらないように見えます。
4 つ目の方法では、オペレーティングシステムを完全に介さずに済みます。QMK や VIA で動作するキーボードなど、ファームウェア自体でキーをリマップするキーボードは、必要な文字に対応するコードを送信します。そのため、サーバーコンソールや自分が所有していないマシンを含め、接続したすべてのマシンで設定なしに Colemak を入力できます。ただし、ノート PC のキーボードは引き続き QWERTY で入力されます。
このガイドでは、3 つのソフトウェア層、それぞれが必要になることがリモートサーバーではほとんどない理由、さらに切り替えによって Vim とターミナルのショートカットが受ける影響を説明します。
システムにすでにある設定を確認する
変更する前に、次のコマンドを実行します。現在の設定と、X keyboard database が提供する Colemak のバリアント一覧を表示します。
localectl status
setxkbmap -query
localectl list-x11-keymap-variants us | grep colemak最後のコマンドでは、colemak と colemak_dh が表示されるはずです。Colemak は長年 xkeyboard-config に含まれています。Colemak-DH はバージョン 2.34 で追加されたため、表示されないのは古いリリースだけです。2026年8月現在、Ubuntu 24.04 と Debian 13 には、これより新しいバージョンが同梱されています。
setxkbmap -query でディスプレイを開けないというエラーが表示される場合は、Wayland セッションを使用しており、レイアウトはコンポジターが管理しています。その場合については、後述の専用セクションで説明します。
Colemak と Colemak-DH
Colemak は QWERTY の位置から 17 個のキーを移動し、Z、X、C、V を含む 10 個のキーはそのまま残します。そのため、元に戻す、切り取り、コピー、貼り付けのショートカットは左手が覚えている位置に残ります。この互換性が、レイアウトがこの形になっている理由です。
Colemak-DH は Colemak の変更版です。D、B、G の位置を移動し、H と M を入れ替えます。通常の Colemak では、D と H の両方を入力する際に、人差し指をキーボード中央の列まで伸ばす必要があるためです。公式の mod では、すべての文字を Colemak と同じ指で入力するため、Colemak の利用者が DH に移行する際の変更は小さく、新しいレイアウトを覚え直す必要はありません。XKB の variant は colemak_dh で、左 Shift の横に追加キーがあるキーボード向けには colemak_dh_iso を使用します。
QWERTY から移行する場合、どちらを選んでも覚え直しは 1 回で済みます。使いやすさで選び、そのまま使い続けてください。2 回目のレイアウト変更にも、1 回目とほぼ同じ負担がかかります。再構築する対象は、キーの位置に結び付いた運動記憶だからです。
X11 で setxkbmap と localectl を使用して Colemak を設定する
setxkbmap us -variant colemak
setxkbmap -querysetxkbmap -query は variant: colemak を報告するようになり、どのウィンドウでも入力すると Colemak の文字が表示されます。この変更は X セッションの間だけ有効で、ディスクには何も書き込まれません。そのため、1 時間だけこのレイアウトを試す安全な方法です。
再起動後も設定を維持するには、次のコマンドを実行します。
sudo localectl set-x11-keymap us pc105 colemak
localectl status引数の順序は、layout、model、variant です。localectl status は X11 Layout: us と X11 Variant: colemak を表示するはずです。localectl は、--no-convert を追加しない限り、この選択を最も近いコンソール keymap にも変換します。そのため、多くのシステムではこの 1 つのコマンドで tty も設定できます。Debian と Ubuntu では、その後に /etc/default/keyboard を確認してください。起動時に console-setup が読み取るのはこのファイルです。
Wayland で Colemak を設定する
Wayland セッションには、設定対象の X server がありません。コンポジターがキーマップを読み込み、各アプリケーションに渡すため、レイアウトはコンポジーターの設定です。そのため、Wayland では setxkbmap が正常に動作しません。ディスプレイの検出に失敗するか、XWayland にしか変更を適用しないため、ネイティブ Wayland アプリケーションには反映されません。
GNOME では、設定は gsettings のキーです。
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak')]"ログアウトする必要はなく、すぐに反映されます。文字列 us+colemak は、レイアウトとバリアントをプラス記号で連結したものです。
sway では、~/.config/sway/config に設定を記述します。
input type:keyboard {
xkb_layout us
xkb_variant colemak_dh
}swaymsg reload で設定を再読み込みします。swaymsg -t get_inputs には、使用中のレイアウトとともにすべての入力デバイスが表示されます。1 台のキーボードだけが正常に動作しない場合は、これを実行して確認します。
KDE Plasma では、System Settings、Keyboard、Layouts の順に開き、English (US) に Colemak バリアントを追加します。
テキストコンソールで Colemak を設定する
コンソールは Ctrl+Alt+F3 で切り替えるプレーンテキストの tty で、独自のキーマップを使用します。X11 やコンポジターで設定した内容はコンソールには反映されません。これは、仮想コンソール上の端末作業環境で作業する場合に重要です。
Debian と Ubuntu では、/etc/default/keyboard を編集します。
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT="colemak"
XKBOPTIONS=""次に適用します。
sudo setupconコンソールで入力して確認します。console-setup は ckbcomp を使用してこの XKB 記述をコンソール用キーマップに変換するため、これらのシステムではコンソールと X が同じ記述を共有します。
kbd キーマップを直接使用するディストリビューションでは、まず名前を確認します。
localectl list-keymaps | grep -i -e colemak -e latin9
sudo localectl set-keymap en-latin9kbd パッケージには Colemak のコンソール用マップが i386/colemak/en-latin9 として含まれています。そのため、通常渡す名前は en-latin9 であり、colemak ではありません。リストに表示される名前を渡してください。存在しない名前は拒否されます。
sudo loadkeys en-latin9 は現在のコンソールを直ちに変更し、sudo loadkeys us は元に戻します。loadkeys は設定ではなくテストとして扱ってください。これは再起動まで有効で、Debian と Ubuntu ではブート時に実行される setupcon が、/etc/default/keyboard の内容を復元します。
ヘッドレス VPS に Colemak レイアウトは必要ですか?
ほとんどの場合、必要ありません。その理由を理解しておくことが重要です。SSH が送信するのはキーの位置ではなく文字です。ターミナルエミュレーターがキー入力を受け取り、ローカルのレイアウトがそれを文字に変換し、その文字だけが接続経由で送信されます。サーバーは n を受信しますが、その文字をどの物理キーが生成したかを知る方法はありません。したがって、ノート PC に設定したレイアウトはすべての SSH セッション、tmux、リモートで実行するすべてのエディターに引き継がれ、リモートマシン側でキーボード設定を行う必要はありません。
本番サーバーのキーボード関連ファイルを編集する前に、この点を覚えておいてください。Linux サーバー群を管理する場合、レイアウトはサーバー群ではなく手元のマシンに属します。そのため、プロビジョニングに含める必要はありません。新しい VPS で最初の 10 分に行う作業のほうが、これより有用です。
計画しておくべき例外が 2 つあります。1 つ目は、マシン自体に接続されたコンソールです。プロバイダーのパネルにあるブラウザーコンソールは、通常、仮想マシンにキーボードとして認識されます。そのため、キー入力はスキャンコードとして届き、サーバー自身のコンソールキーマップが表示する文字を決定します。サーバー側で設定したレイアウトが有効になるのはこの場所だけです。また、SSH が使えなくなったときの復旧経路でもあるため、コンソールキーマップが未完成のままだと実際のリスクになります。
シリアルコンソールは異なります。文字を転送するため、ローカルのレイアウトが適用されます。2 つ目の例外は、共有マシンです。コンソールキーマップはシステム全体に適用されます。そのため、他の人もログインするマシンで Colemak を設定すると、その人たちにも影響します。なぜ変わったのか分からないでしょう。
Vim の hjkl キーはどうなるか
Colemak では、h では移動できません。残りの 3 つは移動できます。j は QWERTY の Y の位置に、k は QWERTY の N の位置に、l は QWERTY の U の位置にあるため、カーソルキーは 4 本の指の下に並ばず、3 段に分散します。
実用的な選択肢は 2 つあり、どちらにも実際の利用者がいます。
デフォルトを維持し、キーの位置を覚え直します。設定の他の部分には影響せず、すべてのプラグインがそのまま動作し、他の人が書いた Vim の解説も書かれているとおりに利用できます。
または、右手の下にあり、以前の hjkl と同じ位置にある 4 つのキーをリマップします。Colemak では、その 4 つの物理キーは h、n、e、i になります。Colemak-DH では、DH が H と M を入れ替えているため、同じ 4 つの物理キーは m、n、e、i になります。
noremap n j
noremap e k
noremap i l
noremap l i
noremap k nn で下に移動し、e で上に移動し、i で右に移動します。h はもともと左移動です。最後の 2 行では、置き換えたコマンドを元に戻します。l は挿入モードを開始し、k は最後の検索を繰り返します。大文字にも同じ設定を行ってください。そうしないと、Shift とカーソルキーの組み合わせで予期しない動作になります。
Vim の langmap オプションを使うと、より少ない行数で同様の設定ができます。
set langmap=nj,ek,il,li,kn各ペアは、入力した文字と、Vim が実行すべき文字の順に読み取られます。この設定はノーマルモードにだけ適用されるため、挿入モードでは通常どおり Colemak の文字を入力できます。Vim のヘルプには、2 つの制限が記載されています。langmap は Ctrl や Alt との組み合わせには適用されません。また、デフォルトのキーを前提に書かれたプラグインのマッピングは、この設定の下で予期しない動作をすることがあります。
どちらを選ぶ場合も、最初に決めたら変更しないでください。1 か月後に使わなくなるリマップは、さらに 1 か月分の習得時間を必要にします。
端末ショートカットの動作
端末の制御コードは物理キーではなく文字から生成されるため、すべての Ctrl ショートカットがキーボードレイアウトに合わせて移動します。Colemak では QWERTY の Z、X、C、V の位置を意図的に維持しているため、Ctrl+C、Ctrl+Z、Ctrl+X、Ctrl+V は位置が変わりません。
毎日使う4つのショートカットは移動します。入力を終了する Ctrl+D は、QWERTY の G の位置になります。履歴検索の Ctrl+R は、QWERTY の S の位置になります。行末へ移動する Ctrl+E は、QWERTY の K の位置になります。行を消去する Ctrl+U は、QWERTY の I の位置になります。
tmux のデフォルトのプレフィックスは維持されます。Colemak では B が移動しないためです。Colemak-DH では B が上段へ移動するため、プレフィックスも移動します。これは、VPS 上で長時間 tmux セッションを実行している場合に最初に気付く点です。プレフィックスを使いやすいキーに再割り当てするには、1行変更するだけです。同じ反射動作を2回覚え直すより簡単です。
デスクトップのショートカットも同じ規則に従います。Super+E のバインドは文字で定義されているため、レイアウトに合わせて移動します。Super+F1 のバインドは、ファンクションキーがレイアウトによる再マッピングの対象外であるため、その場に残ります。
切り替えにかかる時間
あなたの場合に必要な時間を、誰かが一律に示すことはできません。タッチタイピングは運動記憶です。キーの位置を覚えるのではなく、単語を指の動きに変換する反射を作り直します。そのため、効果があるのは実際に入力した時間だけです。
報告されている内容は、管理された測定ではなく、本人が記録した練習ログに基づくものです。最初の1週間は以前の速度の半分を大きく下回り、毎日使い続けると、1〜3か月の間に以前の速度へ戻る人が多いようです。個人差は大きいため、これらの数字は予定ではなく、おおよその傾向として捉えてください。
2つの習慣が、切り替えを遅らせます。1日の中で QWERTY と Colemak を交互に使うと、どちらの反射も十分に定着しません。そのため、切り替えを完了した人の多くは、主に使うマシンでは新しい配列に完全に移行します。忙しい週に始めると、時間に追われた状態で不正確に入力することになり、キーを見下ろす癖が身に付きます。
必要になる前に、元に戻す方法を準備してください。QWERTY に戻したくなるのは、何かが壊れ、誰かが対応を待っている状況だからです。
QWERTY にすばやく戻す方法
X11 では、setxkbmap us で QWERTY にすぐ戻せます。コンソールでは、sudo loadkeys us が同じ操作を行います。永続的な設定を元に戻すには、sudo localectl set-x11-keymap us を実行します。
まだ入力できないレイアウトで入力が必要なコマンドより、切り替え機能を使う方が適切です。
setxkbmap -layout us,us -variant colemak, -option grp:win_space_toggleこれは Colemak を最初のレイアウト、標準の US を 2 番目のレイアウトとして読み込み、Super+Space で切り替えます。colemak, の末尾のコンマは誤りではありません。最初のレイアウトには colemak variant を指定し、2 番目のレイアウトには variant を指定しないことを表します。GNOME では、Settings で両方の入力ソースを追加します。Super+Space で切り替えられます。
デスクトップセッションの外部で動作するパスワードプロンプトが 2 つあり、それぞれ個別に確認する必要があります。ログイン画面はセッション設定が適用される前に起動するため、設定をそのまま信頼せず、ログアウトして動作を確認します。ディスクが暗号化されている場合、パスフレーズのプロンプトは initramfs から実行されます。initramfs には独自の keymap のコピーがあります。Debian と Ubuntu では、/etc/default/keyboard を変更した後に sudo update-initramfs -u で initramfs を再構築します。その後、別の方法でマシンにアクセスできるうちに 1 回再起動してテストします。
QWERTY を 1 つのプログラムだけで使えますか?
レイアウトは、アプリケーションがキーを認識する前に適用されます。X サーバーまたはコンポジターがスキャンコードを文字に変換してから、その文字をアプリケーションに渡すため、アプリケーション側から別のレイアウトを要求することはできません。アプリケーションができるのは、受け取った入力を再マッピングすることだけです。Vim の修正を Vim の設定で行うのはこのためです。また、ウィンドウ単位でレイアウトを切り替える一般的な機能がないのも同じ理由です。
実用的な方法は 2 つあります。1 つ目は、デバイス単位で設定する方法です。QWERTY で入力するキーボードが別にある場合は、システム全体ではなく、そのデバイスにレイアウトを設定します。
xinput list
setxkbmap -device 12 -layout usxinput list から id を取得し、各キーボードで順番に入力して確認します。sway では、swaymsg -t get_inputs を使って入力識別子ごとに同じ設定を適用できます。type:keyboard より具体的なセレクターが優先されます。
2 つ目は、Vim の langmap のように、アプリケーション内で再マッピングする方法です。ゲームにはほぼ必ずキー割り当て画面があるため、そこで移動キーを割り当て直すほうが、外部からレイアウトと格闘するより短時間で済みます。どちらの方法も使えないアプリケーションでは、上記のレイアウト切り替えを割り当て、起動前に押してください。
FAQ
VPS で Colemak を設定する必要はありますか?
SSH 経由で接続する場合は不要です。SSH は文字を転送するため、何かを送信する前にノート PC 側でキーボードレイアウトが解決されます。そのため、サーバーは QWERTY の入力者が送信する場合と同じバイト列を受け取ります。例外は、プロバイダーのパネルにあるブラウザーコンソールです。このコンソールはキーボードとして仮想マシンに接続し、サーバー自身のコンソールキーマップを使用します。SSH に失敗した場合、このコンソールが復旧経路になります。確信がある場合だけ変更し、SSH がまだ機能している間にテストしてください。
Colemak と Colemak-DH のどちらを学ぶべきですか?
どちらも QWERTY からの再学習が必要です。そのため、移行コストではなく使いやすさで選んでください。Colemak-DH では D、B、G の位置を変更し、H と M を入れ替えます。通常の Colemak では、D と H の入力時に人差し指を中央列まで伸ばす必要があるためです。XKB のバリアント名は colemak と colemak_dh です。左 Shift の隣に追加キーがあるキーボードでは colemak_dh_iso を使用します。localectl list-x11-keymap-variants us | grep colemak を実行すると、システムで利用できるレイアウトを確認できます。
Colemak では Vim の hjkl キーはどうなりますか?
h は元の位置に残ります。j は QWERTY の Y の下、k は QWERTY の N の下、l は QWERTY の U の下に移動します。そのため、カーソルキーが 3 つの行に分散します。移動後の位置で再学習すれば、すべてのプラグインとチュートリアルをそのまま利用できます。あるいは、右手の下にある 4 つのキーを再マップできます。Colemak では h、n、e、i、Colemak-DH では m、n、e、i です。Vim の langmap オプションでもノーマルモードに対して同じことができます。ただし、Ctrl の組み合わせには適用されず、プラグインのマッピングを分かりにくくすることがあります。
以前の入力速度に戻るまでどのくらいかかりますか?
数日ではなく数週間を見込んでください。これは運動記憶であり、入力は練習によってのみ身に付くためです。自己申告による練習記録では、最初の 1 週間は以前の速度の半分を大きく下回り、毎日使い続けると 1 か月から 3 か月後に元の速度へ戻るという例が一般的です。QWERTY と Colemak を毎日交互に使うと、どちらの反射動作も定着しないため、習得にさらに時間がかかります。
デスクトップで setxkbmap が何もしなかったのはなぜですか?
ほぼ確実に、セッションが Wayland 上で動作しているためです。Wayland ではコンポジターがキーマップを管理し、各アプリケーションに適用します。そのため、setxkbmap はディスプレイを見つけられないか、XWayland にしか変更を適用できず、ネイティブアプリケーションには反映されません。レイアウトはコンポジター側で設定してください。GNOME では org.gnome.desktop.input-sources gsettings キー、sway では設定内の xkb_variant、KDE Plasma では System Settings の Layouts ページを使用します。