IDX: キー番号の正本としてIDXレイヤーを確定し、MAPの参照をPHYへ移す
キー番号はPHYの幾何からもELCの配線からも導出できない決めごとなので、IDXが正本を持つ。 公開した基板のキー番号は他人のキーマップが依存する公開インターフェースであり、 出力のたびに生成し直さず固定する。 「最も重要な抽象化層」「最も欠けている層」という位置づけは誤りだったので落とした。 QMKのLAYOUTマクロの引数順、ZMKのmatrix transformのmap、KMKのcoord_mappingとして 既に存在していて、形式化されていないだけである。 あわせて2点。MAPはキー番号ではなくPHYのキーIDを参照する(IDXへの挿入でMAPがずれないため)。 IDXの保存形式は order: string[] とし、ELCのLEDChain.orderと同じく並びの位置を番号とする。 phase1-json-schema.md の P-1 を解消。 Journal: journal/2026-09-21-idx-necessity.md Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+17
-13
@@ -16,8 +16,8 @@
|
||||
|
||||
## レイヤー構造
|
||||
|
||||
レイヤーは一列に積み上がらない。ELCとIDXはそれぞれ独立にPHYを参照する。
|
||||
ELCはIDXを参照せず、IDXもELCを参照しない。
|
||||
レイヤーは一列に積み上がらない。ELC・IDX・MAPはそれぞれ独立にPHYを参照する。
|
||||
ELCはIDXを参照せず、IDXもELCを参照しない。MAPもIDXを参照しない。
|
||||
他レイヤーからキーや部品を指す参照には、PHYのノードIDを使う。
|
||||
|
||||
### 1. PHYレイヤー (物理配置)
|
||||
@@ -37,18 +37,22 @@ ELCはIDXを参照せず、IDXもELCを参照しない。
|
||||
|
||||
### 3. IDXレイヤー (キー識別)
|
||||
|
||||
- **役割**: PHYのキーと"キー番号"の対応付け
|
||||
- **役割**: PHYのキーに"キー番号"を与える
|
||||
- **入力**: PHYのキーID
|
||||
- **重要性**: 物理世界と論理世界を繋ぐ最も重要な抽象化層
|
||||
- **出力**: キーIDとキー番号の対応
|
||||
- **備考**: 現状のエコシステムで最も欠けている層
|
||||
- **対応ツール**: QMKの `LAYOUT` マクロ、ZMKの matrix transform、KMKの `coord_mapping`
|
||||
- **出力**: 番号を振るキーの並び。並びの位置がキー番号
|
||||
- **備考**: キー番号はPHYの幾何からもELCの配線からも導出しない(導出すると、幾何の編集や再配線でキーマップがずれる)
|
||||
- **備考**: キー番号は公開インターフェースであり、出力のたびに生成し直さず固定する
|
||||
- **備考**: マトリックス座標とLEDの識別番号はIDXが持たない(どちらも配線で決まるためELCが持つ)
|
||||
- **備考**: 既存のエコシステムでは、この並びが `LAYOUT` マクロの引数順などとして手書きされている。欠けている層ではなく、形式化されていない層
|
||||
|
||||
### 4. MAPレイヤー (キーマップ)
|
||||
|
||||
- **役割**: キー番号とキーコードの対応
|
||||
- **役割**: キーとキーコードの対応
|
||||
- **入力**: PHYのキーID
|
||||
- **対応ツール**: ファームウェア、VIA、Remap
|
||||
- **出力**: レイヤー別キーコード配列
|
||||
- **出力**: レイヤー別キーコード
|
||||
- **備考**: キーの参照にキー番号を使わない。配列としての並べ替えは、出力時にIDXの並び順で行う
|
||||
|
||||
### 5. IMEレイヤー (入力変換)
|
||||
|
||||
@@ -81,7 +85,7 @@ ELCはIDXを参照せず、IDXもELCを参照しない。
|
||||
|
||||
#### Keymap Designer
|
||||
|
||||
- キー番号のリストを入力
|
||||
- PHY JSONを入力
|
||||
- レイヤー別キーコード割り当て
|
||||
- VIA/Remapとの互換性
|
||||
- 出力: MAP JSON
|
||||
@@ -111,11 +115,11 @@ PHY → ELC
|
||||
|
||||
PHY → IDX
|
||||
Input: キーID + 配置
|
||||
Output: キーIDとキー番号の対応
|
||||
Output: 番号を振るキーIDの並び
|
||||
|
||||
IDX → MAP
|
||||
Input: キー番号のリスト
|
||||
Output: レイヤー別キーコード配列
|
||||
PHY → MAP
|
||||
Input: キーID
|
||||
Output: レイヤー別キーコード
|
||||
|
||||
All → Firmware
|
||||
Output: QMK keyboard.json / VIA JSON / KMK .py
|
||||
|
||||
Reference in New Issue
Block a user