Input
Keyboard, Xbox controller, and iPhone IMU input nodes all exist. Keyboard and iPhone IMU are real, running code on the current Spine transport, verified as part of the live keyboard-controller/iphone_imu → Kinematic Engine → CrackHead pipeline. Xbox Controller is documented here on the same assumption as the other two — a [4][4]float64 delta transform — though unlike the other two, there's no code for it in this checkout to confirm that against.
What each one publishes
| Node | Publishes | Notes |
|---|---|---|
| Keyboard | [4][4]float64 | Direct translation deltas from held keys |
| iPhone IMU | [4][4]float64 | Computed rotation-only delta from consecutive orientation readings |
| Xbox Controller | [4][4]float64 (assumed) | No code exists here to confirm against — documented on the same shape as the other two for consistency, not verified |
All three publish (or are assumed to publish) the same shape, matching the Architecture page's target of every input node normalizing to one transform before it reaches Purifier.
Current API
Keyboard and iPhone IMU both use the current spine.CreateNode/spine.NewPublisher API (see spine-go) — the actual input-capture logic (the ebiten window loop for keyboard, the UDP listener for iPhone IMU) is unchanged from earlier, only the Spine wiring was ported. Both default to namespace "rime", not "common" — see Troubleshooting for what that means.
See also
- Architecture — how filtered input is meant to reach the Robot Controller
- Purifier — the planned downstream consumer