SSD Nodes Learn Hosting plans →
ガイド Matt Connor著者 Matt Connor ・更新日 2026-08-26

LinuxでColemakに切り替える方法とVimへの影響

Linuxのテキストコンソール、X11、WaylandでColemakを設定する方法を解説します。SSHで不要な理由、Colemak-DHがversion 2.34で追加された点、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 は version 2.34 で追加されたため、これがないのは古いリリースだけです。2026 年 8 月時点では、Ubuntu 24.04 と Debian 13 はいずれもそれより新しい version を提供しています。

setxkbmap -query で display を開けないというエラーが表示された場合は、Wayland session を使用しており、compositor が keyboard layout を管理しています。この場合については、下の専用セクションで説明します。

Colemak と Colemak-DH

Colemak は QWERTY の位置から 17 個のキーを移動し、10 個はそのまま残します。Z、X、C、V も残るため、元に戻す、切り取り、コピー、貼り付けのショートカットは左手が期待する位置のままです。この互換性が、レイアウトが現在の形になっている理由です。

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 回目とほぼ同じ負担がかかります。再構築する対象が、キーの位置に結び付いた運動記憶だからです。QWERTY を離れるべきかどうかまだ決めていない場合は、運動記憶の再構築に 1 か月を費やす前に、Colemak、Dvorak、QWERTY の比較方法で判断してください。

X11 で setxkbmap と localectl を使用して Colemak を設定する

setxkbmap us -variant colemak
setxkbmap -query

setxkbmap -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 を追加しない限り、多くのシステムではこの 1 つのコマンドで tty も設定できます。Debian と Ubuntu では、その後に /etc/default/keyboard を確認してください。起動時に console-setup が読み取るのはこのファイルです。

Wayland で Colemak を設定する

Wayland セッションには設定対象の X server がありません。Compositor が keymap を読み込み、各アプリケーションに渡すため、レイアウトは compositor の設定です。そのため、Wayland では setxkbmap が正常に動作しません。display が見つからずに失敗するか、XWayland にだけ変更を適用するため、ネイティブ Wayland アプリケーションでは無視されます。

GNOME では、設定は gsettings のキーです。

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak')]"

ログアウトしなくても、すぐに適用されます。文字列 us+colemak は、レイアウトと variant をプラス記号で連結したものです。

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 の順に開き、Colemak variant の English (US) を追加します。

コンソールで 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-latin9

kbd パッケージには 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 を受信しますが、どの物理キーから生成されたかを知る方法はありません。そのため、ノートパソコンで設定したレイアウトは、すべての 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 のヒントも、書かれたとおりに利用できます。

もう 1 つは、右手の下にある、以前 hjkl があった 4 つのキーを再マッピングする方法です。Colemak では、これらのキーは h、n、e、i を入力します。Colemak-DH では、同じ 4 つの物理キーが m、n、e、i を入力します。これは DH で H と M が入れ替わっているためです。

noremap n j
noremap e k
noremap i l
noremap l i
noremap k n

n で下に移動し、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 の位置になります。

B は Colemak で移動しないため、tmux のデフォルトプレフィックスは変わりません。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、2 番目のレイアウトとして標準の US 配列が読み込まれ、Super+Space で切り替えられます。colemak, の末尾のコンマは誤りではありません。最初のレイアウトには colemak バリアントを指定し、2 番目のレイアウトにはバリアントを指定しないための記述です。GNOME では、Settings で両方の入力ソースを追加すると、Super+Space ですでに切り替えられます。

デスクトップセッションの外部で動作するパスワード入力画面が 2 つあり、それぞれ個別に確認する必要があります。ログイン画面はセッション設定が適用される前に起動するため、設定を信頼するのではなく、ログアウトして動作を確認します。ディスクが暗号化されている場合、パスフレーズの入力画面は initramfs から起動し、独自の keymap のコピーを使用します。Debian と Ubuntu では、/etc/default/keyboard を変更した後に sudo update-initramfs -u で initramfs を再構築し、別の方法でマシンにアクセスできるうちに 1 回再起動して確認します。

QWERTY のまま使えるプログラムはありますか?

レイアウトは、アプリケーションがキーを受け取る前に適用されます。X server または compositor が scancode を文字に変換して、その文字をアプリケーションに渡します。そのため、アプリケーションから別のレイアウトを要求することはできません。受け取った入力を再マッピングすることだけが可能です。Vim の対処方法が Vim の設定にあるのはこのためです。また、一般的に使えるウィンドウ単位のレイアウト切り替え機能がないのもこのためです。

有効な方法は 2 つあります。1 つ目はデバイス単位で設定する方法です。QWERTY で入力するキーボードが別にある場合は、システム全体ではなく、そのデバイスにレイアウトを設定します。

xinput list
setxkbmap -device 12 -layout us

xinput list から id を取得し、各キーボードで順番に入力して確認します。sway では、swaymsg -t get_inputs から各 input identifier に同じ設定を適用できます。type:keyboard より具体的な selector が優先されます。

2 つ目は、Vim の langmap のように、アプリケーション内で再マッピングする方法です。ゲームにはほぼ必ずキー割り当て画面があります。そこで移動キーを再割り当てするほうが、外部からレイアウトを変更しようとするより短時間で済みます。どちらの方法も使えない場合は、上記のレイアウト切り替えを割り当て、起動前に押してください。

FAQ

Colemak を VPS に設定する必要はありますか?

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 ページを使用します。