layers: レイヤー構造を確定した仕様に追従させる
ELCがPHYのノードIDを直接参照すると決めたので、IDX→ELCの直列フローを PHY→ELC / PHY→IDX の並列に改めた。row/colとLED番号をIDXの出力から外し、 KLEをビュワーとして扱う記述に合わせた。ツール名2つが捨てたモデルを 含んでいたため改名。アナログ値の解釈を持つ層が未定なのでP-1に立てた。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+45
-29
@@ -11,30 +11,38 @@
|
||||
### 設計思想
|
||||
|
||||
- 「Better KLE」ではなく「Beyond KLE」: UIではなくデータモデルとワークフロー全体の再設計
|
||||
- UNIX哲想の適用: 小さな役割のツールがそれぞれしっかり機能する
|
||||
- UNIX哲学の適用: 小さな役割のツールがそれぞれしっかり機能する
|
||||
- 統合環境(IDE)の提供: 独立したツール群をオーケストレート
|
||||
|
||||
## レイヤー構造
|
||||
|
||||
レイヤーは一列に積み上がらない。ELCとIDXはそれぞれ独立にPHYを参照する。
|
||||
ELCはIDXを参照せず、IDXもELCを参照しない。
|
||||
他レイヤーからキーや部品を指す参照には、PHYのノードIDを使う。
|
||||
|
||||
### 1. PHYレイヤー (物理配置)
|
||||
|
||||
- **役割**: キーの物理的な位置、サイズ、回転
|
||||
- **役割**: キーと部品の物理的な位置、サイズ、回転
|
||||
- **対応ツール**: PCBエディタ、KLE
|
||||
- **出力**: 座標とキーサイズの配列
|
||||
- **出力**: 相対座標の木(キー・クラスター・部品ノード)。各ノードはIDを持つ
|
||||
|
||||
### 2. ELCレイヤー (電気配線)
|
||||
|
||||
- **役割**: マイコンのpinと各キーの対応
|
||||
- **役割**: ピン提供者が提供する論理ピンと、各キーの端子・LEDの対応
|
||||
- **入力**: PHYのノードID
|
||||
- **対応ツール**: 回路図エディタ、ファームウェア
|
||||
- **出力**: ピン配列定義、マトリックス配線情報
|
||||
- **備考**: charlieplexingなど非標準的な実装にも対応
|
||||
- **出力**: 提供者定義、キーごとの端子の接続先、LEDチェーン
|
||||
- **備考**: 配線方式(マトリクス / direct / charlieplexing)を区分として選ばせず、端子の接続先の組み合わせとして表すため、非標準的な実装も同じ形で書ける
|
||||
- **備考**: row / col は正本に持たない。QMKなどが要求する形は出力時に割り当てる
|
||||
|
||||
### 3. IDXレイヤー (キー識別)
|
||||
|
||||
- **役割**: 物理位置と"キー番号"の対応付け
|
||||
- **役割**: PHYのキーと"キー番号"の対応付け
|
||||
- **入力**: PHYのキーID
|
||||
- **重要性**: 物理世界と論理世界を繋ぐ最も重要な抽象化層
|
||||
- **出力**: `{x, y, matrix:[row,col], label}[]`
|
||||
- **出力**: キーIDとキー番号の対応
|
||||
- **備考**: 現状のエコシステムで最も欠けている層
|
||||
- **備考**: マトリックス座標とLEDの識別番号はIDXが持たない(どちらも配線で決まるためELCが持つ)
|
||||
|
||||
### 4. MAPレイヤー (キーマップ)
|
||||
|
||||
@@ -55,26 +63,25 @@
|
||||
#### PHY Editor
|
||||
|
||||
- 物理配置の視覚的編集
|
||||
- KLE互換フォーマット対応
|
||||
- KLE JSONの読み込み・書き出し
|
||||
- 出力: PHY JSON
|
||||
|
||||
#### Matrix Mapper
|
||||
#### Key Indexer
|
||||
|
||||
- PHY Editorの出力を入力
|
||||
- キーにrow/colを割り当て
|
||||
- 視覚的にマトリックス配線を確認
|
||||
- PHY JSONを入力
|
||||
- キーにキー番号を割り当て
|
||||
- 出力: IDX JSON
|
||||
|
||||
#### Pin Configurator
|
||||
#### Wiring Editor
|
||||
|
||||
- マトリックス定義を入力
|
||||
- マイコンのピン配置を指定
|
||||
- 配線図を出力
|
||||
- PHY JSONを入力
|
||||
- ピン提供者(マイコン、マルチプレクサ等)を置き、各キーの端子の接続先を指定
|
||||
- 視覚的に配線を確認
|
||||
- 出力: ELC JSON
|
||||
|
||||
#### Keymap Designer
|
||||
|
||||
- キー識別子リストを入力
|
||||
- キー番号のリストを入力
|
||||
- レイヤー別キーコード割り当て
|
||||
- VIA/Remapとの互換性
|
||||
- 出力: MAP JSON
|
||||
@@ -82,6 +89,7 @@
|
||||
#### Firmware Generator
|
||||
|
||||
- 全レイヤーの情報を統合
|
||||
- row / col など、ターゲットが要求する派生情報をここで割り当てる
|
||||
- QMK/VIA/KMK等へ変換
|
||||
- 出力: ターゲット固有の設定ファイル
|
||||
|
||||
@@ -97,17 +105,17 @@
|
||||
### レイヤー間インターフェース
|
||||
|
||||
```txt
|
||||
PHY → IDX
|
||||
Input: KLE JSON (or compatible)
|
||||
Output: Augmented layout (coordinates + key IDs)
|
||||
PHY → ELC
|
||||
Input: ノードID + 配置
|
||||
Output: 提供者定義 + 端子の接続先 + LEDチェーン
|
||||
|
||||
IDX → ELC
|
||||
Input: Key ID list
|
||||
Output: Matrix definition + Pin mapping
|
||||
PHY → IDX
|
||||
Input: キーID + 配置
|
||||
Output: キーIDとキー番号の対応
|
||||
|
||||
IDX → MAP
|
||||
Input: Key ID list
|
||||
Output: Keymap arrays
|
||||
Input: キー番号のリスト
|
||||
Output: レイヤー別キーコード配列
|
||||
|
||||
All → Firmware
|
||||
Output: QMK keyboard.json / VIA JSON / KMK .py
|
||||
@@ -124,7 +132,7 @@ All → Firmware
|
||||
### Phase 1: プロトコル策定
|
||||
|
||||
- JSON Schemaでフォーマット定義
|
||||
- TypeScriptでリファレンス実装
|
||||
- リファレンス実装(言語・構成は `implementation-plan.md` で選定)
|
||||
- CLIツールとして動作確認
|
||||
|
||||
### Phase 2: 個別ツール開発
|
||||
@@ -141,7 +149,7 @@ All → Firmware
|
||||
|
||||
## 既存ツールとの関係
|
||||
|
||||
- **KLE**: PHY Editorの一実装、インポート対応
|
||||
- **KLE**: PHYデータを表示できる既存のビュワー。KLE JSONの読み書きで連携する
|
||||
- **VIA/Remap**: MAP Layerクライアントとして連携
|
||||
- **QMK Configurator**: Firmware Generatorのターゲット
|
||||
|
||||
@@ -155,7 +163,7 @@ All → Firmware
|
||||
|
||||
### 互換性
|
||||
|
||||
- 既存KLE JSONの完全サポート
|
||||
- 既存KLE JSONの読み込み(PHYデータがなくても読める)
|
||||
- 段階的移行パスの提供
|
||||
- レガシーツールとの共存
|
||||
|
||||
@@ -165,3 +173,11 @@ All → Firmware
|
||||
2. GitHubでRFCリポジトリ立ち上げ
|
||||
3. 小規模コミュニティでフィードバック収集
|
||||
4. リファレンス実装の開発
|
||||
|
||||
## 未確認事項
|
||||
|
||||
### P-1 アナログ値の解釈をどの層が持つか
|
||||
|
||||
- 位置づけ: 未解決の問い。ELCは配線だけを持つと決めたため、生値から押下深さを出す変換の置き場が空いている
|
||||
- 現状の認識: センサの品種と出力特性はPCB設計ツール側、キャリブレーションは実機ごとの実測値で設計データではない、とまでは決まっている。残りをMAPに寄せるか、別の層を立てるかは未定
|
||||
- 格上げ条件: アナログ入力のキーボードを1つ通しで設計し、変換に必要な情報と、それを置く層をユーザーが決める
|
||||
|
||||
Reference in New Issue
Block a user