SSD Nodes Learn Hosting plans →
ガイド Matt Connor著者 Matt Connor

Colemak Mod-DHと標準Colemakの違いと選び方

Colemak Mod-DHはDとHを人差し指の下へ移動した配列です。6キーの変更点、標準版からの乗り換えに向く人、Linuxでvariant colemak_dhを有効にする方法を説明します。

Colemak Mod-DH の変更点

Colemak Mod-DH は、6 つの文字を移動した標準 Colemak です。D と H は中央の 2 列から下段へ移動し、左右の人差し指の下に配置されます。G、B、V、M は、空いたキーに移動します。最初に覚えるホームキーを含め、それ以外のキーは標準 Colemak とまったく同じ位置にあります。

この配列の名前は、変更内容そのものを示しています。標準 Colemak では、D は G と表示されたキーにあり、H は H と表示されたキーにあります。この 2 つのキーは、キーボードの中央列にあります。人差し指でそこを押すには、手全体を横へ移動させる必要があります。そのため Mod-DH では、標準 Colemak の中でこの部分を最も使いにくい点と見なし、両方の文字を 1 段下へ移動しました。

まだ配列を習得中なら、Mod-DH を選んで比較記事を読むのはやめてください。標準 Colemak を意識せずに入力できる場合は、数週間にわたって入力速度が低下します。その代わりに得られる快適さは、速度テストには現れません。このガイドでは、まず変更内容を正確に説明します。続いて Linux 側で指定する variant 名と、システムにその variant がない場合の対処方法を説明します。

2つの配列を横に並べて比較

標準の Colemak、文字キーのみ:

q w f p g   j l u y ;
a r s t d   h n e i o
z x c v b   k m , . /

Colemak Mod-DH、文字キーのみ:

q w f p b   j l u y ;
a r s t g   m n e i o
z x c d v   k h , . /

異なる文字は6つです。左手側の4つの移動と、右手側の1つの入れ替えとして捉えると理解しやすくなります。左手側では、D がホーム段から最下段へ移動し、G が最上段から、D が空けた中央列へ移動します。B は G があった最上段へ移動し、V は B が空けたキーへ1つ右に移動します。右手側では H と M の位置が入れ替わり、H が人差し指の下に、M が中央列に配置されます。

これらの図は、マトリックス(ortholinear)キーボードの構成と同じく、各段が10列になっているものとして見てください。通常の段違いキーボードでは、Mod-DH の左下隅にもう1つの配置があります。これについては後ほど説明します。

標準 Colemak で D がこれほど問題になるのはなぜですか?

人差し指は、ホーム段の2つのキーに置かれます。左側の F と表示されたキーは、どちらのレイアウトでも T を入力します。右側の J と表示されたキーは、どちらのレイアウトでも N を入力します。各人差し指は、その隣の列にある G と H と表示されたキーも担当します。指が十分に長くないため、手を動かさずに両方の列を覆うことはできません。そのため、手を横にずらし、残りの3本の指もホーム段のキーから離れます。この横方向の移動は、タッチタイピングで最も負担の大きい動作です。Mod-DH は、この動作をなくすためにあります。

標準 Colemak では、D は G と表示されたキーに、H は H と表示されたキーに配置されます。そのため、中央列の2つのキーが、どちらも使用頻度の高い文字を担当します。一方、Mod-DH では、上の図の配置に従い、D を V と表示されたキーに、H を M と表示されたキーに配置します。これらのキーは、段差のあるキーボード上で、それぞれ人差し指のホーム段のキーから右へ約半キー幅の位置にあります。そのため、指は自分の列の内側へ曲げるだけで済み、手を動かさずに入力できます。中央列を新たに担当する文字は、左側が G、右側が M です。

この議論の成否は、各文字を入力する頻度にかかっています。

ChartTypical published English letter frequency, for the six letters Mod-DH moves
The data behind this chart
[
  {
    "label": "H",
    "frequency_pct": 6.1
  },
  {
    "label": "D",
    "frequency_pct": 4.3
  },
  {
    "label": "M",
    "frequency_pct": 2.4
  },
  {
    "label": "G",
    "frequency_pct": 2.0
  },
  {
    "label": "B",
    "frequency_pct": 1.5
  },
  {
    "label": "V",
    "frequency_pct": 1.0
  }
]

以下は、一般的な英語の文章について公表されている代表的な数値です。どのコーパスを集計するかによって、数値は数十分の1ポイント程度変わりますが、順位は変わりません。入力する文字のうち、H は 6.1 パーセント、D は 4.3 パーセントです。一方、M は 2.4 パーセント、G は 2.0 パーセント、V は 1.0 パーセントです。Mod-DH は横方向の移動をなくしません。その移動を、使用頻度の高い文字ではなく、まれな文字に割り当てます。そのために必要な文字の移動は 6 回です。

