files/en-us/web/api/xrinputsourceschangeevent/index.md
{{APIRef("WebXR Device API")}} {{SecureContext_Header}}
The WebXR Device API interface XRInputSourcesChangeEvent is used to represent the {{domxref("XRSession.inputsourceschange_event", "inputsourceschange")}} event sent to an {{domxref("XRSession")}} when the set of available WebXR input controllers changes.
{{InheritanceDiagram}}
XRInputSourcesChangeEvent object. The specified type must be inputsourceschange, which is the only event that uses this interface.While XRInputSourcesChangeEvent defines no methods of its own, it inherits methods from its parent interface, {{domxref("Event")}}.
The following example shows how to set up an event handler which uses inputsourceschange events to detect newly-available pointing devices and to load their models in preparation to display them in the next animation frame.
xrSession.addEventListener("inputsourceschange", onInputSourcesChange);
function onInputSourcesChange(event) {
for (const input of event.added) {
if (input.targetRayMode === "tracked-pointer") {
loadControllerMesh(input);
}
}
}
You can also add a handler for inputsourceschange events by setting the oninputsourceschange event handler:
xrSession.oninputsourceschange = onInputSourcesChange;
{{Specifications}}
{{Compat}}