idx: 全バリアントを1つのorderに並べ、出力時に取捨して番号を詰める
排他キーも別々の要素として並べる。出力はバリアントを選択した構成を単位とし、
対象外のキーを除いた並びの位置をそのままキー番号にする。同じ配線の排他キーは
選択後に同時には残らないため、番号を共有させる必要がない。
保存したorderは選択で書き換えず、番号の互換性は出力レイアウトごとに扱う。
6d0eba9 で「IDXは番号を共有できる」と書いたが、共有をやめる形に変える。
コミュニティレイアウトの並びを取捨で得られるかは、この方式では未検証のため
IDXのP-1として残す。
Journal: journal/2026-09-22-idx-variant-output.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DKW58HEg8zAQoLrkWByPfD
This commit is contained in:
+17
-22
@@ -424,8 +424,9 @@ ELC・IDX・MAPはどれもPHYを参照する。ELCはIDXを参照せず、MAP
|
||||
|
||||
各フィールドの意味は `IDXレイヤー.md` を正とする。
|
||||
|
||||
番号を振るキーの並びだけを持つ。並びの位置がキー番号になるため、欠番・重複・番号の飛びは
|
||||
構造として起こらない。
|
||||
全バリアントの対象キーIDを、重複なく1つの並びに持つ。同じ配線を使う排他キーも別々の要素とする。
|
||||
出力時は選択したバリアントで使わないキーを除き、残った並びの位置を0から連続するキー番号とする。
|
||||
保存した `order` は変更しない。
|
||||
|
||||
### 基本構造
|
||||
|
||||
@@ -434,7 +435,7 @@ ELC・IDX・MAPはどれもPHYを参照する。ELCはIDXを参照せず、MAP
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://beyond-kle.org/schemas/idx-layer.json",
|
||||
"title": "IDX Layer - Key Identification",
|
||||
"description": "Ordered list of PHY keys; the position in the list is the key number",
|
||||
"description": "Ordered PHY key IDs across all variants. Output key numbers are contiguous positions after filtering by variant selection",
|
||||
"type": "object",
|
||||
"required": ["version", "phyReference", "order"],
|
||||
"properties": {
|
||||
@@ -450,20 +451,10 @@ ELC・IDX・MAPはどれもPHYを参照する。ELCはIDXを参照せず、MAP
|
||||
"order": {
|
||||
"type": "array",
|
||||
"uniqueItems": true,
|
||||
"description": "Each PHY key has its own entry, including mutually exclusive keys wired to the same terminals. Variant selection does not modify this list",
|
||||
"items": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"description": "Reference to PHY layer key ID"
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"minItems": 2,
|
||||
"uniqueItems": true,
|
||||
"items": { "type": "string" },
|
||||
"description": "Mutually exclusive variant keys sharing this key number. They must be wired to the same terminals in ELC"
|
||||
}
|
||||
]
|
||||
"type": "string",
|
||||
"description": "Reference to PHY layer key ID"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -622,7 +613,8 @@ ELC・IDX・MAPはどれもPHYを参照する。ELCはIDXを参照せず、MAP
|
||||
## 4. MAPレイヤー JSON Schema
|
||||
|
||||
キーの参照にはPHYのキーIDを使う。キー番号は参照しない。
|
||||
配列としての並べ替えは、ファームウェア出力時にIDXの並び順で行う。
|
||||
配列としての並べ替えは、ファームウェア出力時にバリアント選択後のIDXの並び順で行う。
|
||||
キー番号と接続先の対応表も同じ並びで生成し、MAPの保存データは変更しない。
|
||||
|
||||
### 基本構造
|
||||
|
||||
@@ -685,8 +677,8 @@ ELC・IDX・MAPはどれもPHYを参照する。ELCはIDXを参照せず、MAP
|
||||
|
||||
### PHY → IDX変換
|
||||
|
||||
1. PHYレイヤーからキーのリストを取得
|
||||
2. 番号を振るキーを選び、並び順を決める
|
||||
1. PHYレイヤーから全バリアントのキーのリストを取得
|
||||
2. 番号を振る対象キーを1つの `order` に重複なく並べる。同じ配線の排他キーも別々の要素にする
|
||||
|
||||
### PHY → ELC変換
|
||||
|
||||
@@ -696,9 +688,12 @@ ELC・IDX・MAPはどれもPHYを参照する。ELCはIDXを参照せず、MAP
|
||||
|
||||
### IDX + ELC + MAP → ファームウェア出力
|
||||
|
||||
1. ELCの配線から、ターゲットが要求する row / col を割り当て
|
||||
2. IDXの並び順に従って、MAPのキーコードを配列へ並べ替え
|
||||
3. VIA/QMK形式への出力
|
||||
1. PHYのVariantGroupごとにバリアントを選び、共通キーと、祖先を含めて選択されたバリアントのキーを特定
|
||||
2. IDXの `order` から対象外のキーを除き、残った順序のまま出力用のキー番号を0から連続して割り当て
|
||||
3. ELCの配線から、ターゲットが要求する row / col を割り当て、手順2の並びでキー番号との対応表を生成
|
||||
4. 同じ並びでMAPのキーコードを配列へ並べ替え、VIA/QMK形式へ出力
|
||||
|
||||
保存したPHY・IDX・ELC・MAPは書き換えない。ELCのLEDチェーンの並び・番号は、このキーの取捨では変わらない。
|
||||
|
||||
## 次のステップ
|
||||
|
||||
|
||||
Reference in New Issue
Block a user