# PHY Editor のキー操作(検討用) キー割り当ての叩き台と、モディファイアを振るときの基準。**仕様ではない。** [phy-editor-feedback.md](phy-editor-feedback.md) の要検討を詰めるための材料。 ## 決めた方針 - KLE の割り当てを土台にする。主な利用者は KLE から移ってくるため。KLE の割り当ては末尾の「参考」。 - Shift+矢印はサイズ変更(KLE と同じ)。キーのサイズは 0.25U 刻みで足りるので、サイズ変更に刻みの切り替えは要らない。 - 移動の刻みはグリッドの状態として持ち、矢印キーとドラッグが同じ刻みに従う。修飾キーで刻みを変えない。 - 画面上で隣にあるキーへ4方向で移る操作は当面作らない。Tab の順送りで足りるか試す。 ## 割り当て案 Mac では Ctrl を Cmd に読み替える。1文字のキー(R・G・V など)は、キャンバスにフォーカスがあり入力欄にいないときだけ効く。 ### A. 選択を動かす(データは変わらない) | 操作 | キー | メモ | | --- | --- | --- | | 選択を外す | Esc | 合意済み | | 親へ上がる / 子へ降りる | Alt+↑ / Alt+↓ | エクスプローラーの Alt+↑ と揃う。降りる先は、上がる前に選んでいた子 | | 兄弟へ順に移る | Tab / Shift+Tab | 親のローカル座標で行ごとに並べた順。MAP Editor の入力ループと揃う | | 同じ親を持つノードをすべて選ぶ | Ctrl+A | 選択がなければ、フォーカス先(フォーカス中でなければ最上位)の直下をすべて選ぶ。全選択を兼ねる | ### B. 配置を変える(データが変わる。方向があり、繰り返し押す) | 操作 | キー | メモ | | --- | --- | --- | | 移動 | ←↑↓→ | グリッドの刻み。方向は直近の親の軸方向(合意済み) | | サイズ(w/h) | Shift+←↑↓→ | 0.25U 刻み。右と下が伸びる向き | | 回転 | PgUp / PgDn | ±15°。PgUp が正方向。細かい角度は数値で入れる | | スイッチの向き | R / Shift+R | 90° ずつ。KiCad の R(回転)と揃う | | スイッチ位置のオフセット | なし | 数値入力で足りる | ### C. 構造を変える(データが変わる。1回で完結する) | 操作 | キー | メモ | | --- | --- | --- | | クラスターにする / 解除する | Ctrl+G / Ctrl+Shift+G | 慣例 | | 1つ上の親へ出す | なし | 階層パネル・メニューから | | VariantGroup にする / Variant を足す | なし | 頻度が低い | ### D. 作る・消す(データが変わる。1回で完結する) | 操作 | キー | メモ | | --- | --- | --- | | 削除 | Delete / Backspace | Mac のキーボードに Delete キーがないため両方。参照の確認は省かない(合意済み) | | 複製 | Ctrl+D | | | コピー・カット・ペースト | Ctrl+C / Ctrl+X / Ctrl+V | キーだけ確保する。新しい ID と他の層からの参照の扱いは未議論 | | キーを足す | Ins | KLE と同じ | ### E. 表示(データは変わらず、保存もしない) | 操作 | キー | メモ | | --- | --- | --- | | 全体表示 / 選択範囲にズーム | Shift+1 / Shift+2 | Figma と同じ。`code` で判定する | | ズームイン・アウト | `+` / `-` | Ctrl+± はブラウザのズームなので取らない | | フォーカスモードに入る・出る | Enter / Esc | 合意済み | | グリッドの刻みを切り替える | G / Shift+G | | | 表示するバリアントを切り替える | V / Shift+V | 選んでいる VariantGroup の次・前の Variant へ送る | | 表示のオン・オフ、階層パネルの開閉 | なし | 頻度が低い | ### F. 文書全体・その他 | 操作 | キー | メモ | | --- | --- | --- | | 元に戻す / やり直す | Ctrl+Z / Ctrl+Shift+Z、Ctrl+Y | | | 保存 | Ctrl+S | | | プロパティの入力欄へ移る | F2 | KLE と同じ。Enter はフォーカスモードに使う | | ショートカットの一覧を出す | `?` | | ### 割り当てていないもの - KLE の Ctrl+矢印(回転中心の移動): 回転の中心はクラスターの原点なので、対応する操作がない。 ### 残っている問い - グリッドの刻みの候補値(1U・0.25U と、それより細かい値をいくつ用意するか)。モックで試すか、他者のフィードバックで決める。 - Ins は Mac のキーボードにない。Mac での代わり。 - Ctrl+D(Chrome のブックマーク)をページ側で横取りできるか。 ## モディファイアを振るときの基準 1. **データを変えるか**: A・E(変えない)と、B・C・D(変える)に分かれる。 表示や選択を動かすつもりで配置を変えてしまわないよう、両者は別のモディファイアにしたい。 割り当て案では、修飾なしと Shift の矢印が配置を変え、Alt と Tab が選択を動かす。 2. **方向があって繰り返し押すか**: A(一部)と B は方向を持つので、矢印キーを取り合う。 どの値を動かすかをモディファイアで切り替えることになる。 1回で完結する C・D・F は、Ctrl+文字キーの慣例に乗せられる。 3. **刻みの粗さ**: B の中だけで使う軸。「どの値か」と「刻み」をどちらもモディファイアで表すと、 組み合わせの数が掛け算で増える。割り当て案では刻みをグリッドの状態に移した。 4. **効く場所**: どこでも効くもの(元に戻す・保存)、キャンバスやパネルにフォーカスがあるときだけ効くもの、 入力欄では文字入力を優先するもの、に分かれる。 5. **キーの判定方法**: JIS 配列や独自のキー配置を使う人が多い前提で、記号・文字のキー(`?` `+` `R` など)は `event.key` で判定し、刻印に従わせる。Shift+数字は記号が配列によって違う(Shift+2 は US で `@`、JIS で `"`)ので `event.code` で判定する。 回転とスイッチの向きは対になったキーや1文字のキーに移したので、矢印キーを取り合うのは移動・サイズ・選択の移動の3つ。 ## 避けたい組み合わせ Web アプリとして動かす場合、OS やブラウザが先に取る組み合わせがある。 - Ctrl+Alt+矢印: Windows の一部の Intel グラフィックドライバで画面回転のホットキー - Ctrl+矢印: macOS の Mission Control(デスクトップの切り替え) - Alt+←/→: ブラウザの戻る/進む - Ctrl+F: ブラウザのページ内検索。ELC・IDX のエディタでキー検索に使いたくなる可能性もある - Ctrl+± / Ctrl+0: ブラウザのズーム。取れたとしても、ページを拡大したい人の手段を奪う ## 参考: KLE の割り当て KLE のヘルプダイアログ(`kb.html`)より。 | キー | 操作 | | --- | --- | | ←↑↓→ | 選択したキーを移動 | | Shift+←↑↓→ | 選択したキーのサイズを変える | | Ctrl+←↑↓→ | 選択したキーの回転中心を移動 | | PgUp / PgDn | 選択したキーの回転角を変える | | Ins / Del | キーを足す / 選択したキーを消す | | F2 | 選択したキーのテキストを編集 | | Ctrl+A / Esc | 全選択 / 選択解除 | | J / K | 前 / 次のキーを選ぶ | | Ctrl+Z / Ctrl+Shift+Z、Ctrl+Y | 元に戻す / やり直す | | Ctrl+X、Shift+Del / Ctrl+C、Ctrl+Ins / Ctrl+V、Shift+Ins | カット / コピー / ペースト | | Ctrl+S | 保存(サーバー上) | | F1、`?` / F7 | ヘルプ / オプション |