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:
+6
-9
@@ -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
|
```ts
|
||||||
type Transform = {
|
type Transform = {
|
||||||
@@ -98,7 +100,8 @@ type Key = {
|
|||||||
profile: Profile,
|
profile: Profile,
|
||||||
decal?: boolean,
|
decal?: boolean,
|
||||||
ghost?: boolean,
|
ghost?: boolean,
|
||||||
labels?: string[] // 参考情報
|
labels?: string[], // 参考情報
|
||||||
|
switchOffset?: { x: number, y: number } // (w, h) 矩形の中心から。省略時は0
|
||||||
}
|
}
|
||||||
type Cluster = {
|
type Cluster = {
|
||||||
transform: Transform,
|
transform: Transform,
|
||||||
@@ -202,12 +205,6 @@ KLEの rx, ry, r はキーの絶対配置 (x, y, rotation) に変換して取り
|
|||||||
- 現状の認識: 採用しない可能性が高い。ただし代わりに欲しい機能があり、それを思い出すきっかけとして残している
|
- 現状の認識: 採用しない可能性が高い。ただし代わりに欲しい機能があり、それを思い出すきっかけとして残している
|
||||||
- 格上げ条件: 代わりの機能を定義し、この推定を採るか捨てるかをユーザーが決める
|
- 格上げ条件: 代わりの機能を定義し、この推定を採るか捨てるかをユーザーが決める
|
||||||
|
|
||||||
### P-5 キャップ形状とスイッチ位置の関係
|
|
||||||
|
|
||||||
- 位置づけ: 本文「キャップの位置・サイズからスイッチ座標を特定する」と食い違う事実がある
|
|
||||||
- 現状の認識: Stepped Caps Lockのように、スイッチ位置がキャップ中心からずれるキーがある。一方でステップキー(KLEの l)なら必ずずれるわけではない(昔のXFERなど)。キャップ形状だけではスイッチ位置が決まらない
|
|
||||||
- 格上げ条件: キャップに対するスイッチ位置の表し方(オフセットを持つか等)を決め、本文と Key 型を改める
|
|
||||||
|
|
||||||
### P-6 キーキャップの見た目情報を持つ層
|
### P-6 キーキャップの見た目情報を持つ層
|
||||||
|
|
||||||
- 位置づけ: 本文「見た目の属性は保持する。どの層で持つかは決まっていない」の未解決部分
|
- 位置づけ: 本文「見た目の属性は保持する。どの層で持つかは決まっていない」の未解決部分
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# スイッチ位置のオフセット (旧 PHY P-5)
|
||||||
|
|
||||||
|
## 結論
|
||||||
|
|
||||||
|
スイッチ位置はキーごとのオフセットとしてPHYで持つ。基準はキャップの (w, h) 矩形の中心、既定値0、単位U、キーのローカル座標系。
|
||||||
|
|
||||||
|
## 案の比較
|
||||||
|
|
||||||
|
| 案 | 採否 |
|
||||||
|
|---|---|
|
||||||
|
| キャップ形状(l 等)からスイッチ位置を導出 | 不可。l でもずれないキーがある(昔のXFER) |
|
||||||
|
| キーごとにオフセットを持つ | 採用 |
|
||||||
|
| PHY以外の層(キーキャップ層など)で持つ | 不採用 |
|
||||||
|
|
||||||
|
## 根拠
|
||||||
|
|
||||||
|
- Stepped Caps Lockなど、スイッチがキャップ中心からずれるキーがある(ユーザー提供の事実)
|
||||||
|
- ずれるかどうかはキャップ形状から決まらないので、キーごとに持つしかない
|
||||||
|
- スイッチ位置はPCB・プレートの配置を決める物理情報であり、PHYの責務。キーキャップの見た目情報が別層に移っても(P-6)、
|
||||||
|
キャップ外形とスイッチの相対位置は配置そのものなのでPHYに残る
|
||||||
|
- ローカル座標系にしたのは、キーの回転に追従させるため
|
||||||
Reference in New Issue
Block a user