MacBook は JIS 配列だけど、外付けキーボードは US 配列を使いたい。
そんなとき、記号キーがことごとくズレて困った経験はないでしょうか。
この記事では、US配列の Cornix LP を JIS 設定の MacBook でキーキャップの刻印通りに打てるようにする Karabiner-Elements の設定を紹介します。
他の US 配列キーボードでも vendor_id / product_id を変えるだけで応用できます。
💡 この記事は Cornix LP を実機で運用しながら検証した設定です。
他の US 配列キーボードを使っている方も、最後の「応用」セクションで自分の機材に置き換えられます。
そもそも何がズレるのか
MacBook の「キーボードの種類」が JIS になっていると、US 配列キーボードを繋いでも macOS が JIS として解釈します。
その結果、こんなズレが発生します。
Shift+数字キーのズレ
| 打ちたい文字 | 押すキー | 実際に出る文字 |
|---|---|---|
@ | Shift+2 | " |
^ | Shift+6 | & |
& | Shift+7 | ' |
* | Shift+8 | ( |
( | Shift+9 | ) |
) | Shift+0 | (何も出ない) |
記号キーのズレ
| 打ちたい文字 | 押すキー | 実際に出る文字 |
|---|---|---|
= | = キー | ^ |
+ | Shift+= | ~ |
_ | Shift+- | = |
[ / { | [ / Shift+[ | @ / ` |
] / } | ] / Shift+] | [ / { |
\ / \| | \ / Shift+\ | ] / } |
' | ‘ キー | : |
" | Shift+’ | * |
: | Shift+; | + |
ほとんどの記号が「1つずつズレている」のが分かりますね。
解決方法の全体像
Karabiner-Elements の2つの機能を組み合わせます。
| 機能 | 用途 | 対象キー |
|---|---|---|
| simple_modifications | キーコードの単純置換(Shift有無に関わらず一括変換) | [ ] \ ` |
| complex_modifications | 条件付きの高度な変換(Shift時と非Shift時で別々に変換) | 数字行、= ' ; |
どちらも device_if 条件で特定のキーボードにだけ適用するので、MacBook 内蔵キーボードには影響しません。
準備:vendor_id と product_id を調べる
Karabiner-Elements の設定画面 → Devices タブで、対象キーボードの vendor_id と product_id を確認します。
Cornix LP の場合:
- vendor_id:
57624 - product_id:
1
他のキーボードを使う場合は、この値を自分のデバイスに置き換えてください。
設定1:simple_modifications(デバイス固有)
ブラケット [] とバックスラッシュ \ の領域は、Shift の有無で「ズレ方が同じ」なので、
キーコードを丸ごと差し替えるだけで解決します。
Karabiner-Elements の Devices → 対象キーボードの Simple Modifications に以下を追加します。
| From key | To key | 効果 |
|---|---|---|
open_bracket | close_bracket | [ と { が正しく入力される |
close_bracket | backslash | ] と } が正しく入力される |
backslash | international3 | \ と \| が正しく入力される |
grave_accent_and_tilde | japanese_eisuu | ` キーを英数キーとして使う(お好みで) |
`(バッククォート)キーを英数切替ではなく本来の`/~として使いたい場合は、4行目を省略してください。
設定2:complex_modifications(JSON直接編集)
数字行の Shift 記号や = ' ; は、Shift 時と非 Shift 時で異なる変換が必要なため、JSON を直接編集して complex_modifications に追加します。
編集するファイル
~/.config/karabiner/karabiner.json
追加するルール
profiles[0].complex_modifications.rules 配列の末尾に、以下のルールオブジェクトを追加します。
重要:
vendor_idとproduct_idは自分のキーボードの値に置き換えてください。
{
"description": "Cornix LP (US配列): JIS環境でUS記号を正しく入力",
"manipulators": [
{
"type": "basic",
"description": "Shift+2 → @",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "2", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "open_bracket" }]
},
{
"type": "basic",
"description": "Shift+6 → ^",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "6", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "equal_sign" }]
},
{
"type": "basic",
"description": "Shift+7 → &",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "7", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "6", "modifiers": ["shift"] }]
},
{
"type": "basic",
"description": "Shift+8 → *",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "8", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "quote", "modifiers": ["shift"] }]
},
{
"type": "basic",
"description": "Shift+9 → (",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "9", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "8", "modifiers": ["shift"] }]
},
{
"type": "basic",
"description": "Shift+0 → )",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "0", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "9", "modifiers": ["shift"] }]
},
{
"type": "basic",
"description": "Shift+- → _",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "hyphen", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "international1", "modifiers": ["shift"] }]
},
{
"type": "basic",
"description": "Shift+= → +",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "equal_sign", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "semicolon", "modifiers": ["shift"] }]
},
{
"type": "basic",
"description": "= → =",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "equal_sign", "modifiers": { "optional": ["any"] } },
"to": [{ "key_code": "hyphen", "modifiers": ["shift"] }]
},
{
"type": "basic",
"description": "Shift+; → :",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "semicolon", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "quote" }]
},
{
"type": "basic",
"description": "Shift+' → \"",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "quote", "modifiers": { "mandatory": ["shift"], "optional": ["any"] } },
"to": [{ "key_code": "2", "modifiers": ["shift"] }]
},
{
"type": "basic",
"description": "' → '",
"conditions": [{ "type": "device_if", "identifiers": [{ "vendor_id": 57624, "product_id": 1 }] }],
"from": { "key_code": "quote", "modifiers": { "optional": ["any"] } },
"to": [{ "key_code": "7", "modifiers": ["shift"] }]
}
]
}
設定のポイント・ハマりどころ
1. vendor_id と product_id を間違えない
device_if 条件で指定する vendor_id と product_id を逆に書くと、ルールが一切発動しません。
Karabiner-Elements の Devices タブで正確な値を確認しましょう。
2. manipulators の順序が重要
同じキーに対して「Shift あり」と「Shift なし」の両方のルールがある場合(= キーや ' キー)、
必ず Shift ありのルールを先に書いてください。
Karabiner は配列の先頭から順にチェックし、最初にマッチしたルールを適用します。
Shift なしのルールに optional: ["any"] を指定していると Shift 押下時にもマッチしてしまうため、Shift ありルールが先にないと正しく動作しません。
✅ 正しい順序 ❌ 間違った順序
Shift+= → + = → = ← Shift+= もここでマッチしてしまう
= → = Shift+= → + ← 到達しない
3. simple_modifications はチェーンしない
以下のように設定した場合:
open_bracket → close_bracket
close_bracket → backslash
物理 open_bracket が close_bracket に変換された後、さらに backslash に変換される……ということはありません。
各ルールは元の物理キーコードにのみ適用されます。安心して設定できます。
4. Cmd+記号 も正しく動く
optional: ["any"] を指定しているため、Cmd や Ctrl との組み合わせも正しく変換されます。
例えば Cmd+=(ズームイン)も期待通りに動作します。
動作確認チェックリスト
設定後、以下の文字が正しく入力できるか確認してください。
テスト文字列(コピーせずに手入力してください):
@ # $ % ^ & * ( ) _ +
[ ] { } \ |
= - ' " : ;
Shift+2=@ Shift+6=^ Shift+7=& Shift+8=* Shift+9=( Shift+0=)
すべて刻印通りに入力できれば成功です。
応用:他の US 配列キーボードに使う
この設定は Cornix LP 固有の機能には依存していないため、他の US 配列キーボードでもそのまま使えます。
変更が必要なのは vendor_id と product_id の2箇所だけです。
- Karabiner-Elements → Devices で対象キーボードの ID を確認
- JSON 内の
vendor_id: 57624とproduct_id: 1を置換
まとめ
| 設定種別 | 対象 | ルール数 |
|---|---|---|
| simple_modifications | [] \ ` | 4個 |
| complex_modifications | 数字行Shift、= ' ; | 12個 |
合計16個のルールで、US 配列キーボードの記号キーを JIS 環境でも刻印通りに入力できるようになります。
MacBook 内蔵キーボードには一切影響しないので、外付けを抜けばいつも通りの JIS 入力に戻ります。
こんなときは
- 設定が反映されない → Karabiner-Elements を再起動。または
karabiner_console_user_serverを再起動(メニューバー → Restart Karabiner-Elements) - 一部のキーだけ動かない → manipulators の順序を確認(Shift あり → Shift なしの順番)
- MacBook 内蔵キーボードまで影響している →
device_if条件のvendor_id/product_idを再確認。Devices タブの値と一致しているか - 再起動後にルールが消える →
karabiner.jsonの編集が JSON として不正だと Karabiner が初期状態に戻すことがある。バックアップを取ってから編集する


コメント