Files
Beyond-KLE/journal/2026-09-20-elc-pin-provider.md
T
ewdernaandClaude Opus 5 5bba75d1e8 ELC: ELCレイヤーの初版。ピン提供者による配線表現
muxを「ピンを増やす装置」として抽象化し、提供者が提供する論理ピンを
キーの端子が指す形にした。直結もmux経由も同じ形になり、多段muxは
入れ子で表せる。

配線方式(マトリクス / direct / charlieplexing)は列挙せず、端子の
接続先の組み合わせとして表す。row / col は正本に含めない。

射程は配線のみとし、センサの品種・出力特性・キャリブレーションは
持たない。PCB設計の手前までというPHYの線に揃えた。

Journal: journal/2026-09-20-elc-pin-provider.md
Journal: journal/2026-09-20-elc-scope.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 20:24:56 +09:00

2.9 KiB

muxをどう表現するか / 配線方式を列挙しない

結論

muxを「ピンを増やす装置」= ピン提供者として抽象化する。 キーの端子は、提供者が提供する論理ピンを指す。直結とmux経由が同じ形になる。

配線方式(マトリクス / direct / charlieplexing)は列挙しない。端子の接続先の組み合わせとして表れる。 row / col は正本に含めず、QMK等への出力時に割り当てる派生情報にする。

案の比較

案 mux経由のキーの書き方 判定
ピン提供者 "out": "mux0.5"、mux0が select と common を宣言 採用
展開アドレス { "adc": "A0", "ch": 5 }、選択ピンはボード共通設定 多段muxで破綻する
ネットリスト 部品と結線をそのまま持つ 回路図エディタの領分。走査手順を導出できない

muxの実際

アナログmux(74HC4051=8ch / CD74HC4067=16ch)は、選択ピンで指定した1チャンネルだけを 共通ピンに導通させるアナログスイッチ。HE/光学がこれを使うのは、センサ出力がアナログで ADCピンが足りないため。

実例(Charading/qmk-he、Pro Micro): S0-S3 -> Pin2,3,4,5、共通(Z) -> A0。 ファームは選択ピンに 5 を出力して A0 をADC読みすると、チャンネル5のセンサが読める。

つまりmuxは「1本のADCピンを16本に増やす装置」。この見方がそのまま表現になる。

出典:

ピン提供者にすると付いてくるもの

  • 多段muxが入れ子で書ける。mux1.common = "mux0.3" と書くだけで専用の仕組みが要らない
  • シフトレジスタ・GPIOエキスパンダ・デマルチプレクサが同じ枠に入る。種別が違うだけ
  • 分割キーボードの右手側マイコンが、単に別の提供者になる
  • matrix.type のenumが不要になる

row / col を正本にしない理由

ELCが扱う範囲を全トポロジ(接点マトリクス / direct / charlieplexing / アナログ / 光学、 いずれもmuxを挟む場合を含む)とした時点で、row / col は普遍的な軸でなくなる。 directに行と列はなく、charlieplexingでは便宜的な表記にすぎず、アナログでは経路が (mux, チャンネル) になる。全部を一つの座標で表すと、方式ごとに意味の違う数値になる。

却下: 旧スキーマの matrix.type enum

phase1-json-schema.md のELCスキーマは standard / charlieplexing / direct の3値を持ち、 matrix.dimensions{rows, cols} を必須にしていた。アナログ・光学・ホールを受けられず、 IDX側にも matrix{row, col} があって二重になっていた。ピン提供者の形にすると両方消える。