継続行がスペース2つだと、VS Codeがインデント幅を2と自動判定する。 .vscode/settings.json でMarkdownの自動判定を切って幅4に固定し、 既存の継続行もリストの記号から4つ下げた位置に揃える。 変更したファイルに markdownlint --fix をかけた分(journalのURL囲みと空行)も含む。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VbfgHT848s3JbuFw8MKFF8
66 lines
3.9 KiB
Markdown
66 lines
3.9 KiB
Markdown
# LEDの持ち方 / 部品ノードへの一般化
|
|
|
|
## 結論
|
|
|
|
- per-key LEDは、キーが持つboolean 1つ。位置も向きも持たない
|
|
- LED専用ノードは作らない。キー以外の部品を一般の「部品ノード」として持ち、LEDはその一例
|
|
- 部品ノードは transform と partGroup のみ。orientation は持たない
|
|
- 部品グループ名の `@` 始まりは予約。エディタ上の描画にのみ使う
|
|
- チェーン順序・論理インデックス・表裏はPHYに持たない
|
|
|
|
## 案の比較
|
|
|
|
### per-key LEDの表現
|
|
|
|
| 案 | 位置 | 採否 |
|
|
| --- | --- | --- |
|
|
| キーのboolean | 持たない | ○ |
|
|
| キーに追随する自動生成ノード | ノードが座標を持つ | × 座標に自由度がない |
|
|
| ユーザーが1個ずつ置く | 持つ | × キー数ぶんの手作業 |
|
|
|
|
### 独立して置く部品
|
|
|
|
| 案 | 対象 | 採否 |
|
|
| --- | --- | --- |
|
|
| 部品ノード(汎用) | LED / OLED / エンコーダ / ネジ穴 / MCU など | ○ |
|
|
| LEDノード専用 | LEDのみ | × 次の部品で同じ議論をやり直す |
|
|
|
|
## 根拠
|
|
|
|
per-key LEDの位置はスイッチのフットプリント内で決まっている(MXならスイッチ上側の窓)。
|
|
設計者が選べる自由度がないので、座標を持たせても常に導出可能な値を二重に持つだけになる。
|
|
スイッチの品種を持たないと決めた判断と同じ論法。
|
|
向きも同様で、per-key LEDはキーの orientation に従う。よってパラメータは有無だけ。
|
|
|
|
一方、アンダーグローやインジケータは設計者が位置を決めるのでノードが要る。
|
|
ここでLED専用ノードにすると、OLED・ロータリーエンコーダ・リセットスイッチ・TRRSジャック・
|
|
MCU・ネジ穴が来たときに毎回同じ議論になる。どれも「位置と向きを持つ非キー要素」で構造が同じ。
|
|
partGroup(中身を解釈しないラベル)をそのまま流用できるので、一般化するコストがほぼない。
|
|
|
|
部品ノードが orientation を持たない理由: キーが2軸(キャップの向き = transform.rotation /
|
|
スイッチの向き = orientation)を持つのは、キャップという外皮とスイッチが独立に回せるため。
|
|
部品ノードにはその二重構造がないので transform.rotation だけで足りる。
|
|
|
|
`@` 始まりの予約: 部品グループの中身を解釈しないという原則と、描画を変えたいという要求は、
|
|
「描画にのみ使う。フットプリントの選択には使わない」で両立する。
|
|
記号始まりにすればユーザーが自由に付けた名前(`led-left` など)と絶対に衝突しない。
|
|
未知のグループ名は既定の形で描く。
|
|
|
|
## キーごとのopt-outが要る理由
|
|
|
|
一部のキーだけLEDを載せない構成として挙がった例(いずれも未検証):
|
|
|
|
- スタビライザとの干渉
|
|
- ロータリーエンコーダに置き換わる位置
|
|
- USBの電流上限に収めるためにLED数を絞る
|
|
|
|
## 捨てた案・送った先
|
|
|
|
- ファイル単位の「per-key LEDがある」フラグ: キーごとのbooleanから導出できるので存在フラグとしては不要。
|
|
既定値を与える設定としては意味があるが、ファイル単位設定の置き場は他にも要求があり別トピックへ。
|
|
今回はキーごとのbooleanのみ決め、省略時は false とする
|
|
- レイアウトによって条件付きでLEDの有無が変わる構成: ANSI/ISO Enter のようなキー自体の排他と同じ問題で、
|
|
LED固有ではない。マルチレイアウト(未導入の概念)側へ送る
|
|
- 部品の表裏をPHYが持つ: PCB設計ツールが決める情報。ただし描画の描き分けとの絡みが残るので P-12
|
|
- チェーン順序をPHYが持つ: 電気的な接続なのでELC。ただし接点マトリクスと同じ層でよいかに確信がなく P-11
|