diff --git a/MAPレイヤー.md b/MAPレイヤー.md index 0e66b48..8bad35c 100644 --- a/MAPレイヤー.md +++ b/MAPレイヤー.md @@ -98,7 +98,25 @@ MAPエディタのUIには、対応しているVIAプロトコルとキーコー 最初に対応する環境は、QMK 0.34.4(commit `08c662f`)とする。このときキーコード体系は0.0.9、VIAプロトコルは0x000D。 VIAは同梱の従来実装(`quantum/via.c`)で、追加のモジュールは使わない。 -レイヤー別の割り当て以外に読み書きする項目は、[P-2](#p-2-viaの初期対応範囲)で扱う。 + +## VIAで読み書きする項目 + +VIAプロトコル0x000Dのコマンドのうち、MAPエディタが扱うものを次のように分ける[推測:P-2]。 + +- 対応する: + - VIAプロトコルとキーコード体系のバージョンの読み出し(実機との照合に使う) + - レイヤー数の読み出し + - レイヤー別のキーコード割り当ての読み書き + - マクロの読み書き(個数・容量の読み出しとリセットを含む) +- 別の課題で扱う: + - エンコーダの割り当て([MAP-P-4](backlog/README.md#map-p-4-onoff以外の入力への割り当て)) + - layout option([P-3](#p-3-プロジェクトと実機の対応状態管理)) +- 当面対応しない: キーマップ・EEPROMのリセット、ブートローダへの移行、デバイスの識別表示、 + マトリクス状態の読み出し(キーテスター)、custom channel(照明・オーディオ・キーボード独自メニュー) + +実機のファームウェアでどの機能が有効かは、VIAでは読み出せない。 +新規キーボードではFirmware Generatorのビルド設定を正とする。既存キーボードでは、利用者が同じ形式で申告した内容を信用する。 +レイヤー数、マクロの個数と容量は実機から読み出し、書き込む前にMAPの内容が収まるかを確認する。 ## 持たないもの @@ -128,11 +146,10 @@ MAPエディタは、キーコードを当面US配列の文字で表示する。 - キーごとに上書きする設定を、PHYのキー、キーとレイヤーの組、キーコードのどれに付けるか。 - 完了条件: 動作定義とキーごとの設定の保存形式をユーザーが決める。 -### P-2 VIAの初期対応範囲 +### P-2 VIAのコマンドはQMK 0.34.4のソースどおりに動作する -- 位置づけ: VIA通信と編集UIの実装に必要な対応範囲の判断。 -- 未決事項: レイヤー別割り当て以外に読み書きする項目、対象ファームウェアの機能・容量制約の確認方法。 -- 完了条件: 読み書きする項目を定め、対応する新規キーボードの構成で必要なコマンドと制約を確認する。 +- 位置づけ: 本文「VIAで読み書きする項目」が前提にしている。コマンドの内容はソース(`quantum/via.c`)と公式文書から確認したもので、実機では検証していない。 +- 格上げ条件: QMK 0.34.4でビルドした新規キーボードの構成で、対応するコマンドの読み書きと、レイヤー数・マクロの個数と容量の読み出しを実機で確認する。 ### P-3 プロジェクトと実機の対応・状態管理 diff --git a/journal/2026-09-24-via-read-write-scope.md b/journal/2026-09-24-via-read-write-scope.md new file mode 100644 index 0000000..0fe17df --- /dev/null +++ b/journal/2026-09-24-via-read-write-scope.md @@ -0,0 +1,33 @@ +# VIAで読み書きする項目と機能・容量の確認方法 + +## 結論 + +- 対応: バージョン読み出し、レイヤー数、キーコード割り当て(まとめ読み書き含む)、マクロ +- 別課題: エンコーダ(MAP-P-4)、layout option(P-3) +- 当面非対応: リセット系・ブートローダ移行、デバイスの識別表示、キーテスター、custom channel +- 有効な機能: 新規キーボードはGeneratorのビルド設定を正とする。既存キーボードは利用者の申告を信用する(ユーザー案)。 + 申告はGeneratorの設定と同じ形式にし、新規と既存を1つのモデルで扱う。 +- 容量(レイヤー数・マクロ個数・容量)は実機から読んで照合する。 +- P-2は判断が済んだので、実機で未検証という推測(P-2)に置き換えた。 + +## 案の比較(VIA 0x000D, QMK 0.34.4 quantum/via.c) + +| 項目 | コマンド | 扱い | 理由 | +| --- | --- | --- | --- | +| プロトコル・キーコード体系バージョン | 0x01, 0x02 id 0x06 | 対応 | 実機照合に必須 | +| レイヤー数 | 0x11 | 対応 | 容量確認 | +| キーコード | 0x04/0x05, 0x12/0x13 | 対応 | MAPの本体 | +| マクロ | 0x0C–0x10 | 対応 | P-1で内容をMAPが持つとした | +| エンコーダ | 0x14/0x15 | 別課題 | MAP-P-4 | +| layout options | 0x02/0x03 id 0x02 | 別課題 | P-3の排他キーの読み戻しと一体 | +| リセット・ブートローダ | 0x06, 0x0A, 0x0B | 当面非対応 | 操作でありMAPのデータではない。0x0Aは VIA_EEPROM_ALLOW_RESET 時のみ | +| デバイスの識別表示 | 0x03 id 0x05 | 当面非対応 | 任意の補助機能 | +| キーテスター | 0x02 id 0x03 | 非対応 | 既定で全0(#25414)。ユーザーも不要と判断 | +| custom channel | 0x07–0x09 | 非対応 | 照明・オーディオはMAP所有外、channel 0は固有コード | + +## 機能・容量の確認 + +- VIAから読めるのは容量(レイヤー数、マクロ個数、マクロバッファサイズ)とバージョンだけ。 + どの機能を有効にしてビルドしたか(タップダンス、コンボ等)は読めない。キーボード固有のVIA定義JSONにも含まれない。 +- 無効な機能のキーコードを書いてもエラーにならず、実機で何もしないだけ。申告の誤りは壊れる方向には働かない。 +- 既存キーボードは初期対応の前提ではない(MAPレイヤー.md「概要」)が、申告方式ならモデルを増やさずに扱える。 diff --git a/keyboard-design-layers.md b/keyboard-design-layers.md index ac01e10..24dff69 100644 --- a/keyboard-design-layers.md +++ b/keyboard-design-layers.md @@ -165,7 +165,7 @@ All → Firmware ## 既存ツールとの関係 - **KLE**: PHYデータを表示できる既存のビュワー。KLE JSONの読み書きで連携する -- **VIA/Remap**: 同じVIA対応実機の割り当てを編集する外部クライアント。外部で調整した結果もMAPエディタで読み出してプロジェクトへ戻す。対応範囲は[MAPのP-2](MAPレイヤー.md#p-2-viaの初期対応範囲)、実機との対応・状態管理は[MAPのP-3](MAPレイヤー.md#p-3-プロジェクトと実機の対応状態管理)で扱う +- **VIA/Remap**: 同じVIA対応実機の割り当てを編集する外部クライアント。外部で調整した結果もMAPエディタで読み出してプロジェクトへ戻す。読み書きする項目は[MAP「VIAで読み書きする項目」](MAPレイヤー.md#viaで読み書きする項目)、実機との対応・状態管理は[MAPのP-3](MAPレイヤー.md#p-3-プロジェクトと実機の対応状態管理)で扱う - **QMK Configurator**: Firmware Generatorのターゲット ## 配慮事項