Compare commits

..
7 Commits
Author SHA1 Message Date
ewdernaandClaude Opus 5.5 beac52c20b provisional: IDX Editorのバリアント選択と、欠番を作らないことを決める
- 欠番は作らない(現行仕様のまま)。構成をまたいで番号をそろえる場面を挙げられないため
- 複数行にまたがるキーは上端の行の位置に置く
- 左ペインをVariantGroupのツリーにし、キャンバスには選択した構成だけを表示して並べ替える
- 隠れたキーは同じVariantGroupで選択中のキーにくっつけ、決まらなければ手前のキーにくっつける

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TYqQUp9AZ5TqvtELdpcwC6
2026-10-06 08:43:40 +09:00
ewdernaandClaude Opus 5.5 fd21d64bcf provisional: IDX Editorの行と列の判定規則と、適用前のプレビューを決める
- そろっている軸は座標でまとめ、ずれている軸は隣とのつながりでたどる(両方たどると循環する)
- 隣り合う列の対応は1対1にする。誤った1か所で2行が合体するため
- 縦長キーは上端の行、横長キーは左端の列に属させ、外れたら手で直す
- 適用前に判定した行を表示し、列ごとに↑/↓で1行ずらして直せるようにする
- なぞって連番を振る操作は後回しにし、キー列から連番で並べ直す操作を共通の入り口にする

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGuRxrp4fZwztsK45G21jt
2026-10-06 08:17:47 +09:00
ewdernaandClaude Opus 5.5 af2aa31518 provisional: IDX Editorのプリセットを対象・走査・向きの組み合わせにする
- 種類ごとのプリセットをやめ、対象(全体/選択範囲)・走査・向きの3軸で表す
- 既存定義(QMK layout[]・VIA・KLE)からの取り込みは別の操作にする
- 行は隣の列で最も近いy座標のキーとつなげて判定する
- 排他キー同士の前後は出力番号に影響しないので任意とする

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGuRxrp4fZwztsK45G21jt
2026-10-06 08:17:47 +09:00
ewdernaandClaude Opus 5.5 1d24de0e79 provisional: PHY Editorの作り直しの範囲と、貼り付け・クラスター内の隙間の扱いを決める
- 作り直すのは ui/phy/ だけ。domain/・io/ とテストは流用する(T-29)
- 貼り付け・複製は選択中のノードと同じ親に、グリッド1刻みずらして置く
- コピーはアプリ内に持ち、システムのクリップボードからはKLE JSONだけを読む
- クラスターの矩形内の隙間は何もない場所として扱う

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jmj4oW3phJrVNNcjMVqo8Q
2026-10-05 08:31:02 +09:00
ewdernaandClaude Opus 5.5 88f18b3b20 provisional: 移動の刻みをグリッドの状態にし、候補を1U・0.25U・0.125U・1/12Uにする
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
2026-10-05 08:29:55 +09:00
ewdernaandClaude Opus 5.5 65db845dbb provisional: コピー&ペーストのIDと参照の扱いを仮決定に足す
- 複製の範囲の中で閉じた参照(VariantGroupのdefault)は新しいIDへ付け替える
- 複製したキーはIDXに登録せず未登録のままにする。MAPの割り当ても当面複製しない
- 同じプロジェクト内のカット&ペーストはreparentとして扱い、IDと参照を保つ
- PHY Editorではクリップボードの KLE JSON を貼り付けで取り込めるようにする
- 別のプロジェクトへ貼るときのProfileの扱いは問いとして残す

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jmj4oW3phJrVNNcjMVqo8Q
2026-10-05 08:16:21 +09:00
ewdernaandClaude Opus 5.5 d7c35add15 chore: provisional/decisions.md にMarkdownのlint修正をかける
内容は変えない。見出し直後の空行と表の区切り行の書式だけ。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jmj4oW3phJrVNNcjMVqo8Q
2026-10-05 08:16:14 +09:00
4 changed files with 108 additions and 24 deletions
+39 -2
View File
@@ -6,10 +6,12 @@
## A. モックの範囲と技術
### T-1 モックの目的
配置を編集しても割り当てがずれないこと、全バリアントを保持したまま選択した構成を出力・往復できることを、動くもので確かめる。
完成品のツールにはしない。
### T-2 対象範囲
ブラウザで動く1つのアプリ。1画面でタブを切り替える。
| ツール | 作る範囲 |
@@ -26,16 +28,19 @@
後段(任意): 疑似デバイスとの往復(書き込み → 外部での変更を模擬 → 読み出し → 差分確認 → MAPへ取り込み)。着手する場合は T-24 に従う。
### T-3 作る順番
1. 回転したクラスター内のキーのドラッグと、保存・再読み込みの往復(描画方式の確認を兼ねる)
2. IDX・MAPとの連携
3. ELCと出力の対応表
4. (任意)疑似デバイスとの往復
### T-4 検証に使うデータ
`samples/kle/macropad-4x4.json`、`samples/kle/cr0wn60.json`(幾何のみ)、手作りの回転・入れ子バリアントのfixture。
実在の配線とVIAの適合は検証の対象にしない。
### T-5 技術選定 (implementation-plan P-2)
| 項目 | 仮決定 |
| --- | --- |
| 言語 | TypeScript(strict) |
@@ -49,15 +54,23 @@
理由: 描画の変換がPHYの `Translate · Rotate` と同じ定義で、座標の逆変換をブラウザに任せられる。Vueは既存の経験を使える。
### T-6 リポジトリ構成 (implementation-plan P-3)
このリポジトリの `mock/` に単一のパッケージとして置く。
中は `domain/`(層のモデル・変換。Vue・DOMを参照しない)、`io/`(KLE・プロジェクトファイル)、`ui/` に分ける。
モノレポ化とパッケージの分割はモックの後に決める。
### T-7 KLE JSONの読み書き (implementation-plan P-1)
kle-serial2 を使わず、読み書きともに自作する。ijprest/keyboard-layout-editor・kle-serial・過去のkbd-editorのコードも取り込まない。
KLE本家の挙動の確認は、既存の検証ハーネスで本家の `serial.js` を動かして比べる(コードは写さない)。
理由: 出自の確認を待たずに進められ、後からライブラリへ差し替えられる。
### T-29 PHY Editorの作り直し
`ui/phy/` だけを作り直し、`domain/`・`io/` とそのテストは流用する。作り直したものもモックとして扱う。
入力は [phy-editor-feedback.md](phy-editor-feedback.md) と [phy-editor-keybindings.md](phy-editor-keybindings.md)。
理由: 所感はすべて画面の操作と表示に関するもので、データモデル側に作り直す理由がない。
## B. 明示的な未決事項
### 未確認事項
@@ -100,6 +113,7 @@ ELC本文にある「LEDのドライバIC方式」「デジタル側の提供者
仕様だけでは実装が一意にならない箇所。
### T-10 プロジェクトファイル
1ファイル `*.bkle.json` に束ねる。
```ts
@@ -116,55 +130,69 @@ type ProjectFile = {
各層を単独のJSONとして書き出す・読み込む機能も持つ。モック独自の拡張は各層の中に入れず、`ProjectFile` の直下に置く。
### T-11 ID
新規ノードは種別の接頭辞 + ランダム文字列(`key-`, `cl-`, `cmp-`, `vg-`, `v-` + `crypto.randomUUID()` の先頭12桁)。
プロファイル・提供者・LEDチェーンも同じ規則。PHY内の全ノードでIDを一意にする。
移動・並べ替え・reparentではIDを変えない。複製は配下も含めて新しいIDにし、ELC・MAP・IDXへの参照は複製しない。
移動・並べ替え・reparentではIDを変えない。複製(コピー&ペーストを含む)は配下も含めて新しいIDにし、ELC・MAP・IDXへの参照は複製しない。
複製した範囲の中で閉じた参照(VariantGroupの `default`)は新しいIDへ付け替える。複製したキーはIDXの末尾へ足さず、未登録のままにする。
同じプロジェクト内のカット&ペーストはreparentとして扱い、IDと参照を保つ(削除+複製にすると T-15 で参照が消える)。
KLEの取り込みは毎回新しいIDを振る。
### T-12 phyReference
- `source`: プロジェクト内では `project:phy`。単独ファイルでは読み込んだPHYのファイル名(利用者がPHYを選び直せる)
- `checksum`: PHY全体をJCS(RFC 8785)で正規化し、UTF-8のSHA-256を `sha256-jcs:<hex>` とする
- 不一致は警告だけ。IDを付け替えず、参照の検証をやり直す。保存時に更新する
### T-13 version
モックが出力する各層とプロジェクトファイルは `0.1.0`。読み込みは `0.1.0` だけを受け付ける(文書の例にある `1.0.0` は互換の約束とは扱わない)。
### T-14 読み込んだ未知のフィールド
保持して書き戻す。新しく書き出すデータには追加しない。
### T-15 ノードの削除
IDX・ELC・MAP・LEDチェーンにある参照を一覧で示し、同じ操作(1回のUndo単位)で削除する。
Variantを削除したときは、VariantGroupの `default` を先頭のVariantへ移す。子が1つになるVariantGroupの削除は、確認して止める。
### T-16 検証の段階
- 保存を止めるもの: Schema違反、ID重複、参照先がない
- 出力(`mock-target.json`)を止めるもの: IDXに未登録のキー、選択構成のキーの未配線・未割り当て、非排他キーの接続先の衝突
- どちらでも警告として一覧に出す。編集途中の状態は保存できる
### T-17 Undo/Redo
プロジェクト全体のスナップショットで持つ。ドラッグ1回を1操作にまとめる。
### T-18 IDXの初期の並び
KLE取り込み時は、取り込んだファイルでのキーの出現順で `order` を1回だけ作る。手で置いたキーは作った順に末尾へ足す。
その後はPHYから作り直さない。IDXに未登録のキーは「未登録」と表示する。
`decal` と部品ノードは対象外、`ghost` は対象にする。
### T-19 row/col の割り当て(Generatorのプレビュー)
出力設定に順序付きの `rowPins` と `colPins` を利用者が指定し、その添字をrow/colとする。
各接点キーの両端子が、片方は `rowPins`、もう片方は `colPins` に属することを検査する。満たさない構成(charlieplexing、direct)は「未対応」と表示して出力しない。
端子の `a`/`b` の順、キーの位置、IDXの順からは推定しない。
### T-20 KLEの入出力の細部
- 入力は厳密なJSON(KLEの緩いJSONは読まない)。VIA定義の `layouts.keymap` は、KLE JSONとして幾何だけを取り込む
- ラベルは欄の位置と空欄を保って保持する。`a` 等の属性の引き継ぎとリセットは入出力の処理で解決する
- 書き出しは、同じ絶対角度のキーに共通の回転中心を使い、キーの順を固定する。座標は小数6桁に丸める(PHYの値は丸めない)
- 書き出し時のバリアント選択は `output.variantSelection` を使い、指定のないものはPHYの `default`
### T-21 プロファイルと座標の単位
モックで編集できるのは、全プロファイルの `unitSize` が同じ場合だけ。違うものは読み込んで保持するが、編集不可と表示する。
理由: 親の座標系のUを、どのプロファイルでmmへ換算するかが決まっていない([discrepancies.md](discrepancies.md) D-6)。
### T-22 MAPの割り当て
- 未割り当ては `keymap` に要素がない状態で表す。`KC_NO`・`KC_TRNS` は明示の割り当てとして区別する
- 同じレイヤーでの `keyId` の重複は禁止
- 新規MAPは名前 `Base` の空のレイヤー1枚から始める。レイヤー名は大文字小文字を区別し、MAP内で一意
@@ -173,10 +201,13 @@ KLE取り込み時は、取り込んだファイルでのキーの出現順で `
- 編集できるキーコードは、基本キー・修飾キー・`KC_NO`・`KC_TRNS`・上のレイヤー動作・修飾キー付き(`LCTL(kc)` 等)に限る。知らないコードは保持し、表示だけする
### T-23 キーコードの表示
QMKの表記をそのまま出し、基本キーだけUS配列の文字を添える。表示用の小さな対応表はUI側に置き、HSTのデータ形式としては扱わない。
### T-24 疑似デバイスとの対応(後段・任意)
MAP P-3 の問いを、モック用に次のように固定する。
- 出力のたびに「出力記録」を作り、選択構成・キーID↔出力番号↔row/col・レイヤー名↔番号を保存する。疑似デバイスは記録のIDを持つ
- 書き込みは選択構成のキーだけ。選択外のバリアントのキーの割り当てはMAPに残す
- 読み出した値は、記録にある選択構成のキーだけへ戻す。通信上のアドレスからPHYキーを推定しない
@@ -185,17 +216,23 @@ MAP P-3 の問いを、モック用に次のように固定する。
- 「現在のMAP」「出力時のMAP」「最後に読んだ値」を分けて持つ。読み出しは差分を見せてから取り込む。自動同期はしない
### T-25 非排他キーの接続先の衝突判定
ダイオードがあれば、接続先を(アノード側のピン, カソード側のピン)の順序付きの組として比べる。ダイオードがなければ順序のない組として比べる。
理由: 順序のない組で比べると、Cr0wn60のようなcharlieplexingが常にエラーになる([discrepancies.md](discrepancies.md) D-5)。
### T-26 MCUのピン名
提供者の `part` は1種類(RP2040)だけをモックに組み込み、ピン名(`GP0`〜`GP29`)を候補として出す。知らない `part` は自由入力にする。
提供者のIDに `.` を含めない(`PinRef` の区切りと衝突するため)。
### T-27 reparentの計算
ワールド変換を使って `新しいローカル変換 = (新しい親のワールド変換)⁻¹ · 旧ワールド変換` とする。
仕様の式を、親が兄弟でない場合にも当てはまる形で実装する([discrepancies.md](discrepancies.md) D-7)。
reparent・reframeの前後で、絶対位置の差が1e-9U以下であることをテストで確かめる。
### T-28 スナップ
ドラッグと増減ボタンは、操作開始時の値から0.25U・15度刻み。数値の直接入力はグリッド外の値も受け付ける。計算結果は丸めない。
移動(ドラッグ・矢印キー)はグリッドの刻みに従う。刻みはエディタの状態として持ち、候補は 1U・0.25U・0.125U・1/12U、初期値は0.25U。
サイズは0.25U、回転は15度刻みで固定する。いずれも操作開始時の値から刻む。
数値の直接入力はグリッド外の値も受け付ける。計算結果は丸めない。
+50 -10
View File
@@ -14,18 +14,58 @@
- n < i のとき、キーは位置iに入り、元のn+1〜iは1つずつ前へずれる(通常のリストの移動と同じ)。
- 入れ替え: 位置iのキーを位置nのキーの上にドロップすると、2つを入れ替える。他のキーは動かない。
## 要検討
### プリセット(一括の並べ替え)
- プリセット(一括の並べ替え)の種類。候補: 分割キーボード用(左手側を先に並べる)、行と列の入れ替え。
- なぞって連番を振る操作。なぞり始めたキーの位置から連番にする。複雑な配置で役立ちそうだが、実装は重い。
- バリアント選択のドロップダウンの位置。左上に置く案。
- 欠番(番号の飛び)を作れないこと。現行仕様では、出力番号は `order` 内の位置で表し、飛ばない(`IDXレイヤー.md`「保存形式」)。
- 種類ごとに個別のプリセットを作らず、3つの軸の組み合わせで表す。
- 対象: 全体 / 選択範囲
- 走査: 行優先 / 列優先 / 半身ごと(左手側を先に並べる) / 行ごとに左右交互 / マトリクス順(ELCのrow → col)
- 向き: 通常 / 左右逆。半身ごとに指定できる(右手側だけ逆、など)
- 既存の定義(QMK `keyboard.json` の `layout[]`、VIA定義、KLEのキー順)からの取り込みは、上の組み合わせとは別の操作にする。
既存基板の番号を変えずに引き継ぐためのもの。
- 行と列の判定: そろっている軸は座標でまとめ、ずれている軸は隣とのつながりでたどる。
行と列の両方をつながりでたどろうとすると、互いが互いを必要として循環するため。
- カラムスタッガード: 列はx座標でまとめる。行は、隣の列のキーのうちy座標が最も近いキーを同じ行とする。
ロウスタッガードは縦横を入れ替える。格子配列はどちらでもよい。どちらの軸がそろっているかは座標から判定する。
- 上から何番目かで数える方式は、端の列だけ行数が違う配列でずれる。
- 隣り合う列の間の対応は1対1にする。行は対応のつながりで決まるため、1か所の誤りで2つの行が1つに合体する
(同じ列の2キーが、隣の列の同じキーに対応した場合)。
- 縦長のキー(縦2U、ISO Enter)は上端の行、横長のキー(スペースバーなど)は左端の列に属させる。外れたら手で直す。
- 左右の半身の間の隙間も、隣り合う列の1組として対応付ける。左右対称の配置なら内側の列同士のy座標がそろうので、これで行が対応する。
- 判定は完全でなくてよい。プリセットは `order` に一度書き込むだけで、外れても直せばよい。
強いスタッガードで列ごと1行ずれる、回転した親指クラスター、左右非対称の配置などは、下のプレビューで直す。
- 適用前のプレビュー: 判定した行(列)をキャンバス上に表示し(同じ行を線で結ぶ、色分けする、など)、外れに気づけるようにする。
列を選んで↑/↓で行の割り当てを1行ずらせる。割り当てはこの操作中だけの状態で、保存しない。
- 適用後に `order` 上でずらす方式は取らない。`order` はどこからどこまでが1行分かを持たないため。
- 残りの細かい修正は、選択範囲への適用とドラッグでの並べ替えで行う。
### なぞって連番を振る操作
- 後回しにする。プリセット・選択範囲への適用・ドラッグで足りないのは、行がはっきりしない配置(放射状など)に限られる見込み。
- 入り口として、「キーの列を受け取り、先頭キーの位置から連番で並べ直す」を共通の基本操作にする。
プリセットは走査でキーの列を作って渡す。なぞる操作や「順にクリックして番号を振る」は、後から同じ操作に乗せる。
- 排他キー: `order` では既に別々の要素であり(`IDXレイヤー.md`「レイアウトバリアント」)、選択後に同時には残らない。
そのため排他キー同士の前後はどの出力番号にも影響せず、決め方は任意でよい(保存データの差分が安定すれば足りる)。
出力番号に効くのは、複数行にまたがるキー(縦2U、ISO Enter)を共通キーに対してどの行に置くか。上端の行に置く(「欠番」の項目)。
### 欠番
- 欠番(番号の飛び)は作らない。現行仕様(`IDXレイヤー.md`「保存形式」)のままとする。
構成をまたいで番号がそろっていてほしい利用場面を、今は挙げられないため。
- 場面: 4x4の右下(11, 15)をoption A、縦2UキーをBにする。2Uを `order` の末尾に置くと、Bでは12〜14が1つずつ前へずれる。
「2Uを末尾にする」と「バリアント外のキーの番号をずらさない」を両立するには、11を欠番にするしかない。
- 番号を詰める方式は2026-09-22に決めた(`journal/2026-09-22-idx-variant-output.md`)。番号の互換性はバリアントを選んだ構成ごとに扱い、
別の構成で同じ番号が同じキーを指すことは保証しない。ただし、そのときの例は1対1の排他キー(ANSI/ISO)だけだった。
- 今の仕様のままなら、2Uを11の位置に置けば12〜14はずれない(QMKのテンキーの+キーも上端の位置に置く慣習)。
- 構成をまたいで番号が揃っていてほしい利用場面(手書きのkeymap.cを共有する、など)があるかを確認してから扱いを決める。
2Uを11の位置に置けば12〜14はずれない(QMKのテンキーの+キーも上端の位置に置く慣習)。
- 構成をまたいで番号をそろえたい場面が出てきたら考え直す。
### バリアント選択
- 左ペインを、VariantGroupとバリアントのツリーにする。入れ子のグループは親バリアントの下に置く。
PHY Editorの左ペインのツリーと見た目をそろえる。クラスターは出さない。
- キャンバスには選択した構成のキーだけを表示し、その上で並べ替える。
全バリアントを表示すると、排他キー(ANSI/ISOのEnterなど)が同じ場所に重なって操作できないため。
- 隠れたキー(選ばれていないバリアントのキー)は、同じVariantGroupで選択中のバリアントのキーにくっつける。
- 例: `order` が `[a, h, b]` で、hがISO Enter、aがANSI Enterとする。
aとbの間へxをドロップすると `[a, h, x, b]` になり、hが見える構成でも「xはEnterの後」という意図が保たれる。
- 両隣とも同じVariantGroupでなければ、手前のキーにくっつける。
- 表示中のキーを別の場所へ動かしても、隠れたキーはその場に残る。
## モックの実装上の問題
+12 -4
View File
@@ -17,7 +17,8 @@
- 親とその配下は同時に選択しない(変換が二重にかかるだけで、使い道がない)。
- クラスターは長押しのほか、階層パネルとキー操作(親へ上がる・子へ降りる)でも選べる。長押しはヘルプで案内する。
- タッチ操作(長押しが標準のメニューと重なる)は当面考えない。
- 何もない場所のクリック・Escで選択を外せる。
- 何もない場所のクリック・Escで選択を外せる。クラスターの矩形の内側でもキーのない隙間は何もない場所として扱い、
クリックで選択を外し、ドラッグで範囲選択にする。
### クラスター
@@ -67,6 +68,14 @@
- ポップオーバーでは既定のバリアントを印で示すだけにする。既定の変更とバリアントの追加・削除はデータを変えるので、
表示の切り替えと分けてプロパティ欄や操作ボタンで行う。
### コピー&ペースト
- IDと参照の扱いは [仮決定 T-11](decisions.md#t-11-id)。
- 貼り付け・複製したノードは、選択中のノードと同じ親に、元の位置からグリッド1刻みずらして置く。
選択がなければフォーカス先(フォーカス中でなければ root)の直下に置く。
- コピーした内容はアプリ内に持つ。システムのクリップボードからはKLE JSONだけを読む(別のプロジェクトへの貼り付けは当面作らない)。
- クリップボードのKLE JSONを貼り付けで取り込める。幾何だけを読み、新しいIDを振る(KLE取り込みと同じ経路で、手元のデータとは照合しない)。
## 要検討
### モックで試して決める
@@ -76,7 +85,7 @@
- 長押しの詳細: 選択先が上がる間隔、インジケータの見た目、長押しとドラッグの切り分け(長押しで階層を選んでからドラッグに移れるか)。
- 個別回転とクラスター化してからの回転のどちらを主な操作にするか。
- キー割り当て。叩き台をモックに入れて試す。叩き台と残っている問いは [phy-editor-keybindings.md](phy-editor-keybindings.md)。
- グリッドの刻みの候補値。0.25U刻みはズーム1倍で16pxずつ飛び、ドラッグでの細かい調整がしづらい。
- グリッドの刻みの候補値の過不足。初期の候補は [仮決定 T-28](decisions.md#t-28-スナップ)。
- どこまでアイコンのみのボタンにするか。
- ホイールでのカーソル中心ズーム、ホバー時の強調(モックに無い。未議論)。
- バリアントのバッジが隣のバッジやキーと重ならないか。V をグループ内のキーを選んでいるときにも(いちばん近いグループに)効かせるか。
@@ -87,8 +96,7 @@
- タブ名と検証結果欄の呼び方。PHY・ELCなどのレイヤー名は設計上の仮称で、画面に出すかどうかは別途決める。
全エディタに共通するので、PHY Editorとは別に扱う。
- コピー&ペースト(モックに無い。未議論)。新しいIDの振り方と他の層からの参照の扱いはデータモデルの問いで、
メインドキュメント側に置くべきものかもしれない。
- 別のプロジェクトへ貼り付けられるようにする場合、貼り先に同じIDのProfileがない、またはIDが同じで中身が違うときの扱い。
## モックの実装上の問題
+2 -3
View File
@@ -47,7 +47,7 @@ Mac では Ctrl を Cmd に読み替える。1文字のキー(R・G・V など)
| --- | --- | --- |
| 削除 | Delete / Backspace | Mac のキーボードに Delete キーがないため両方。参照の確認は省かない(合意済み) |
| 複製 | Ctrl+D | |
| コピー・カット・ペースト | Ctrl+C / Ctrl+X / Ctrl+V | キーだけ確保する。新しい ID と他の層からの参照の扱いは未議論 |
| コピー・カット・ペースト | Ctrl+C / Ctrl+X / Ctrl+V | ID と他の層からの参照の扱いは [decisions.md](decisions.md#t-11-id) の T-11 |
| キーを足す | Ins | KLE と同じ |
### E. 表示(データは変わらず、保存もしない)
@@ -57,7 +57,7 @@ Mac では Ctrl を Cmd に読み替える。1文字のキー(R・G・V など)
| 全体表示 / 選択範囲にズーム | Shift+1 / Shift+2 | Figma と同じ。`code` で判定する |
| ズームイン・アウト | `+` / `-` | Ctrl+± はブラウザのズームなので取らない |
| フォーカスモードに入る・出る | Enter / Esc | 合意済み |
| グリッドの刻みを切り替える | G / Shift+G | |
| グリッドの刻みを切り替える | G / Shift+G | 候補と初期値は [decisions.md](decisions.md#t-28-スナップ) の T-28 |
| 表示するバリアントを切り替える | V / Shift+V | 選んでいる VariantGroup の次・前の Variant へ送る |
| 表示のオン・オフ、階層パネルの開閉 | なし | 頻度が低い |
@@ -76,7 +76,6 @@ Mac では Ctrl を Cmd に読み替える。1文字のキー(R・G・V など)
### 残っている問い
- グリッドの刻みの候補値(1U・0.25U と、それより細かい値をいくつ用意するか)。モックで試すか、他者のフィードバックで決める。
- Ins は Mac のキーボードにない。Mac での代わり。
- Ctrl+D(Chrome のブックマーク)をページ側で横取りできるか。