Files
Beyond-KLE/journal/2026-09-18-kle-compat-docs-retire.md
ewdernaandClaude Opus 5 bb1108763a KLE互換ドキュメント2本を廃止し、裏取りした事実をPHYに書き戻す
kle-compatibility.md / kle-compatibility-analysis.md は埋め込み前提の
設計で、KLE往復の決定と矛盾していた。KLE本家ソースで確認できた事実だけを
PHYレイヤー.md に書き戻し、2本は削除した。

- ConfigObject の回転角度キーを ra から r に修正し、fa sm sb st を追加
- KLE出力で失われる情報、KLEの p がPHYのプロファイルと別物であることを明記
- KLEは保存時にキーを並べ替えるため、配列順は照合に使わない
- 過去のKLE JSONはPHYデータなしでも読めなければならない、という制約を追加
- 未確認事項に P-3 クラスター自動推定、P-4 KLE固有の形状・属性の受け止め先を追加

Journal: journal/2026-09-18-kle-compat-docs-retire.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 21:18:49 +09:00

3.8 KiB

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 の「見た目に影響しない」は誤り