要約
- 大西配列とKarabiner-Elementsで、タイピング効率が劇的に向上
- Complex Modificationsを使えば、レイヤー機能や同時押しカスタマイズが自由自在
- コピペで使えるComplex Modificationsを公開
はじめに
キーボードのカスタマイズ、やっていますか?
私は3ヶ月前にQWERTY配列を捨て、大西配列に移行しました。そして、Karabiner-Elementsを駆使して、数字レイヤーや矢印キーなど、さまざまなカスタマイズを施しています。
この記事では、実際に私が使っている設定を公開します。コピペですぐに使えるようにしているので、気になる機能だけでも取り入れてみてください。
この記事は大西配列で書いています。公式サイトの練習場をらくらくクリアできるレベルです
対象読者
- キーボードカスタマイズに興味がある人
- タイピング効率を上げたい人
- Karabiner-Elementsの使い方を知りたい人
- 大西配列や他のカスタム配列に興味がある人
環境
| 項目 | 詳細 |
|---|---|
| OS | macOS |
| ツール | Karabiner-Elements |
| キーボード | JIS配列 |
カスタマイズ方針
ツール
結論から言うと、MacではKanataとKarabiner-Elementsを試したうえで、Karabiner-Elementsにしています。
私はMacとWindowsのどちらも持っているので、クロスプラットフォームのものが理想でした。そこで、jtroo/kanataというRust製のレイヤー管理が得意なキーマッパーを検討しました。
しかし、JISのサポートが十分でなかったり、結局ドライバーとしてKarabinerが必要だったりで、あまり良い体験は得られませんでした。
2026年1月時点でJIS配列特有の「ro」キーのマッピングがうまくいかず、アンダーバーが打てないという問題がありました。まだ依存するには早いと判断しました。
おそらくもう少し成熟すればとても良い選択肢になると思います。
使う機能
Karabiner-Elementsには「Simple Modifications」と「Complex Modifications」の2種類の設定方法があります。公式ドキュメントでは以下のようにSimple Modificationsを変更する方法が紹介されています。
しかし、私は断然Complex Modificationsをおすすめします。
Complex Modificationsの利点
- レイヤー機能が実装できる(変数を使った条件分岐)
- 同時押し、単押しの挙動を細かく制御できる
- より複雑なカスタマイズが可能
実装している機能
私が実装しているカスタマイズは以下の通りです。
すべてMac標準のJIS配列での話です。一般的な外付けキーボードではCtrlとCaps Lockが逆だと思います。適宜読み替えてください。
1. SandS
Space and Shiftの略です。
Space長押しでShiftとして扱うものです。これにより、大文字を打つときに小指を使わないため、ホームポジションを維持できます。
設定詳細
{
"description": "Space→Shift",
"manipulators": [
{
"from": {
"key_code": "spacebar",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "left_shift" }],
"to_if_alone": [{ "key_code": "spacebar" }],
"type": "basic"
}
]
}
2. 英数キー + 数字レイヤー
英数キーを押しながら、ホームポジション付近で数字が入力できます。
-
上段(Q-P): Shift + 数字(記号)
- Q→!, W→@, E→#, R→$, T→%, Y→^, U→&, I→*, O→(, P→)
-
ホーム行(A-;): 数字そのもの
- A→1, S→2, D→3, F→4, G→5, H→6, J→7, K→8, L→9, ;→0
数字入力のために手を大きく動かす必要がなくなり、コーディングやデータ入力、ショートカットが格段に速くなります。
設定詳細
{
"description": "英数+数字レイヤー",
"manipulators": [
{
"from": {
"key_code": "japanese_eisuu",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"set_variable": {
"name": "eisuu_layer",
"value": 1
}
}
],
"to_after_key_up": [
{
"set_variable": {
"name": "eisuu_layer",
"value": 0
}
}
],
"to_if_alone": [{ "key_code": "japanese_eisuu" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "q",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "1",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "w",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "2",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "e",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "3",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "r",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "4",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "t",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "5",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "y",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "6",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "u",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "7",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "i",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "8",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "o",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "9",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "p",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "0",
"modifiers": ["shift"]
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "a",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "1" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "s",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "2" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "d",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "3" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "f",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "4" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "g",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "5" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "h",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "6" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "j",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "7" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "k",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "8" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "l",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "9" }],
"type": "basic"
},
{
"conditions": [
{
"name": "eisuu_layer",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "semicolon",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "0" }],
"type": "basic"
}
]
}
3. かなキー + 矢印レイヤー
かなキーを押しながら、Vim風の矢印キー操作ができます。
- H→←, J→↓, K→↑, L→→
macOSにはEmacsのショートカット(Ctrl+N/P/F/Bなど)がありますが、個人的にはVim風のほうが直感的で使いやすいと感じています。
Right Cmdキーと組み合わせる人も多いようですが、私はかなキーのほうが押しやすいと感じています。
設定詳細
{
"description": "かな+矢印レイヤー",
"manipulators": [
{
"from": {
"key_code": "japanese_kana",
"modifiers": { "optional": ["any"] }
},
"parameters": { "basic.to_if_alone_timeout_milliseconds": 300 },
"to": [
{
"set_variable": {
"name": "kana_arrow_mode",
"value": 1
}
}
],
"to_after_key_up": [
{
"set_variable": {
"name": "kana_arrow_mode",
"value": 0
}
}
],
"to_if_alone": [{ "key_code": "japanese_kana" }],
"type": "basic"
},
{
"conditions": [
{
"name": "kana_arrow_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "h",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "left_arrow" }],
"type": "basic"
},
{
"conditions": [
{
"name": "kana_arrow_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "j",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "down_arrow" }],
"type": "basic"
},
{
"conditions": [
{
"name": "kana_arrow_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "k",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "up_arrow" }],
"type": "basic"
},
{
"conditions": [
{
"name": "kana_arrow_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "l",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "right_arrow" }],
"type": "basic"
}
]
}
4. 修飾キーの単押しカスタマイズ
修飾キーは、ShiftやCtrl、Cmdキーなどのことです。
他のキーと組み合わせて使うときはそのまま機能し、単押しでは別のキーとして動作します。
- 左Shiftキー: 押している間Shift、単押しでEnter
- 右Shiftキー: 押している間Shift、単押しで「/」
- 左Cmdキー: 押している間Cmd、単押しでBackspace
- 左Ctrlキー: 押している間Ctrl、単押しでEsc
特にCtrl単押しでEscは、Neovimユーザーには必須級の設定です。jjやjkでEscを代用する方法もありますが、大西配列では少し押しづらいですし、個人的にはCtrlのほうが速いですし好きです。
jjはJujutsuで使うコマンドなので、避けたいという気持ちもありました。
LShift単押→Enter
{
"description": "LShift単押→Enter",
"manipulators": [
{
"from": {
"key_code": "left_shift",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "left_shift" }],
"to_if_alone": [{ "key_code": "return_or_enter" }],
"type": "basic"
}
]
}
RShift単押→/
{
"description": "RShift単押→/",
"manipulators": [
{
"from": {
"key_code": "right_shift",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "right_shift" }],
"to_if_alone": [{ "key_code": "slash" }],
"type": "basic"
}
]
}
Cmd単押→BS
{
"description": "Cmd単押→BS",
"manipulators": [
{
"from": {
"key_code": "left_command",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "left_command" }],
"to_if_alone": [{ "key_code": "delete_or_backspace" }],
"type": "basic"
}
]
}
Ctrl単押→Esc
{
"description": "Ctrl単押→Esc",
"manipulators": [
{
"from": {
"key_code": "left_control",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "left_control" }],
"to_if_alone": [{ "key_code": "escape" }],
"type": "basic"
}
]
}
5. Caps Lock → Cmd
Caps Lockキーを左Cmdキーとして使用します。ホームポジションから近く、非常に押しやすいです。
これはSimple Modificationsで設定しています。
6. 大西配列
QWERTY配列から大西配列への完全な置き換えです。詳しい所感はこちらに書いています。
大西配列の詳細設定
{
"description": "大西配列",
"manipulators": [
{
"from": {
"key_code": "a",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "e" }],
"type": "basic"
},
{
"from": {
"key_code": "b",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "semicolon" }],
"type": "basic"
},
{
"from": {
"key_code": "d",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "a" }],
"type": "basic"
},
{
"from": {
"key_code": "e",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "u" }],
"type": "basic"
},
{
"from": {
"key_code": "f",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "o" }],
"type": "basic"
},
{
"from": {
"key_code": "g",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "hyphen" }],
"type": "basic"
},
{
"from": {
"key_code": "h",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "k" }],
"type": "basic"
},
{
"from": {
"key_code": "i",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "r" }],
"type": "basic"
},
{
"from": {
"key_code": "j",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "t" }],
"type": "basic"
},
{
"from": {
"key_code": "k",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "n" }],
"type": "basic"
},
{
"from": {
"key_code": "l",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "s" }],
"type": "basic"
},
{
"from": {
"key_code": "m",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "d" }],
"type": "basic"
},
{
"from": {
"key_code": "n",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "g" }],
"type": "basic"
},
{
"from": {
"key_code": "o",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "y" }],
"type": "basic"
},
{
"from": {
"key_code": "r",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "comma" }],
"type": "basic"
},
{
"from": {
"key_code": "s",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "i" }],
"type": "basic"
},
{
"from": {
"key_code": "t",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "period" }],
"type": "basic"
},
{
"from": {
"key_code": "u",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "w" }],
"type": "basic"
},
{
"from": {
"key_code": "w",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "l" }],
"type": "basic"
},
{
"from": {
"key_code": "y",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "f" }],
"type": "basic"
},
{
"from": {
"key_code": "comma",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "m" }],
"type": "basic"
},
{
"from": {
"key_code": "period",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "j" }],
"type": "basic"
},
{
"from": {
"key_code": "semicolon",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "h" }],
"type": "basic"
},
{
"from": {
"key_code": "slash",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "b" }],
"type": "basic"
},
{
"from": {
"key_code": "hyphen",
"modifiers": { "optional": ["any"] }
},
"to": [{ "key_code": "slash" }],
"type": "basic"
}
]
}
使い方のコツ
段階的に導入する
いきなりすべての機能を有効にすると混乱するので、以下の順番で導入するのがおすすめです。
- Caps Lock → Cmd
- Space → Shift
- Ctrl単押し → Esc
- 英数キー + 数字レイヤー
- かなキー + 矢印レイヤー
- その他のカスタマイズ
合わなかったらスパッと辞める
試行錯誤もなかなか楽しいです。
KarabinerのGUIから、オフにすればいつでも無効化できます。
Windowsでも同じ配列を使う方法
あまり参考にならないかもしれませんが、私はWindowsでも同じ配列を使いたい場合、Deskflowというソフトウェアを使っています。
なぜAutoHotKeyではないのか
Karabiner-ElementsはMac専用のため、通常はWindowsのスタンダードである、AutoHotKeyを使います。しかし、以下の理由で私はやめてしまいました。
- 動作が不安定(変換されないことがある)
- Windows特有の管理者権限の問題が面倒
- 設定ファイルの記述が独自のフォーマットで大変だし変更が二度手間
冒頭で触れたjtroo/kanataも試しました。AutoHotKeyよりは安定しているという点でまだインストールはしたままです。どうしてもWindows単体で触りたいときはこれで妥協しています。
設定詳細
;; JIS配列用 大西配列 + SandS(Space and Shift)設定
;; Kanata v1.7.0以降対応
(defcfg
process-unmapped-keys yes
log-layer-changes no
)
;; JIS「ろ」キーのスキャンコード226を定義
(deflocalkeys-winiov2
jro 226
)
;; エイリアス定義
(defalias
;; CapsLock: タップでEscape、長押しでCtrl
cec (tap-hold 200 200 esc lctl)
;; SandS: スペースをタップでスペース、長押しでShift
sands (tap-hold 150 200 spc lsft)
;; 左Shift: タップでEnter、長押しでShift
lsen (tap-hold 200 200 ent lsft)
;; 右Shift: タップでスラッシュ、長押しでShift
rssl (tap-hold 200 200 / rsft)
;; レイヤー切り替え
num (layer-while-held numbers)
arr (layer-while-held arrows)
;; 無変換/変換キーも活用
muhen (tap-hold 200 200 mhnk @num) ;; 無変換: タップで無変換、長押しで数字レイヤー
henkan (tap-hold 200 200 hnk @arr) ;; 変換: タップで変換、長押しで矢印レイヤー
;; 「ろ」キー: Shift状態に応じて出力
;; 通常: _ (アンダースコア)、Shift押下時: \ (バックスラッシュ)
;; ※unicode出力はIMEをバイパスします
jrobsl (fork (unicode \) (unicode _) (lsft rsft))
)
;; JIS配列の物理キー配置
(defsrc
grv 1 2 3 4 5 6 7 8 9 0 - eql ¥ bspc
tab q w e r t y u i o p lbrc rbrc ent
f13 a s d f g h j k l ; apo bksl
lsft z x c v b n m , . / jro rsft
lctl lmet lalt mhnk spc hnk kana ralt menu rctl
)
;; ========================================
;; 大西配列メインレイヤー + SandS
;; ========================================
(deflayer oonishi
grv 1 2 3 4 5 6 7 8 9 0 / eql ¥ bspc
tab q l u , . f w r y p lbrc rbrc ent
@cec e i a o - k t n s h apo bksl
@lsen z x c v ; g d m j b @jrobsl @rssl
lctl lmet lalt @muhen @sands @henkan kana ralt menu rctl
)
;; ========================================
;; 数字・記号レイヤー(無変換キー長押し時)
;; ========================================
(deflayer numbers
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 S-9 S-0 _ _ _
_ 1 2 3 4 5 6 7 8 9 0 _ _
_ _ _ _ _ _ - eql , . / _ _
_ _ _ _ _ _ _ _ _ _
)
;; ========================================
;; 矢印キーレイヤー(変換キー長押し時)
;; ========================================
(deflayer arrows
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ home pgdn pgup end _ _ _ _
_ _ _ _ _ _ left down up rght _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
)
Deskflow(ソフトウェアKVM)という選択肢
Deskflowは、Macのキーボード入力をWindowsに転送する「ソフトウェアKVM」です。
私はMacをサーバー、Windowsをクライアントとしてマウスやキーボードのイベントを投げています。
ここでは、KVMとは「Keyboard, Video, Mouse」のことです
メリットは以下の通りです。
- Windows側で設定が不要
- Mac側のKarabiner設定がそのまま使える
私は基本的にMacをずっと起動しているので、この運用で十分でした。マウスやクリップボードも共有できるため、非常に便利です。
以前はLogi Option+を使ってソフトウェアKVM体験を享受していましたが、Deskflowのほうが何倍も良かったです。
具体的には、Logi Option+は切り替え時にラグが酷かったり、ブロートウェア化していて不要な機能ばかりだったので、この機会に乗り換えられてよかったです。
所感
キーボードカスタマイズを始めて3ヶ月が経ちましたが、とても満足しています。特に手の移動量やストレッチが減ったため、疲労が軽減されたことが何より嬉しいです。
いちいちBackspaceやEscや数字キーや矢印キーに指を伸ばしていたのが馬鹿らしいです。
カスタマイズは個人の好みによるところが大きいです。この記事の設定を参考に、ぜひ自分に合ったカスタマイズを見つけてください。
まとめ
- Karabiner-ElementsのComplex Modificationsを使えば、レイヤー機能や同時押しカスタマイズが実装できる
- 英数キーやかなキーを修飾キーとして活用すると、レイヤ分けが簡単
- 修飾キーの単押しカスタマイズは、キーボードの利用効率を大幅に向上させる
- 段階的に導入し、自分好みにカスタマイズすると日々が楽しくなる
- WindowsではDeskflowを使うことで、Mac側の設定をそのまま活用できる
