- Joystick as Unity's base layout: trigger (PrimaryTrigger|PrimaryAction|Submit) and stick (Primary2DMotion); hatswitch and twist are null, as they come with specific joysticks' layouts. current and all.
- TrackedDevice (trackingState, isTracked, devicePosition, deviceRotation) and XR.XRController (leftHand and rightHand: the controllers with that device usage), XRControllerWithRumble; Vector3Control and QuaternionControl (all zeros until reported, as Unity's). The buttons and axes of specific controllers (Primary2DAxis, trigger...) come from layouts Unity builds per headset, which aren't modeled.
- Device usages: InputSystem.SetDeviceUsage, AddDeviceUsage, RemoveDeviceUsage (actions re-resolve; UsageChanged notifies), and paths whose device part names usages (
<XRController>{LeftHand}/devicePosition). CommonUsages. InternedString converts from string explicitly, as Unity's (so SetDeviceUsage(device, null) picks the string overload). - StickControl's children in Unity's order (up, x, y, down, left, right); a control's layout drops only a trailing "Control" from its type (XRController stays XRController).
- DefaultInputActions' joystick and XR bindings use usages, as Unity's.
- Checked by joystick_xr, recorded in Unity 6000.3 (exact).
- Next: reading real joysticks; URP render features; humanoid avatars and retargeting.
Phase 6 · Slice 54 ·