API

Interface XrInputSource

Per-frame state for a single XR input source (controller, gaze, transient pointer).

interface XrInputSource {
    gamepad: Gamepad | null;
    gripMatrix: Float32Array;
    gripTracked: boolean;
    handedness: XrHandedness;
    selecting: boolean;
    source: XRInputSource;
    squeezing: boolean;
    targetRayMatrix: Float32Array;
    targetRayMode: XrTargetRayMode;
    targetRayTracked: boolean;
}
Index
gamepad: Gamepad | null

Associated gamepad (buttons / axes), if the source exposes one.

gripMatrix: Float32Array

World-space grip pose (column-major 4×4). Valid only when gripTracked.

gripTracked: boolean

True when a valid grip pose was obtained for the current frame (false if the source has no grip space).

handedness: XrHandedness

"left", "right", or "none".

selecting: boolean

True between selectstart and selectend.

source: XRInputSource

The underlying WebXR input source.

squeezing: boolean

True between squeezestart and squeezeend.

targetRayMatrix: Float32Array

World-space target-ray pose (column-major 4×4). Valid only when targetRayTracked.

targetRayMode: XrTargetRayMode

How the target ray is produced ("gaze", "tracked-pointer", "screen").

targetRayTracked: boolean

True when a valid target-ray pose was obtained for the current frame.