PHY: スイッチの品種を持たず、部品グループのラベルだけ残す

フットプリントの選択はPCB設計ツール側の仕事で、Beyond KLEはその手前までを扱う。
前の決定で品種を持つ根拠にした「3pinの明示」はKiCadに渡す情報の話だったため、
端子配置とソケット方式を落とし、解釈しない部品グループのラベルと向きだけを残す。
キーごとの検出方式はELCが持つ(2端子前提ではHEの配線を組めないため)。

未知の端子配置の問い(P-9)は、品種を持たなくなったので消滅。

Journal: journal/2026-09-20-switch-terminal-reversal.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RCUFZ7vmSqQyGAPUFNWoiz
This commit is contained in:
2026-09-20 09:26:44 +09:00
co-authored by Claude Opus 5
parent 1e22853218
commit bbea89798d
2 changed files with 72 additions and 27 deletions
+20 -27
View File
@@ -49,24 +49,24 @@ KLE JSONやPCB向けの出力は、階層を畳んで絶対座標に変換した
ISO Enterのように長方形でないキーは、サイズに2つ目の矩形(x2, y2, w2, h2)を加えて表す。
2つ目の矩形の位置は、キーのローカル原点からの相対値とする。
### スイッチの端子配置
### 部品グループとスイッチの向き
キーは端子配置(terminal)・ソケット方式(socket)・スイッチの向き(orientation)を持つ。
スイッチのブランドは持たない。同じボードに対して利用者が好きなスイッチを選べるため、ブランドはボード設計の情報ではない。
PHYはスイッチの品種(MX-3pin、Choc V1 など)もソケット方式も持たない。
どのフットプリントを使うかはPCB設計ツール側の選択であり、Beyond KLEはその手前までを扱う。
- 端子配置は、穴・パッドの数・サイズ・位置が同一のスイッチを1つにまとめた識別子(MX-3pin、MX-5pin、Choc V1 など)。スイッチ側の足の配置を表す
- ソケット方式は直付けかホットスワップソケットか。端子配置とは独立した軸
- スイッチの向きは0/90/180/270の4方向。キーのローカル座標系に対する値で、既定は0。90度と270度は別物として扱う
- 3つの値はファイル単位の既定値を持ち、キーごとに上書きできる。一部のキーだけ別のスイッチを使うキーボードがあるため
キーが持つのは次の2つ。
端子配置は階層を持たない平坦な識別子とする。低背かどうかのような分類は、端子配置の定義表に属性列として持つ。
- 部品グループ(partGroup): 同じ部品を使うキーをまとめるラベル。省略可
- スイッチの向き(orientation): 0/90/180/270の4方向。キーのローカル座標系に対する値で、既定は0。90度と270度は別物として扱う
端子配置は電気的インターフェース(2端子接点 / アナログ / 光学)も決めるため、ELCレイヤーはスイッチ種別を別に持たない。
部品グループの中身はBeyond KLEが解釈しない。穴・パッドの配置も、低背かどうかも持たない。
グループごとの実フットプリントはPCB出力時に割り当てる。
不均一な構成で「どのキーが同じ部品か」という設計者の意図だけを保存するために持つ。
実際のPCBフットプリントは、端子配置・ソケット方式・向きの積として出力時に決まる。
端子配置の識別子から実フットプリントへの対応表はPHYではなくPCB出力の設定に置く。
フットプリント名はライブラリ依存で、既知の端子配置でも出力時の対応づけが要るため。
未知の端子配置はユーザー定義の識別子として持ち、対応表が未登録なだけとして扱う。
スイッチのブランドも持たない。同じボードに対して利用者が好きなスイッチを選べるため、ボード設計の情報ではない。
キーごとの検出方式(接点マトリクス / アナログ / 光学)はELCが持ち、PHYは持たない。
ホールセンサのように端子数も配線トポロジも接点スイッチと異なるものがあり、これは電気的な性質のため。
### デカールとゴースト
@@ -97,7 +97,7 @@ ISO Enterのように長方形でないキーは、サイズに2つ目の矩形(
各ノードは親から見た変換を持つ。キーとクラスターを混在させた木構造として保持する。
`phase1-json-schema.md` のPHYスキーマは、この節の Key 型(x2〜h2, decal, ghost, labels, switchOffset, terminal, socket, orientation)にまだ追従していない。
`phase1-json-schema.md` のPHYスキーマは、この節の Key 型(x2〜h2, decal, ghost, labels, switchOffset, partGroup, orientation)にまだ追従していない。
```ts
type Transform = {
@@ -121,9 +121,8 @@ type Key = {
ghost?: boolean,
labels?: string[], // 参考情報
switchOffset?: { x: number, y: number }, // (w, h) 矩形の中心から。省略時は0
terminal?: string, // 端子配置の識別子。省略時はファイル単位の既定値
socket?: 'solder' | 'socket', // 省略時はファイル単位の既定値
orientation?: 0 | 90 | 180 | 270 // キーのローカル座標系。省略時は0
partGroup?: string, // 同じ部品を使うキーをまとめるラベル。中身は解釈しない
orientation?: 0 | 90 | 180 | 270 // スイッチの向き。キーのローカル座標系。省略時は0
}
type Cluster = {
transform: Transform,
@@ -183,7 +182,7 @@ const kleData = (ConfigObject | KeyLabel)[][]
- 回転角度は正規化せずそのまま出力する。KLEのデータは任意の角度を受け付け、15度刻みはKLEのUI上の操作単位にすぎない
- rx, ry はPHYに持たないので、出力時に選ぶ
- ユニットサイズ(mm)、ビジュアルオフセット、クラスター構造はKLE JSONに出力されない
- 端子配置・ソケット方式・スイッチの向きはKLE JSONに出力しない。sm, sb, st には取り込み時に保持した値をそのまま書き戻す
- 部品グループ・スイッチの向きはKLE JSONに出力しない。sm, sb, st には取り込み時に保持した値をそのまま書き戻す
- KLEの `p` はキーキャップのプロファイル名(SA、DCSなど)であり、PHYのプロファイルとは対応させない
### KLE JSONの取り込み
@@ -200,7 +199,7 @@ KLEの rx, ry, r はキーの絶対配置 (x, y, rotation) に変換して取り
見た目の属性(c, t, p, a, f, f2, fa, l, n)は、KLE JSONへ書き戻せるように保持する。どの層で持つかは決まっていない。
KLEの sm, sb, st(ファイル単位では switchMount, switchBrand, switchType)も同様に、不透明なまま保持して書き戻す。
PHYの端子配置とは対応させない。st はベンダー品番であり、穴・パッドの配置が決まらないため。
Beyond KLEはスイッチの品種を持たないため、対応づける先がない。
## 検討済み・非採用
@@ -208,7 +207,7 @@ PHYの端子配置とは対応させない。st はベンダー品番であり
- KLE JSONへの識別・構造情報の埋め込み(labelのID、`_beyondkle` メタデータ、ゴーストキー) (journal/2026-09-18-kle-roundtrip.md)
- KLEのデカール・ゴースト・見た目属性を取り込み時に捨てる (journal/2026-09-19-kle-key-attributes.md)
- スイッチのブランドをPHYで持つ (journal/2026-09-20-switch-terminal.md)
- 端子配置をPCBに開ける穴の配置として定義する (journal/2026-09-20-switch-terminal.md)
- スイッチの品種・ソケット方式をPHYで持つ (journal/2026-09-20-switch-terminal-reversal.md)
## 未確認事項
@@ -243,14 +242,8 @@ PHYの端子配置とは対応させない。st はベンダー品番であり
- 現状の認識: どのラベルがMAPに適用できるかは、おそらく機械的には判断できない。自動で適用してユーザーが不要なものを落とす方式も考えられる
- 格上げ条件: 適用するか、する場合は自動適用とユーザーによる取捨の流れをユーザーが決める
### P-9 未知の端子配置に対する編集画面の表示
- 位置づけ: 本文「未知の端子配置はユーザー定義の識別子として持つ」の未解決部分
- 現状の認識: 識別子だけでは穴・パッドの配置が分からないため、プレート切り欠きの描画やスイッチ位置の検証ができない。最低限の形状情報を持たせるかは未定
- 格上げ条件: 編集画面でスイッチ形状を使う機能を洗い出し、未知の端子配置に何を持たせれば足りるかを決める
### P-10 LEDを独立したノードとして持つか
- 位置づけ: 未解決の問い。LED用の穴をどう表すか
- 現状の認識: 端子配置のオプションとして持つ案もあるが、LED専用ノードが要る可能性がある。詳細は未検討
- 現状の認識: LEDの配置は設計者が決め、色や実装するかは利用者が選ぶ。位置と向き(表裏を含む)を持つ要素なのでPHYに入りそうだが、独立ノードにするかは未検討
- 格上げ条件: LEDの配置がスイッチに従属するか独立するかをユーザーが決め、ノードにするかを決める