Compare commits

...
6 Commits
Author SHA1 Message Date
ewdernaandClaude Opus 5.5 cceb9a3e53 map: キーコードの表示を当面US配列とし、表示用OS配列をMAP-P-5で保留する
US/JISの切り替えや他言語対応、IMEレイヤーとの関係は未定。割り当てと
実機との読み書きは表示用の配列と独立に実装できるため保留とする。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CBmwYrXocgCoFJfxVcKSGH
2026-09-23 14:52:17 +09:00
ewdernaandClaude Opus 5.5 cd502e260f backlog: ON/OFF以外の入力への割り当てをMAP-P-4として追加する
エンコーダはPHYで部品ノードとして置かれ、キーIDを参照するMAPからは
割り当てられない。キーへの割り当てはこれを扱わずに実装できるため保留とし、
MAPのP-1(割り当てる動作の範囲)とは独立に扱う。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CBmwYrXocgCoFJfxVcKSGH
2026-09-23 14:52:16 +09:00
ewdernaandClaude Opus 5.5 44035a7915 map: 新規作成したMAPは未割り当てから始める
PHYのラベルからの自動適用は行わない。ラベルからの移植はPHY-P-8として
保留中のため、保留課題にPHYへのリンクを置く。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CBmwYrXocgCoFJfxVcKSGH
2026-09-23 14:51:21 +09:00
ewdernaandClaude Opus 5.5 76406e2f02 map: 実機で調整した割り当てをStaticの初期キーマップへ反映できるようにする
プロジェクトのMAP、組み込んだ初期キーマップ、実機の現在値を区別する。
実機の保存内容を初期化しても調整後の割り当てに戻せるようにするため。
初期キーマップとの差分・反映の操作はP-3で扱う。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CBmwYrXocgCoFJfxVcKSGH
2026-09-23 14:51:21 +09:00
ewdernaandClaude Opus 5.5 46905b1e79 map: P-3に排他キーが実機の割り当て先を共有する問題を追加する
VIAの割り当てはrow/col単位で保存されるため、同じ接続先の排他キーは
実機では1つの割り当て先を共有する。書き込み・読み出しでのPHYキーとの
対応を未決事項と完了条件に加え、未決事項を箇条書きに分けた。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CBmwYrXocgCoFJfxVcKSGH
2026-09-23 14:51:21 +09:00
ewdernaandClaude Opus 5.5 63da6e77d8 map: キーマップレイヤーを並び順と独立した名前で識別する
レイヤーを切り替える動作も名前で参照し、番号へは出力時に並び順から
変換する。並べ替えや挿入で参照先がずれないようにするため。
スキーマのlayerからidを外し、MAP内で一意なnameを識別子とする。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CBmwYrXocgCoFJfxVcKSGH
2026-09-23 14:51:21 +09:00
3 changed files with 52 additions and 5 deletions
+25 -2
View File
@@ -19,6 +19,15 @@ MAPのキー参照にはPHYのキーIDを使い、実機との通信に使うア
レイヤー別のキーコード割り当てを出発点とする。 レイヤー別のキーコード割り当てを出発点とする。
動作定義と保存形式の拡張範囲は、[P-1](#p-1-割り当てる動作と保存形式の範囲)で扱う。 動作定義と保存形式の拡張範囲は、[P-1](#p-1-割り当てる動作と保存形式の範囲)で扱う。
新規作成したMAPは、すべてのキーが未割り当ての状態から始める。
PHYのラベルからの自動適用は行わない([PHY「ラベル」](PHYレイヤー.md#ラベル))。
## キーマップレイヤーの識別
キーマップレイヤーは、並び順と独立した名前で識別する。名前はMAP内で一意とする。
レイヤーを切り替える動作も名前でレイヤーを参照し、番号へは出力時に並び順から変換する。
レイヤーの並べ替えや挿入で参照先がずれないようにするため。IDXがキー番号を正本にしないのと同じ理由による。
## MAPエディタの責務 ## MAPエディタの責務
- PHYの配置を参照し、キーマップレイヤーごとの割り当てを編集・保存する。 - PHYの配置を参照し、キーマップレイヤーごとの割り当てを編集・保存する。
@@ -40,6 +49,10 @@ MAPエディタはDynamicの読み書きを提供する。Dynamicで変更でき
Staticで扱う動作定義の範囲と、Dynamicで変更できない設定の扱いは、 Staticで扱う動作定義の範囲と、Dynamicで変更できない設定の扱いは、
[P-1](#p-1-割り当てる動作と保存形式の範囲)で扱う。 [P-1](#p-1-割り当てる動作と保存形式の範囲)で扱う。
プロジェクトのMAP、Staticで組み込んだ初期キーマップ、実機に保存された現在の割り当ては区別する。
実機で調整してMAPへ取り込んだ割り当ては、Firmware Generatorへの入力としてStaticの初期キーマップへ反映できるようにする。
実機の保存内容を初期化しても、調整後の割り当てに戻せるようにするため。
## 対応プロトコル ## 対応プロトコル
最初に対応する通信プロトコルはVIAとし、対応プロトコルを絞って段階的に増やす。 最初に対応する通信プロトコルはVIAとし、対応プロトコルを絞って段階的に増やす。
@@ -58,9 +71,15 @@ Staticで扱う動作定義の範囲と、Dynamicで変更できない設定の
物理配置、配線、キーの出力番号は、それぞれPHY・ELC・IDXで扱う。 物理配置、配線、キーの出力番号は、それぞれPHY・ELC・IDXで扱う。
OS配列やIMEの入力変換はIME側の責務とし、外部ツールで編集できる照明等の設定も、 OS配列やIMEの入力変換はIME側の責務とし、外部ツールで編集できる照明等の設定も、
VIAで通信できるという理由だけでMAPの所有データには含めない。 VIAで通信できるという理由だけでMAPの所有データには含めない。
MAPエディタは、キーコードを当面US配列の文字で表示する。
アナログ入力の解釈の所属は、[全体方針のP-1](keyboard-design-layers.md#p-1-アナログ値の解釈をどの層が持つか)で扱う。 アナログ入力の解釈の所属は、[全体方針のP-1](keyboard-design-layers.md#p-1-アナログ値の解釈をどの層が持つか)で扱う。
## 保留課題
- [MAPの保留課題](backlog/README.md#map)
- [PHYの保留課題](backlog/README.md#phy)
## 検討済み・非採用 ## 検討済み・非採用
- MAPエディタをStaticに閉じる (journal/2026-09-22-map-via-workflow.md) - MAPエディタをStaticに閉じる (journal/2026-09-22-map-via-workflow.md)
@@ -82,5 +101,9 @@ VIAで通信できるという理由だけでMAPの所有データには含め
### P-3 プロジェクトと実機の対応・状態管理 ### P-3 プロジェクトと実機の対応・状態管理
- 位置づけ: 実機への読み書きをMAPへ結び付けるための設計判断。 - 位置づけ: 実機への読み書きをMAPへ結び付けるための設計判断。
- 未決事項: 出力した構成とPHYキーID・通信上のアドレスの対応をどこに保持し、接続した実機とどう照合するか。バリアントや配線の変更後の扱い、プロジェクトと実機の差分・保存・反映の操作も未定。 - 未決事項:
- 完了条件: 対応情報の生成・保存・照合方法と状態管理を定め、設計から実機へ反映し、Remap等での変更を元のPHYキーIDへの割り当てとして取り込む手順を確認する。 - 出力した構成とPHYキーID・通信上のアドレスの対応をどこに保持し、接続した実機とどう照合するか。
- VIAの割り当ては接続先(row/col)単位で保存されるため、同じ接続先に配線された排他キーは、実機では1つの割り当て先を共有する。書き込み時に選択外のバリアントのキーの割り当てをどう扱うか、読み出した値をどのPHYキーへ戻すか(実機側のlayout optionの選択に従うか)。
- バリアントや配線の変更後の扱い。
- プロジェクトと実機、プロジェクトとStaticで組み込んだ初期キーマップの差分表示・保存・反映の操作。
- 完了条件: 対応情報の生成・保存・照合方法と状態管理を定め、設計から実機へ反映し、Remap等での変更を元のPHYキーIDへの割り当てとして取り込む手順を確認する。排他キーを含む構成で、書き込みと読み出しがバリアントの選択に従って元のPHYキーへ対応することを確認する。
+22
View File
@@ -98,3 +98,25 @@
- 再開条件: 既存コミュニティレイアウトとの互換出力を検証するとき。 - 再開条件: 既存コミュニティレイアウトとの互換出力を検証するとき。
- 完了条件: 実データのキーを共通キーとバリアント別のPHYキーに対応づけ、全体の `order` から各レイアウトの要求順を取捨で再現できるか確認する。 - 完了条件: 実データのキーを共通キーとバリアント別のPHYキーに対応づけ、全体の `order` から各レイアウトの要求順を取捨で再現できるか確認する。
再現できないものが残る場合は、対応範囲と扱いを決める。 再現できないものが残る場合は、対応範囲と扱いを決める。
## MAP
### MAP-P-4 ON/OFF以外の入力への割り当て
- 関連仕様: [MAPレイヤー](../MAPレイヤー.md)「MAPデータと他レイヤーの関係」、[PHYレイヤー](../PHYレイヤー.md)「部品ノード」
- 未決事項: ロータリーエンコーダの回転のように、ON/OFFのキーではない入力へ割り当てる方法。
MAPはPHYのキーIDを参照するが、エンコーダはPHYで部品ノードとして置かれる。
参照先の種類、入力ごとの割り当て先(回転方向など)、VIAでの読み書きの対象にするかが未定。
アナログ値の解釈の所属は[全体方針のP-1](../keyboard-design-layers.md#p-1-アナログ値の解釈をどの層が持つか)で扱い、この項目とは分ける。
- 保留できる理由: キーへの割り当てと実機との読み書きは、キー以外の入力を扱わなくても実装できる。
- 再開条件: エンコーダ等を載せたキーボードの割り当てをMAPで扱うとき。
- 完了条件: 対象とする入力の種類と、MAPからの参照方法・保存形式をユーザーが決め、VIAで読み書きする場合は必要なコマンドを確認する。
### MAP-P-5 キーコードを表示するOS配列
- 関連仕様: [MAPレイヤー](../MAPレイヤー.md)「持たないもの」、[全体方針のIMEレイヤー](../keyboard-design-layers.md#5-imeレイヤー-入力変換)
- 未決事項: MAPエディタがキーコードをどのOS配列の文字で表示するか。IMEレイヤーの情報を使うか。
少なくともUS/JISの切り替えは欲しい。利用者が増えれば他言語への対応も求められる。
- 保留できる理由: キーコードの割り当てと実機との読み書きは、表示に使うOS配列と独立して実装できる。
- 再開条件: MAPエディタの表示を実装するとき、またはIMEレイヤーの仕様を検討するとき。
- 完了条件: 表示に使うOS配列の指定方法と置き場所、IMEレイヤーとの関係をユーザーが決める。
+5 -3
View File
@@ -646,10 +646,12 @@ ELC・IDX・MAPはどれもPHYを参照する。ELCはIDXを参照せず、MAP
"$defs": { "$defs": {
"layer": { "layer": {
"type": "object", "type": "object",
"required": ["id", "name", "keymap"], "required": ["name", "keymap"],
"properties": { "properties": {
"id": { "type": "integer", "minimum": 0 }, "name": {
"name": { "type": "string" }, "type": "string",
"description": "Layer identifier, unique within the MAP. Layer order is the array order"
},
"keymap": { "keymap": {
"type": "array", "type": "array",
"items": { "items": {