XRInputSource - 描述了单个控制输入源
XRInputSource 是 WebXR 设备 API 的接口,描述了单个控制输入源,它是用户的 WebXR 兼容虚拟或增强现实系统的一部分。该设备特定于所使用的平台,但提供了它的目标方向,如果用户触发器使用该设备执行操作,则可以选择生成事件。
属性
gamepad 只读
一个 Gamepad 对象,用于描述 XR 输入源(如果是游戏手柄或类似设备)上的按钮和轴的状态。如果设备不是类似游戏手柄的设备,则此属性的值为 NULL。
注意: 虽然
XRInputSource使用 Gamepad API 中的Gamepad接口,但此输入设备与 WebXR 硬件关联,并不是通用游戏设备。
gripSpace只读
一个 XRSpace,用于渲染看起来像被握在手掌上的手中的对象。该空间的方向指示手握住对象的角度。请阅读 gripSpace 的相关文章,以获取有关如何使用此空间的更多详细信息。
handedness只读
一个 DOMString,用于指示使用此 XRInputSource 代表的设备在哪只手。该值将为 left,right 或 none。
profiles只读
一个包含 DOMString 对象的数组,每个对象都指定描述此输入源的首选视觉表示和行为的输入配置文件的名称。
targetRayMode只读
一个 DOMString,表示用于产生目标射线的方法:gaze(凝视),tracked-pointer(跟踪指针)或screen(屏幕)。
targetRaySpace只读
一个 XRSpace 对象,用于定义目标射线的原点及其延伸的方向。这个空间是使用由 targetRayMode 定义的方法建立的。
方法
XRInputSource 接口没有定义方法。
使用注意
动作与目标射线
如果设备提供了指向方向的指示,则使用目标射线来完成。它是一条光线,从设备的位置朝其指向的方向向外延伸。
手动控制器发出的目标射线。

如果设备包括触发器或其他可挤压输入,例如识别用户何时握紧拳头的手势设备,则该动作称为主要挤压动作。主要挤压动作应与现实中的抓握动作相对应,例如握住物体或在工具或武器上按下扳机。当挤压动作开始时(例如通过用户按下触发器或拧紧把手),squeezestart 事件将发送到 XRSession。一旦动作完成且用户释放了触发器或握柄,便会发送 squeeze 事件。紧随其后的是 squeezeend,如果操作异常终止而不是完成,也会发送该事件。
如果设备具有按钮或其他可按下的输入控件,则它是主要输入源,而此按钮是主要动作。当用户按下按钮,单击触摸板或指尖的顶部按钮或使用调用类似按钮的手势或语音命令时,可能会发生主要动作。当主要操作开始时,会将 selectstart 事件发送到 XRSession。操作完成后(例如,用户释放按钮时),将发送 select 事件。最终,一旦完成(或者用户中止了操作),就会将 selectend 事件发送到会话对象。
用户可以以某种特定于设备的方式中止操作,或者在完成操作之前断开输入设备的连接。
局部坐标系
每个输入源都有其自己的局部坐标系,该属性由 gripSpace 属性描述,该属性是用于映射地图的 XRSpace 将坐标系输入到世界坐标系中。然后,可以使用握持空间的坐标系来渲染对象,以使它们看起来像握在用户的手中。
有关输入源的坐标系的更多详细信息,请参见详细介绍 gripSpace 属性的文章。
规范
| 规范 | 状态 | 备注 |
|---|---|---|
| WebXR Device API XRInputSource 的定义 |
工作草案 | 初始定义。 |
桌面浏览器兼容性
| 特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| 基础支持 | 79 | 79 | 不支持 | 不支持 | 不支持 | 不支持 |
gamepad | 79 | 79 | 不支持 | 不支持 | 不支持 | 不支持 |
gripSpace | 79 | 79 | 不支持 | 不支持 | 不支持 | 不支持 |
handedness | 79 | 79 | 不支持 | 不支持 | 不支持 | 不支持 |
profiles | 79 | 79 | 不支持 | 不支持 | 不支持 | 不支持 |
targetRayMode | 79 | 79 | 不支持 | 不支持 | 不支持 | 不支持 |
targetRaySpace | 79 | 79 | 不支持 | 不支持 | 不支持 | 不支持 |
移动浏览器兼容性
| 特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
|---|---|---|---|---|---|---|---|
| 基础支持 | 不支持 | 79 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
gamepad | 不支持 | 79 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
gripSpace | 不支持 | 79 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
handedness | 不支持 | 79 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
profiles | 不支持 | 79 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
targetRayMode | 不支持 | 79 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
targetRaySpace | 不支持 | 79 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |