diff --git a/implementation-plan.md b/implementation-plan.md index aab3c70..24b5ecd 100644 --- a/implementation-plan.md +++ b/implementation-plan.md @@ -13,10 +13,30 @@ PHYの正本は相対座標の木だが、既存エディタ(KLE, kle-ng)の移 ### テストケース -1. **60% ANSI** - 標準的なレイアウト -2. **Split keyboard** - 左右分離型 -3. **Ergonomic layout** - カラムスタッガード + 回転 -4. **Macro pad** - シンプルな4x4 +入力はKLE JSONとし、取り込みを通してPHYへ変換する。 + +| ケース | サンプル | 主に確かめること | +|---|---|---| +| 60% | Cr0wn60 | 行スタッガード、幅の違うキー、左右対称配列の中央の隙間 | +| 分割 | crkbd、jisplit89 | 左右の分離、カラムスタッガードと回転した親指キー(crkbd)、キー数の多いJIS配列の分割(jisplit89) | +| 分割 + バリアント | Kyria、Iris Rev.7 | 回転したクラスター内のバリアント(Kyria)、部品(エンコーダ)を含む3択のバリアント(Iris Rev.7) | +| マクロパッド | 4x4 | 最小構成 | + +リポジトリに置くサンプルは `samples/kle/` にある。 + +- `cr0wn60.json`: [EwdErna/Cr0wn60](https://github.com/EwdErna/Cr0wn60) の `keyboard-layout.json`(919cc9e、MIT) +- `macropad-4x4.json`: このリポジトリで作成 + +その他はコピーせず、[the-via/keyboards](https://github.com/the-via/keyboards)(GPL-3.0)から、コミット 9e3e9f4 の次のファイルの `layouts.keymap` を取得して使う。 + +- crkbd: `src/crkbd/crkbd.json` +- jisplit89: `src/jisplit89/jisplit89.json` +- Kyria: `src/splitkb/kyria.json` +- Iris Rev.7: `src/keebio/iris/iris-rev7.json` + +VIAの定義に含まれるKLE JSONは、ラベルにキー名ではなくマトリクス位置(`行,列`)を持つ。 +バリアントは、ラベルの別の欄に `選択肢の番号,候補の番号` の形で示す。 +キー名のラベルによる照合の検証には使えない。ELCの接続先とバリアントの検証に使う。 ### データ例 diff --git a/samples/kle/cr0wn60.json b/samples/kle/cr0wn60.json new file mode 100644 index 0000000..bffa679 --- /dev/null +++ b/samples/kle/cr0wn60.json @@ -0,0 +1,173 @@ +[ + [ + { + "p": "DCS R1" + }, + "Esc", + { + "x": 0.25 + }, + "!\n1", + "@\n2", + "#\n3", + "$\n4", + "%\n5", + { + "x": 1 + }, + "^\n6", + "&\n7", + "*\n8", + "(\n9", + ")\n0", + "_\n-", + { + "x": 0.75 + }, + "+\n=" + ], + [ + { + "p": "DCS R2", + "a": 0, + "w": 1.5 + }, + "Tab\n\n\n\n\n1.5", + { + "a": 4 + }, + "Q", + "W", + "E", + "R", + "T", + { + "x": 0.5 + }, + "Y", + "U", + "I", + "O", + "P", + "{\n[", + { + "x": 0.5, + "a": 0, + "w": 1.5 + }, + "Backspace\n\n\n\n\n1.5" + ], + [ + { + "p": "DCS R3", + "w": 1.75 + }, + "Ctrl\n\n\n\n\n1.75", + { + "a": 4 + }, + "A", + "S", + "D", + "F", + "G", + "H", + "J", + "K", + "L", + ":\n;", + "\"\n'", + { + "a": 0, + "w": 2.25 + }, + "Enter\n\n\n\n\n2.25" + ], + [ + { + "p": "DCS R4", + "w": 1.25 + }, + "Shift\n\n\n\n\n1.25", + { + "x": 0.25, + "a": 4 + }, + "Z", + "X", + "C", + "V", + "B", + { + "x": 0.5 + }, + "N", + "M", + "<\n,", + ">\n.", + "?\n/", + "|\n\\", + { + "x": 0.25, + "a": 0, + "w": 1.75 + }, + "Shift\n\n\n\n\n1.75" + ], + [ + { + "x": 1.25, + "w": 1.25 + }, + "Win\n\n\n\n\n1.25", + { + "w": 1.25 + }, + "Alt\n\n\n\n\n1.25", + { + "x": 6.5, + "w": 1.25 + }, + "Alt\n\n\n\n\n1.25", + { + "w": 1.25 + }, + "Ctrl\n\n\n\n\n1.25" + ], + [ + { + "r": 180, + "rx": 4.5, + "ry": 4.5, + "y": -0.5, + "x": -0.25, + "a": 4 + }, + "\n\n\nFn" + ], + [ + { + "rx": 6.75, + "y": -0.5, + "x": -2.5, + "p": "DCS SPACE", + "a": 3, + "w": 2.25 + }, + "\n\n\n\n\n2.25", + { + "w": 2.25 + }, + "\n\n\n\n\n2.25" + ], + [ + { + "rx": 9.5, + "y": -0.5, + "x": -0.75, + "p": "DCS R4", + "a": 4 + }, + "\n\n\nCode" + ] +] \ No newline at end of file diff --git a/samples/kle/macropad-4x4.json b/samples/kle/macropad-4x4.json new file mode 100644 index 0000000..10ad757 --- /dev/null +++ b/samples/kle/macropad-4x4.json @@ -0,0 +1,6 @@ +[ + ["7", "8", "9", "/"], + ["4", "5", "6", "*"], + ["1", "2", "3", "-"], + ["0", ".", "Enter", "+"] +]