Files
Beyond-KLE/provisional/idx-editor-feedback.md
T
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

6.7 KiB

IDX Editor モックの所感(画面仕様の入力)

モックを触った所感と、それを受けた議論の整理。仕様ではない。 画面仕様を一から作るときの入力にし、仕様へ反映したら消す。

方向が合意できたもの

並べ替え

  • リストを主な操作の場にしない。並べ替えはキャンバス上のキーをドラッグ&ドロップして行う。
  • ドロップで「挿入」と「入れ替え」を区別できるようにする。
    • 挿入: 位置nのキーを、位置iとi+1の間にドロップする。
      • n > i+1 のとき、キーは位置i+1に入り、元のi+1〜n-1は1つずつ後ろへずれる。
      • n < i のとき、キーは位置iに入り、元のn+1〜iは1つずつ前へずれる(通常のリストの移動と同じ)。
    • 入れ替え: 位置iのキーを位置nのキーの上にドロップすると、2つを入れ替える。他のキーは動かない。

プリセット(一括の並べ替え)

  • 種類ごとに個別のプリセットを作らず、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の位置に置けば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でなければ、手前のキーにくっつける。
    • 表示中のキーを別の場所へ動かしても、隠れたキーはその場に残る。

モックの実装上の問題

作り直しで解消する前提で、原因の記録だけ残す。

  • バリアント選択が見つけにくい: 右ペインの「出力構成」見出しの下、キーボード表示の上にあり、並びを編集するリストから離れている。