# KLE互換ドキュメント2本の廃止と書き戻し ## 結論 - kle-compatibility.md / kle-compatibility-analysis.md を作業ツリーから削除した - 原本: `git show 1a9a2a0:kle-compatibility.md` / `git show 1a9a2a0:kle-compatibility-analysis.md` - 経緯: compatibility は初期PHYドキュメントをもとに検討しながら更新したもの。analysis はそれをさらに分析したもの(ユーザー談) - PHYレイヤー.md に書き戻したもの(KLE本家ソースで裏取り済み) - ConfigObject の修正: `ra` → `r`、`fa` `sm` `sb` `st` を追加 - 回転角度は正規化せず出力できる(15度はUIの操作単位) - ユニットサイズ・ビジュアルオフセット・クラスター構造はKLEに出力されない - KLEの `p` はキーキャップのプロファイル名で、PHYのプロファイルとは別物 - KLEは保存時にキーを並べ替えるので、配列順は照合に使えない - P-1 に行まとめの手がかりを追記 - 新たに本文に加えた制約: 過去のKLE JSONはPHYデータなしでも読めなければならない(ユーザー要件。変換は可) - 未確認事項として立てたもの: P-3 クラスター自動推定(未決。代わりに欲しい機能を思い出すきっかけ)、P-4 KLE固有の形状・属性の受け止め先 ## 各記述の行き先 | 元の記述 | 行き先 | |---|---| | 階層を畳む flattenElements | 既にPHYにある(階層を畳んで絶対座標に変換) | | ID保持方法の比較、`_beyondkle` ハイブリッド、ID復元 | 捨てた。2026-09-18-kle-roundtrip で不採用 | | 往復で構造が一致することを保証するテスト | 捨てた。「構造の復元は保証しない」と矛盾 | | ConversionSettings, バージョン管理メタデータ | 捨てた。埋め込み前提 | | autoDetectClusters | PHY 未確認事項 P-3 | | CLI コマンド例 (export/import) | 捨てた。CLIの形は実装計画側で決める | | KLE Key クラスのプロパティ一覧、互換性マトリックス | 事実部分のみ ConfigObject とKLE出力の制約として書き戻し | | 「プロファイル設定 ↔ p が1:1対応」 | 誤り。KLEの p はキャップ形状名 | | KLE UI改造の項目・難易度・80/15/5%・フェーズ分け | 捨てた。KLE改造か自作かを検討するときは原本を git show で読む | | ゴーストキーによる階層クラスター | 捨てた。2026-09-18-kle-roundtrip で不採用 | | 15度回転制約の分析 | 結論のみ書き戻し。analysis 中の kb.js 引用コードは実物と一致(kb.js:817) | ## 検証ログ ijprest/keyboard-layout-editor master (2026-09-18 取得) - serial.js:92-100 sortKeys。角度((a+360)%360) → rotation_x → rotation_y → y → x の順に並べ替える - serial.js:187 serialize の中で sortKeys を呼ぶ。保存のたびに並べ替わる - serial.js:193-198 行が切り替わる条件は y の変化か (r, rx, ry) の変化 - serial.js:219-269 出力されるプロパティは r rx ry y x c t g p sm sb st a f f2 fa w h w2 h2 x2 y2 n l d で決め打ち。未知のプロパティは落ちる - 2026-09-18-kle-roundtrip で「未確認」とした「シリアライザは既知プロパティしか書かない」はこれで確定 - serial.js:105 defaultKeyProps で profile は "cap appearance" に分類されている - serial.js:176-178 メタデータは keyboard.meta の全キーをループで書き出す。未知のメタデータキーも保存時に残る(今回の決定では使わない) - kb.js:78 rotateStep = 15。kb.js:817 プロパティ入力は ±180 にクランプするだけ。kb.js:1119 キー操作による回転は Math.round で整数度に丸める - kb.css:94 `.ghosted { opacity: 0.5; }`。ゴーストキーは半透明で表示される。analysis の「見た目に影響しない」は誤り