同じままのもの

  • 左側のホームポジションの A R S T と、右側の N E I O は移動しません。この8個のキーが入力の大部分を担い、Colemak で最初に覚えた部分でもあります。
  • 1個のキーを除き、上段は同じです。左側は Q W F P、右側は J L U Y とセミコロンです。
  • 右手側の句読点キーは移動しません。
  • 数字段と修飾キーは変更されません。
  • WASD に割り当てられたゲームは、どちらの配列でも同じように動作します。4個の物理キーが、それぞれ同じ文字を担うためです。

変更後も維持されないものが1つあります。標準の Colemak では Z、X、C、V を QWERTY と同じキーに配置するため、Ctrl+Z、Ctrl+X、Ctrl+C、Ctrl+V は、最初のコンピューターから使い続けてきた指の下に残ります。Mod-DH では左下段を D に使うため、このまとまりを変更する必要があります。

この隅の配置には2種類があり、上の図はその一方にすぎません。通常の配置では、Z、X、C を Z、X、C と表示されたキーに残し、V を1つ右の B と表示されたキーへ移します。angle mod では、グループ全体を1つ左へずらします。これにより、左手の人差し指は D に向かって右下へ伸ばすのではなく、D の位置へ曲げて届くようになります。ISO キーボードには左 Shift と Z の間に余分なキーがあり、angle mod はこれを使います。ANSI キーボードにはそのキーがないため、ANSI 版では Z を別の位置へ移す必要があります。ただし、Z は英語で最も出現頻度の低い文字なので、この変更は許容できます。

そのため、パッケージ化されたバリアント名にはキーボードの種類が含まれています。目の前のキーボードに合うものを選び、Z と表示されたキーを押してください。入力された文字から、どちらの配置になっているか、また編集用ショートカットのどれが移動したかを確認できます。

標準 Colemak から切り替えるべきか

  • まだ習得中、または QWERTY を使っている: Mod-DH を選んでください。標準 Colemak より習得が難しいわけではなく、このページについて後から考える必要もありません。まだ Colemak を使うと決めていない場合は、それが先に解決すべき問題です。Colemak と Dvorak、QWERTY の比較を確認してください。
  • 標準 Colemak を流暢に入力できる: 効果は確かにありますが、小さいものです。一方、切り替えには数週間かかります。6 文字の変更でも自動入力は崩れます。特に重要な2 文字は人差し指で入力するキーに割り当てられており、英単語の多くに登場します。切り替えた人によると、数日間は入力速度が大幅に落ち、以前の速度に戻るまで数週間かかります。
  • programmable keyboard をすでに持っている: この場合のコストは小さいです。変更には firmware のビルドが1回必要で、元に戻す場合も別のビルドを行うだけです。1か月試し、好みに合う方を使ってください。
  • 1日の大半を別の言語で入力する: 上記の頻度データは英語を対象にしています。この説明を受け入れる前に、自分の言語で確認してください。D、H、G、M の重要度は、どの言語でも同じではありません。
  • 手が痛い: keyboard layout は複数ある対策の1つにすぎません。机の高さ、椅子、keyboard、座っている時間も関係します。ほかの環境が原因の問題を、文字の入れ替えだけで解決できるとは考えないでください。

Linux で Colemak Mod-DH を入力する方法

システムにすでに登録されている内容を確認します。2026 年 8 月時点では、Mod-DH のバリアントは、すべてのデスクトップ Linux が使用するキーボードデータベースである xkeyboard-config に含まれています。

localectl list-x11-keymap-variants us | grep colemak

現在のシステムでは、colemak と Mod-DH のエントリが表示されます。colemak_dh は ANSI 版、colemak_dh_iso は ISO 版、colemak_dh_ortho はマトリクスキーボード用です。colemak_dh_widecolemak_dh_wide_iso はワイド版で、右手側を 1 列外側へ移動します。UK レイアウトにも Mod-DH のバリアントがあるため、UK キーボードを使用している場合は gb に対して同じコマンドを実行します。grep に何も表示されない場合は、使用中の xkeyboard-config がこれらのバリアントに対応する前のバージョンです。その場合は次のセクションを参照してください。

恒久的に設定する前に、X セッションで試します。

setxkbmap -layout us -variant colemak_dh
setxkbmap -query

setxkbmap -query は現在有効なレイアウトとバリアントを表示するため、変更が反映されたことを確認できます。数文を入力してから、setxkbmap -layout us で元に戻します。使用中のマシンにそのバリアントが存在しない場合、コマンドは Error loading new keyboard description で失敗し、レイアウトは変更されません。

