T-28の固定0.25Uは、所感の「刻みはグリッドの状態として持つ」と食い違っていた。 1/12Uは実際に使う刻みなので候補に含める。0.5Uは使わないので入れない。 サイズは0.25U・回転は15度の固定のまま。 キー割り当て案の古い「コピー&ペーストは未議論」をT-11への参照に直す。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jmj4oW3phJrVNNcjMVqo8Q
7.8 KiB
7.8 KiB
PHY Editor モックの所感(画面仕様の入力)
モックを触った所感と、それを受けた議論の整理。仕様ではない。 画面仕様を一から作るときの入力にし、仕様へ反映したら消す。
方向が合意できたもの
選択
- 何を選択しているかが一目で分かること(モックは選択枠がほぼ見えない。下記「モックの実装上の問題」)。
- クリックでの追加選択は1件ずつのトグルのみ(連続選択の「順番」は作らない)。
- 複数選択はキャンバス上のドラッグ(範囲選択)でもできる。
- キャンバスでクリックすると、それまでの選択によらずキーが選ばれる。
- クラスターは長押しで選ぶ。押している間、一定間隔で選択先が直近の親から順に上がり、 一番上の親の次はキーに戻ってループする。離したときの状態で選択が確定する。途中の選択先はインジケータで示す。
- Shift+長押しで、クラスターを選択に足せる。
- 親とその配下は同時に選択しない(変換が二重にかかるだけで、使い道がない)。
- クラスターは長押しのほか、階層パネルとキー操作(親へ上がる・子へ降りる)でも選べる。長押しはヘルプで案内する。
- タッチ操作(長押しが標準のメニューと重なる)は当面考えない。
- 何もない場所のクリック・Escで選択を外せる。
クラスター
- クラスターの当たり判定・選択表示は子を囲む矩形。クラスターのローカル座標で取る(回転に追従するOBB)。
- 階層(ツリー)パネルはクラスター・VariantGroupの選択と構造の確認に必要。キーの一覧としては不要なので、キーは畳むなど目立たせない。
- VariantGroupはクラスターの一種という認識。移動・回転の「親」にVariantGroupも含む。
フォーカスモード
- 特定のクラスター内だけを編集対象にし、他を薄く表示するモードを作る。
- 入る: クラスターを選んだ状態でダブルクリック。ダブルクリックを始めた時点で選ばれていたクラスターに入る (1回目のクリックで選択がキーに移っても、入る先は変わらない)。キーボードではEnter。
- 出る: Esc。選択があるときのEscはまず選択を外し、選択がない状態のEscでフォーカスを抜ける。
移動・回転・サイズ
- 移動・サイズ変更・削除をキーボードで操作できる。削除は参照の確認(T-15)を省かない。確認は操作した場所の近くに出す。
- 矢印キーでの移動方向は、直近の親(クラスター・VariantGroup)の軸方向。ドラッグと同じ。
- 移動の刻みはグリッドの状態として持ち、矢印キーとドラッグが同じ刻みに従う。修飾キーで刻みを変えない。
- 複数選択に対して回転以外の操作(移動など)もできる。
- 複数キーを共通の中心で回したいなら、それはクラスターをなす。選択ノードを個別に回転する操作はそれとして残す。
表示
- キャンバスは画面サイズに追従する(モックは1152×896px固定)。
- 読み込み時は全体が収まり中央に来るようにズームする。同じ操作をボタン・キーでも呼べる(全体表示)。
- ボタンはアイコン化したい。ツールチップを付ける。
呼び方と見出し
- PHYの要素は、キー・クラスター・部品・バリアントグループ・バリアントと呼ぶ(仕様書の呼び方に揃える)。
「レイアウト」は配置全体を指す語(QMKの
LAYOUT_*、KLE)とぶつかるので、バリアントの呼び名に使わない。 - 階層の最上位は root と呼ぶ(フォーカス中のパンくずなど)。
- 別の親へ移す操作(reparent)は「移し先…」とし、行き先は候補の一覧(root・クラスター・バリアント)で見せる。 「移動」は座標の移動と紛れるので使わない。
- 見出しを付けすぎない。操作ボタンはキャンバスの上に置き、階層パネルは木だけにして見出しを付けない (開閉ボタンのツールチップは「階層」)。キャンバスにも見出しを付けない。
- プロパティ欄の項目名はモックのままでよい。
バリアントの切り替え
- キャンバス上で、バリアントグループの右上に小さなバッジを常に出し、クリックで開くポップオーバーからバリアントを選ぶ。 バリアントがどこにあるかを一目で分かるようにするため、選択中だけにしない。
- バッジはグループの座標系(OBB)の右上に置く。文字は正立させ、大きさは画面上で固定する。フォーカス外では薄く表示する。
- キーでは V / Shift+V で次・前のバリアントへ送る。バリアントグループを1つ選んでいるときだけ効く。
- 切り替えで隠れたノードの選択は、そのバリアントグループに移す。
- ポップオーバーでは既定のバリアントを印で示すだけにする。既定の変更とバリアントの追加・削除はデータを変えるので、 表示の切り替えと分けてプロパティ欄や操作ボタンで行う。
コピー&ペースト
- IDと参照の扱いは 仮決定 T-11。
- クリップボードのKLE JSONを貼り付けで取り込める。幾何だけを読み、新しいIDを振る(KLE取り込みと同じ経路で、手元のデータとは照合しない)。
要検討
モックで試して決める
触って比べないと決まらないもの。
- 長押しの詳細: 選択先が上がる間隔、インジケータの見た目、長押しとドラッグの切り分け(長押しで階層を選んでからドラッグに移れるか)。
- 個別回転とクラスター化してからの回転のどちらを主な操作にするか。
- キー割り当て。叩き台をモックに入れて試す。叩き台と残っている問いは phy-editor-keybindings.md。
- グリッドの刻みの候補値の過不足。初期の候補は 仮決定 T-28。
- どこまでアイコンのみのボタンにするか。
- ホイールでのカーソル中心ズーム、ホバー時の強調(モックに無い。未議論)。
- バリアントのバッジが隣のバッジやキーと重ならないか。V をグループ内のキーを選んでいるときにも(いちばん近いグループに)効かせるか。
画面仕様までに決める
試さなくても決められる、または試す前に決めておく必要があるもの。
- タブ名と検証結果欄の呼び方。PHY・ELCなどのレイヤー名は設計上の仮称で、画面に出すかどうかは別途決める。 全エディタに共通するので、PHY Editorとは別に扱う。
- 別のプロジェクトへ貼り付けるとき、貼り先に同じIDのProfileがない、またはIDが同じで中身が違う場合の扱い。
モックの実装上の問題
作り直しで解消する前提で、原因の記録だけ残す。
- 選択枠が見えない:
.key-faceにvector-effect: non-scaling-strokeがあり、stroke-width: 0.055が画面上0.055pxになる。 - クラスターをキャンバスでつかめない: クラスターの
<g>に面がなく、子キーのpointerdown.stopが先に取る。 - プロパティ欄の「±.25U」「±15°」は+方向しか呼ばない。画面下部に同じ操作の −/+ ボタンが重複している。
- 複数選択の回転は各ノードの原点まわりに個別に回る。ドラッグで動くのはつかんだ1件だけ。