0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QMKでキー配列をカスタマイズして、毎日の入力を少しだけ速くする

0
Last updated at Posted at 2026-10-27

キーボードを使っていると、「よく使うキーが遠い」「レイヤー切り替えが面倒」「日本語入力と英数入力の切り替えで手が止まる」と感じることがあります。

そこで今回は、QMK Firmwareを使ってキー配列を変更し、実際の作業で使い勝手を検証しました。結論から言うと、すべてのキーを大きく変えるよりも、カーソル移動・レイヤー切り替え・日本語入力切り替えの3点に絞って変更する方が、慣れるまでの負担が小さく効果を実感しやすいと感じました。

今回変更したキー配列

普段の作業では、エディタ、ターミナル、ブラウザを行き来します。特に使用頻度が高かったのは次の操作です。

  • 矢印キーによるカーソル移動
  • Home / End
  • Backspace / Delete
  • 日本語入力と英数入力の切り替え
  • コピー、貼り付け、保存

これらをホームポジション付近で実行できるように、通常レイヤーとファンクションレイヤーを分けました。

通常レイヤーではアルファベット入力を優先し、左手親指のキーを押している間だけ、右手側をカーソル操作用のレイヤーとして使います。

イメージは次の通りです。

通常レイヤー:

[ Q ][ W ][ E ][ R ][ T ]       [ Y ][ U ][ I ][ O ][ P ]
[ A ][ S ][ D ][ F ][ G ]       [ H ][ J ][ K ][ L ][ ; ]
[ Z ][ X ][ C ][ V ][ B ]       [ N ][ M ][ , ][ . ][ / ]

カーソルレイヤー:

[    ][    ][    ][    ][    ]       [    ][    ][ ↑ ][    ][    ]
[    ][    ][    ][    ][    ]       [ ←  ][ ↓  ][ → ][    ][    ]
[    ][    ][    ][    ][    ]       [Home][End ][Del][    ][    ]

キー位置はキーボードの配列や利き手によって調整してください。重要なのは、無理なく指を移動できる位置に操作を集めることです。

QMKの環境を用意する

QMK Firmwareを取得して、キーマップのディレクトリを確認します。すでにQMKの環境がある場合は、この手順は不要です。

git clone https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
python -m pip install qmk
qmk setup

キーボード名を確認するには、次のコマンドを使います。

qmk list-keyboards

今回の例では、キーボード名を my_keyboard、キーマップ名を kyo とします。実際には利用しているキーボードの名前に置き換えてください。

qmk new-keymap -kb my_keyboard -km kyo

生成されたディレクトリに keymap.c が作成されます。

なお、QMK対応キーボードでも、マイコンやレイアウトによって設定内容が異なります。最初にキーボードの公式ドキュメントを確認し、書き込み対象のキーボード名を間違えないようにしました。

keymap.cでレイヤーを定義する

QMKでキー配列を変更して検証するまでの流れを図にすると次の通りです。

まず、レイヤー名を定義します。通常レイヤーを BASE、カーソル操作用を NAV としました。

enum layers {
    BASE,
    NAV
};

次に、キーコードを定義します。QMKには標準で多くのキーコードが用意されています。

#define NAV_SPC MO(NAV)

MO(NAV) は、キーを押している間だけ NAV レイヤーを有効にするキーコードです。

シンプルな配列の例は次のようになります。

#include QMK_KEYBOARD_H

enum layers {
    BASE,
    NAV
};

#define NAV_SPC MO(NAV)

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [BASE] = LAYOUT(
        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,
        KC_A,    KC_S,    KC_D,    KC_F,    KC_G,
        KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,
        KC_LCTL, KC_LALT, NAV_SPC, KC_SPC, KC_ENT
    ),

    [NAV] = LAYOUT(
        _______, _______, _______, _______, _______,
        _______, _______, KC_UP,   _______, _______,
        _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
        _______, _______, _______, _______, _______
    )
};

ここで使っている LAYOUT の引数やキー数は、キーボードごとに異なります。このコードをそのまま貼り付けるのではなく、対象キーボードの既存キーマップに合わせて調整します。

_______ は、そのレイヤーでは下のレイヤーのキーを使う指定です。つまり、カーソルレイヤーで定義していないキーは、通常レイヤーの動作になります。