このコマンドが実行しないことにも注意してください。実行中の X セッションにだけ影響し、ログアウトすると解除されます。また、コンポジターがキーマップを管理する Wayland では何も行いません。レイアウトを恒久化する方法はデスクトップごとに異なり、すでに コンソール、X11、Wayland 全体で Colemak を恒久化する方法 にまとめられています。そこに記載されたすべての手順を、このバリアントにも適用できます。そのガイドで colemak と記載されている箇所には、colemak_dh と記載します。

システムに colemak_dh variant がない場合

レイアウトを用意する方法は3つあります。ただし、方法によって使えなくなる場所が異なります。

カスタム xkb variant。 symbols ファイルにキー定義を書き込み、variant を登録します。その後、パッケージ済みのものと同じように名前で使用できます。同じ仕組みを使うため動作は同一で、X11 セッションと Wayland セッションの両方に対応します。ただし、保守が必要です。/usr/share/X11/xkb 以下で編集するファイルは xkeyboard-config package に属するため、アップグレードで置き換えられる可能性があります。また、使用するすべてのマシンに再インストールする必要があります。

ユーザー空間の remapper。 keyd は evdev(kernel input layer)を通じてキーボードを読み取り、uinput(kernel の input injection device)を通じて remap 後のキーを再入力します。置き換えは display server がキーを認識する前に行われるため、1つのファイルで X session、Wayland session、テキストコンソールに対応できます。マップは /etc/keyd/default.conf に記述します。

[ids]
*

[main]
e = f
r = p
t = b
y = j
u = l
i = u
o = y
s = r
d = s
f = t
h = m
j = n
k = e
l = i
v = d
b = v
n = k
m = h

各行では、左側に指定した物理キーが、右側に指定したキーを送信するようになります。変更しないキーは記述しません。セミコロンキーは両方向で変更されますが、意図的に上の例から省いています。keyd list-keys を実行して、使用している build での名前を確認し、その2行を追加してください。設定を読み込み、動作を確認します。

sudo systemctl enable --now keyd
sudo keyd reload
keyd monitor

keyd monitor は keyd が認識するすべてのキーを表示します。これにより、キーが2回 remap されていないか確認できます。keyd を有効にする前に、システムのレイアウトを通常の US QWERTY に戻してください。keyd の出力は、設定されているレイアウトによって引き続き解釈されるためです。remap が2段階で適用されると、どのレイアウトにも一致しない文字が生成されます。

キーボード firmware。 QMK、ZMK、Vial では、レイアウトをキーボード内部に設定します。キーボードが必要な文字を送信するため、host は remap が行われたことを認識しません。QMK では、build と flash を行います。

qmk setup
qmk list-keyboards
qmk compile -kb planck/rev6 -km default
qmk flash -kb planck/rev6 -km default

上のキーボード名と keymap 名は例です。qmk list-keyboards がボードに対して出力する内容に合わせて planck/rev6 を置き換えてください。また、Mod-DH レイアウトを格納した keymap directory の名前に合わせて default を置き換えてください。

ボードの firmware が対応していれば、Vial と VIA でも USB 経由の graphical editor から同じ設定ができます。そのため、compiler を使わずにキーを移動できます。

テキストコンソールでも使える方法はどれですか?

どこでも使えるのはファームウェアだけです。xkb の variant は、1 台のマシン上の 1 つのセッションに属します。keyd は 1 台のマシンに属し、そのマシン上で root 権限を必要とします。キーボードは利用者に属します。レスキューシェル、UEFI の設定画面、インストール直後のシステム、シリアルコンソールに接続しても、Mod-DH を入力できます。接続先で特別な設定を必要としないためです。

リモート作業では、この違いは想定ほど重要ではありません。一方、ローカルコンソールでは重要です。VPS に SSH 接続すると、サーバーは利用者のキーボードレイアウトをまったく認識しません。端末がキー入力を文字に変換して送信するため、リモートマシンの keymap は関係ありません。問題になるのは、失敗したブート後のレスキューシェルや、予備の TTY に常設した作業環境など、目の前のコンソールを操作するときです。Linux の仮想コンソールには xkb とは別の keymap システムがあり、デスクトップの設定はそこには適用されません。

Debian と Ubuntu では、コンソールの keymap は ckbcomp によって xkb のデータから生成されます。そのため、コンソールでも同じ variant 名を使用できます。

ckbcomp us colemak_dh | sudo loadkeys -

この設定は次回の再起動まで有効です。永続化するには、XKBLAYOUTXKBVARIANT/etc/default/keyboard に設定し、sudo setupcon を実行します。console-setup がないディストリビューションでは、kbd に含まれる keymap に制限されます。これらの多くは QWERTY なので、Colemak-DH の map が存在すると判断する前に localectl list-keymaps | grep -i colemak で確認してください。存在しない場合は、keyd のほうが簡単です。1 つのファイルでコンソールとグラフィカルセッションの両方を設定できるためです。

