二乗マトリクスをマトリクスの一般形とみなし、ELCのデータは変えない(キーは順序付きの組をダイオードの向きで持つ)。 倍・二乗マトリクスはエディタで区別せず両方向モードにまとめ、自動反転は既定の向きの(アノード, カソード)が使われているときに限る。 なぞる操作は方式によらず共通にし、書く端子・ピンの付け方(1本/順に割り当て)・既定の向き・両方向モードだけを切り替える。 端子aとbが同じピンのキーは方式によらず警告する。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WRs1RUoV3TBdtpkK7FrRTT
9.4 KiB
9.4 KiB
ELC Editor モックの所感(画面仕様の入力)
モックを触った所感と、それを受けた議論の整理。仕様ではない。 画面仕様を一から作るときの入力にし、仕様へ反映したら消す。
方向が合意できたもの
一括配線
- キーの上を順になぞって配線する。ピンの指定は、なぞる前でも後でもできる。
- なぞる操作は、配線の方式(通常・倍・二乗マトリクス、direct、mux経由)によらず共通にする。方式で変わるのは次の設定だけ。
- どの端子に書くか(接点キーは a / b、アナログキーは out / vcc / gnd)。 通常のマトリクスでrowだけ・colだけを分けてなぞるのは、端子aと端子bを分けてなぞることにあたる。
- ピンの付け方。なぞったキー全部に1本のピンを付けるか、ピンの一覧からなぞった順に1本ずつ割り当てるか。
順に割り当てる方は、キーごとに別のピンになるdirectやアナログmuxの
outに使う。マトリクスでrowを続けてなぞるときにも使える。 - 既定の向き(
a-to-b/ なし)。directなどダイオードを付けない配線では「なし」にする。 - 両方向モード(下記)を使うか。
- directでは、電源レール側の端子は全キーをなぞって
GNDなどを指定する。マイコン側は順に割り当てる。 - mux・シフトレジスタ経由でも操作は変わらない。指定するピンが提供者の論理ピンになるだけ。 提供者が使っている上位ピンを候補から外すか警告するかは、ピン名の候補の一覧と一緒に考える(要検討)。
- 編集中は、片方の端子だけ配線した状態を保存できる。ELCの端子を省略可能にし、片側だけのキーは検証で拾う。 ELCの保存形式の変更になるので、本決定は別途行う。
- 両方向モードでは、同じピンの組が編集中に重なってよい。ダイオードの向きで区別するので衝突にはならない(T-25)。 重なった場合も保存は止めない(T-16)。
- 端子aとbが同じピンのキー(二乗マトリクスの対角)は、方式によらず誤りとして検証で警告する。保存は止めない(T-16)。 同じピンをrow側とcol側の両方でなぞると起こるので、なぞった時点でも知らせる。
両方向モード(倍・二乗マトリクス)
- 二乗マトリクスをマトリクスの一般形とし、通常・倍マトリクスは使うピンの組を限ったものとみなす。
- ELCのデータの持ち方は変えない。接点キーは端子のピンとダイオードの向き、つまり (アノード側のピン, カソード側のピン) の 順序付きの組を持つ。二乗マトリクスのキー (駆動, 受信) はこれでそのまま表せる。
- 倍マトリクスと二乗マトリクスはエディタで区別せず、1つの両方向モードにする。
違いはピンをrowとcolの組に分けるかどうかで、Generatorの
rowPins/colPinsの決め方(二乗なら同じ並び)にあたる。 - 両方向モードは配線補助の設定であり、ボードの属性ではない。ELCには保存しない(ELCはトポロジを区分として持たない)。
- 途中保存したプロジェクトで設定を復元できるよう、プロジェクト内のエディタの状態として保存する。
- Generatorの出力設定を作るときの初期値に使える。常には連動させない(走査方式を決めるのは出力設定)。
倍か二乗か(
rowPins/colPinsを分けるか同じにするか)は出力設定で選ばせる。 倍・二乗マトリクスの出力はGeneratorが未対応(T-19)なので、効くのは対応後。 - どの端子に書いているかは保存しない。
- エディタはrow/colやCOL2ROWの概念を持たない。順/逆の解釈はGeneratorが行う。なぞったときの既定の向きは
a-to-b。 - 両方向モードでなぞったとき、新しいキーを既定の向きにした (アノード, カソード) の組を、既にある他のキーが使っていれば、
新しいキーの向きを反転する。
- 順序のない組で判定しない。二乗マトリクスを回路図の格子どおりになぞると、(p, q) と (q, p) は既定の向きのまま別の組になる。 倍マトリクスでは端子aが常に同じ側のピンになるので、どちらで判定しても結果は同じ。
- 排他なキー(レイアウトバリアント)との重なりは数えない。排他キーは同じ組を同じ向きで共有するのが正しい。
- 判定は両端子が揃った時点で行う。端子aとbに分けてなぞる場合は、後から付いた端子の時点。
- 配線し直すキー自身の旧配線は数えない。
- 反転した向きも既に使われている場合は反転せず、衝突として警告する。なぞる操作は止めない(T-16)。
- 通常のマトリクスでは両方向モードを切っておく。既定の向きでの重なりは配線ミスであり、自動反転すると見えなくなる。
- モードの切り替えでは既存の配線を書き換えない。モードはこれからなぞる操作の補助だけを決める。
- 切り替えた時点では「どちらが二個目か」を決める順序がない(なぞった順はELCに残らない)。
- 既存の重なりの振り分けは、切り替えとは別の一回限りのコマンドにする。
- 両方向モードを切っても配線は変えない。向きの不揃いは検証で拾う。
- 向きを変える操作を2つ持つ。どちらも、選択中のキーの向きが混ざっていても、相方を選んでいてもいなくてもよい。
- 相方と交換: 選んだキーの(順序のない)ピンの組を重複なく集め、その組を持つ全キーの向きを反転する。 組ごとに1回だけ反転するので、相方を同時に選んでいても二重に反転しない。排他キーも一緒に反転する。 相方のいないキーは単に反転する。両方向とも埋まっている組では、キーと向きの割り当てが入れ替わるだけで衝突しない。
- このキーだけ反転: 選んだキーだけを反転する。同じ向きで衝突している組は、交換では解消できないため。
- 向きは三角形のオーバーレイで見せる。ダイオード記号ではないのでカソードの棒は付けず、
a→bの向きだけを表す。 相方のいるキーといないキーの区別も見えるようにする(塗り/白抜きなど)。
ピン提供者
- ボード(Pro Micro互換など、MCUを載せた開発基板)も提供者として扱いたい。多くの利用者はチップではなくボードを使う。
現行の
mcu提供者はチップの品番だけを持つ。
LEDチェーン
- per-key LEDとアンダーグローを別チェーンにできること。仕様上はできる(チェーンに入れるLEDは設計者が選ぶ)。 モックでできないのは下記「モックの実装上の問題」による。
- チェーン内の順番を指定できること。配線しやすい向きがあるため。キーの配線と同じく、なぞって指定する。
要検討
- ボードを提供者にしたときの形。ボードのピン名とMCUのピンの対応、外に出ていないピンの扱い、分割キーボードでの使い方。
- 対応している提供者を図付きで見せる。ボードのピン配置図と一緒に考える。
- ピン名の候補の一覧が「今使えるピン」と誤解される問題。ダイアログに分けるなど。ボードを提供者にすれば、外に出ていないピンは候補から消える。
- GPIOに直結したLED(インジケータなど)。仕様にないので
backlog/README.mdのELC-P-4とした。
ELC Editorの範囲外
- Generatorのプレビューが倍マトリクスを「未対応」にできない。T-19の検査は両端子が
rowPins/colPinsに分かれているかだけを見て、 向きが揃っているかを見ない。倍マトリクスの配線は検査を通り、同じ(row, col)を持つキーが2つある設定を出力してしまう。 単純なマトリクスに限る(ELC-P-3)なら、向きが揃っていることも検査条件に要る。 二乗マトリクスも、rowPinsとcolPinsに同じ並びを指定すれば同じ検査を通ってしまう。
モックの実装上の問題
作り直しで解消する前提で、原因の記録だけ残す。
- 選ばれていないバリアントのキーを配線できない: 出力用の選択(
output.variantSelection)で絞ったキーだけを表示し、 ELC画面に選択を変えるUIがない(IDX・Generatorのタブでしか変えられない)。仕様では全バリアントのキーを配線する。 - per-key LEDが意図しないチェーンに入る: 配線用のキーボード表示のクリック(
clickKey)が、編集中のチェーンにそのキーを追加する。 1つのLEDが複数のチェーンに入っても検査しない。 - 一括配線はキーをクリックで選ぶ方式で、配線の順はクリック順ではなくPHYの表示順になる。