日本語入力切り替えを追加する

日本語入力の切り替えは、OSや設定によってキーコードが異なります。Windowsでは、環境によって KC_LANG1、KC_LANG2、またはIME関連のキーコードを使います。

私の環境では、左右の親指付近に英数とかなを割り当てました。

#define IME_ON  KC_LANG1
#define IME_OFF KC_LANG2

配列には次のように記述します。

[BASE] = LAYOUT(
    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,
    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,
    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,
    KC_LCTL, IME_OFF, NAV_SPC, KC_SPC, IME_ON
),

OS側のキーボード設定によっては、これらのキーコードが期待どおりに動かない場合があります。その場合は、まずQMKのキーテスターやOSのキーボード設定画面で、キー入力が正しく認識されているか確認します。

入力切り替えが不安定な場合は、QMKだけで解決しようとせず、OS側のショートカット設定も確認するのがポイントです。

コンパイルと書き込み

キーマップを作成したら、まずコンパイルします。

qmk compile -kb my_keyboard -km kyo

成功すると、キーボード用のファームウェアファイルが生成されます。

続いて書き込みを実行します。

qmk flash -kb my_keyboard -km kyo

キーボードによっては、コマンドを実行した後にリセットボタンを押す必要があります。また、書き込み中にUSBケーブルを抜くと復旧作業が必要になる場合があるため、書き込みが完了するまで操作しないようにしました。

最初から大きく配列を変えるのではなく、次のような小さな変更から始めると安全です。

[BASE] = LAYOUT(
    KC_Q, KC_W, KC_E, KC_R, KC_T,
    KC_A, KC_S, KC_D, KC_F, KC_G,
    KC_Z, KC_X, KC_C, KC_V, KC_B,
    KC_LCTL, KC_LALT, KC_SPC, KC_ENT, KC_BSPC
),

一度に複数の変更を入れると、どの変更が使いにくかったのか分からなくなります。私は、最初にレイヤーだけ追加し、その後に入力切り替えキーを追加しました。

実際の検証で分かったこと

変更後は、普段のコード編集、文章入力、ターミナル操作で使い心地を確認しました。

まず、矢印キーをホームポジション付近に移したことで、カーソル移動のたびに手を大きく動かす場面が減りました。特に短いコードの修正や文章中の一文字移動では、レイヤーキーを押しながら操作する流れが自然でした。

一方で、レイヤーキーを押し続ける操作には慣れが必要でした。最初のうちは、レイヤーキーを押したままカーソルキーを押すつもりが、通常レイヤーの文字を入力してしまうこともありました。

また、矢印キーを独自配置すると、既存の物理キー配置に慣れているアプリケーションでは混乱します。特にゲームやリモートデスクトップなど、別のキーマップを前提にした操作では、通常の矢印キーを残しておく方が便利です。

このため、最終的には次の方針にしました。

  • よく使うカーソル操作はレイヤーに集約する
  • 既存の矢印キーは完全には削除しない
  • 日本語入力切り替えは親指で押せる位置に置く
  • 変更内容を一度に増やしすぎない
  • 数日使ってから次の変更を判断する

生産性については、作業時間を厳密に計測したわけではありません。ただ、手の移動を減らせる場面が増えたことで、操作の中断が少なくなった感覚はありました。特に、エディタ上での細かいカーソル移動と入力切り替えは、変更の効果を感じやすい部分でした。

まとめ

QMKでキー配列をカスタマイズすると、キーボードを買い替えなくても、自分の作業に合わせて操作方法を調整できます。

今回試した中では、次の3つが効果を感じやすい変更でした。

  • レイヤーによるカーソル操作
  • 親指付近への日本語入力切り替え
  • よく使うキーだけを段階的に移動する

ただし、配列変更は一度にやりすぎると学習コストが高くなります。まずは1つのレイヤーを追加し、コンパイル、書き込み、数日間の使用を繰り返す方法がおすすめです。

QMKの魅力は、キー配置を固定されたものとして使うのではなく、自分の手や作業内容に合わせて育てられることだと思います。まずは MO(NAV) で小さなレイヤーを作り、毎日何度も使う操作から見直してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?