切り替え後に起きる問題

2 層の再マッピング。 Mod-DH を書き込んだキーボードと、ホスト側で colemak_dh を設定した環境を組み合わせると、どちらの配列の文字も正しく入力できません。2 つのマッピングが重なるためです。S と表示されたキーを押すと、キーボードは R を送信します。ホスト側の配列はそれを R のキー入力として解釈し、P を入力します。マッピングは 1 か所だけで行ってください。

キーボードに合わない最下段。 ISO キーボードで colemak_dh を選択したり、ANSI キーボードで colemak_dh_iso を選択したりすると、左下付近の文字の位置がずれます。切り替えた直後に、Z と表示されたキーを押してください。2 つの配列の違いが最も現れるのがその角だからです。

ログイン画面。 GDM と SDDM は独自のキーボード設定を保持します。そのため、セッションの配列を変更しても、パスワード入力画面だけ QWERTY のままになることがあります。keyd とファームウェアを使うとこの問題を避けられます。どちらも greeter が表示される前に適用されるためです。

Caps Lock。 公開されている Colemak の配列では、Caps Lock も Backspace に変更されます。ただし、これを含めるかどうかは実装によって異なります。切り替えた直後に、このキーを確認してください。文章の途中で気付くと不便です。

しばらくの間の入力速度。 最初の 2 日間は、元に戻したくなるほど入力速度が落ちると考えてください。これは正常です。配列を変更する人には同じことが起こります。

FAQ

Colemak をすでに標準配列で使用している場合、Colemak Mod-DH に切り替える価値はありますか?

入力がすでに無意識にできる状態なら、正直なところ、通常はありません。6 文字が変わり、そのうち 2 文字は人差し指で入力する頻出キーです。数か月かけて身につけた反射的な入力が崩れるには十分です。切り替えた人によると、数日間は入力速度が大幅に落ち、以前の速度に戻るまで数週間かかります。向上するのは速度よりも快適さです。D と H で手を横に動かす必要がなくなります。人差し指の動きが気になる場合や、戻すための再書き込みが 1 回で済む programmable keyboard を使っている場合は、切り替えを検討してください。

Colemak Mod-DH では Ctrl+Z、Ctrl+X、Ctrl+C、Ctrl+V が使えなくなりますか?

そのキー群の一部は変わりますが、標準 Colemak では変わりません。標準 Colemak は Z、X、C、V を QWERTY の位置に残すため、4 つのショートカットはすべて手が覚えている位置にあります。Mod-DH では左下段に D が必要なので、どこかのキーを移動する必要があります。通常の配列では Z、X、C はそのままで、V が 1 キー右へ移動します。angle mod 配列ではキー群全体が 1 キー左へ移動し、Z の位置が変わります。切り替えた後に Z と表示されたキーを押すと、使用している実装の配置を確認できます。

Linux システムに colemak_dh バリアントがあるか確認するにはどうすればよいですか?

localectl list-x11-keymap-variants us | grep colemak を実行します。そこに表示された項目は、名前で選択できます。X セッションで setxkbmap -layout us -variant colemak_dh を使ってテストし、setxkbmap -query で確認します。バリアントがない場合、setxkbmap は Error loading new keyboard description を出力し、配列は変わりません。その場合は、カスタム xkb バリアント、keyd remapper、または keyboard firmware を使用できます。

Colemak Mod-DH は Linux のテキストコンソールで動作しますか?

単独では動作しません。仮想コンソールには独自の keymap があり、loadkeys によって読み込まれます。デスクトップの xkb 設定は読み込まれません。Debian と Ubuntu では、ckbcomp us colemak_dh | sudo loadkeys - により xkb バリアントが現在のブート用のコンソール keymap に変換されます。/etc/default/keyboardXKBVARIANT を設定してから sudo setupcon を実行すると、再起動後も設定が維持されます。keyd はカーネルの入力レイヤーでキーを再マップするため、どのディストリビューションでもコンソールで動作します。Firmware もコンソールで動作し、マシンへのインストールは必要ありません。

キーボードにはどの Mod-DH バリアントを選べばよいですか?

物理的なキーボードに合わせて選択してください。colemak_dh は ANSI keyboard 用です。幅の広い平らな Enter キーと、長い左 Shift があるキーボードです。colemak_dh_iso は ISO keyboard 用です。縦長の Enter キーと、左 Shift と Z の間に追加のキーがあります。colemak_dh_ortho は、列がまっすぐ並んだ matrix keyboard 用です。幅広のバリアントでは右手が 1 列外側へ移動します。この移動を意図している場合にだけ使用してください。左下付近の文字が正しく入力されない場合は、誤ったバリアントを選択しています。

#colemak#keyboard-layouts#ergonomics#linux-desktop#xkb