PHY: スイッチ位置をキーごとのオフセットとして持つ(P-5解消)

キャップ形状からはスイッチ位置が決まらない(Stepped Caps Lockはずれ、XFERはずれない)ため、
(w, h) 矩形の中心からのオフセットをキーのローカル座標系で持つ。既定値0。

Journal: journal/2026-09-19-switch-offset.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-19 11:15:03 +09:00
co-authored by Claude Opus 5
parent 13df64f6ff
commit f6ca7434bc
2 changed files with 27 additions and 9 deletions
+6 -9
View File
@@ -9,7 +9,9 @@ PHYレイヤーは、キースイッチやキーキャップ、その他周辺
### キースイッチ/キーキャップの配置
各キーはスイッチ・キャップの情報を統合された状態で持ち、キャップの位置・サイズからスイッチ座標を特定する。
各キーはスイッチ・キャップの情報を統合された状態で持つ。
スイッチ位置は、キャップの (w, h) 矩形の中心からのオフセットとしてキーごとに持つ(既定値0、単位U、キーのローカル座標系)。
Stepped Caps Lockのようにスイッチがキャップ中心からずれるキーがあり、キャップ形状だけではスイッチ位置が決まらないため。
以下、単に「キー」と呼ぶ場合、キーキャップの位置・サイズを表すオブジェクトをさすこととする。
### プロファイル設定
@@ -76,7 +78,7 @@ ISO Enterのように長方形でないキーは、サイズに2つ目の矩形(
各ノードは親から見た変換を持つ。キーとクラスターを混在させた木構造として保持する。
`phase1-json-schema.md` のPHYスキーマは、この節の Key 型(x2〜h2, decal, ghost, labels)にまだ追従していない。
`phase1-json-schema.md` のPHYスキーマは、この節の Key 型(x2〜h2, decal, ghost, labels, switchOffset)にまだ追従していない。
```ts
type Transform = {
@@ -98,7 +100,8 @@ type Key = {
profile: Profile,
decal?: boolean,
ghost?: boolean,
labels?: string[] // 参考情報
labels?: string[], // 参考情報
switchOffset?: { x: number, y: number } // (w, h) 矩形の中心から。省略時は0
}
type Cluster = {
transform: Transform,
@@ -202,12 +205,6 @@ KLEの rx, ry, r はキーの絶対配置 (x, y, rotation) に変換して取り
- 現状の認識: 採用しない可能性が高い。ただし代わりに欲しい機能があり、それを思い出すきっかけとして残している
- 格上げ条件: 代わりの機能を定義し、この推定を採るか捨てるかをユーザーが決める
### P-5 キャップ形状とスイッチ位置の関係
- 位置づけ: 本文「キャップの位置・サイズからスイッチ座標を特定する」と食い違う事実がある
- 現状の認識: Stepped Caps Lockのように、スイッチ位置がキャップ中心からずれるキーがある。一方でステップキー(KLEの l)なら必ずずれるわけではない(昔のXFERなど)。キャップ形状だけではスイッチ位置が決まらない
- 格上げ条件: キャップに対するスイッチ位置の表し方(オフセットを持つか等)を決め、本文と Key 型を改める
### P-6 キーキャップの見た目情報を持つ層
- 位置づけ: 本文「見た目の属性は保持する。どの層で持つかは決まっていない」の未解決部分