user: Show practical ways to work with XrEventData(bpy_struct) in a Blender add-on or script – include code.

assistant: # XrEventData(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.XrEventData(*bpy_struct*)
:   XR Data for Window Manager Event

    action
    :   XR action name

        Type:
        :   string, default “”, (readonly, never None)

    action_set
    :   XR action set name

        Type:
        :   string, default “”, (readonly, never None)

    bimanual
    :   Whether bimanual interaction is occurring

        Type:
        :   boolean, default False, (readonly)

    controller_location
    :   Location of the action’s corresponding controller aim in world space

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], default (0.0, 0.0, 0.0), (readonly)

    controller_location_other
    :   Controller aim location of the other user path for bimanual actions

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], default (0.0, 0.0, 0.0), (readonly)

    controller_rotation
    :   Rotation of the action’s corresponding controller aim in world space

        Type:
        :   [`mathutils.Quaternion`](mathutils.html#mathutils.Quaternion "mathutils.Quaternion") rotation of 4 items in [-inf, inf], default (0.0, 0.0, 0.0, 0.0), (readonly)

    controller_rotation_other
    :   Controller aim rotation of the other user path for bimanual actions

        Type:
        :   [`mathutils.Quaternion`](mathutils.html#mathutils.Quaternion "mathutils.Quaternion") rotation of 4 items in [-inf, inf], default (0.0, 0.0, 0.0, 0.0), (readonly)

    float_threshold
    :   Input threshold for float/2D vector actions

        Type:
        :   float in [-inf, inf], default 0.0, (readonly)

    state
    :   XR action values corresponding to type

        Type:
        :   float array of 2 items in [-inf, inf], default (0.0, 0.0), (readonly)

    state_other
    :   State of the other user path for bimanual actions

        Type:
        :   float array of 2 items in [-inf, inf], default (0.0, 0.0), (readonly)

    type
    :   XR action type

        - `FLOAT`
          Float – Float action, representing either a digital or analog button.
        - `VECTOR2D`
          Vector2D – 2D float vector action, representing a thumbstick or trackpad.
        - `POSE`
          Pose – 3D pose action, representing a controller’s location and rotation.
        - `VIBRATION`
          Vibration – Haptic vibration output action, to be applied with a duration, frequency, and amplitude.

        Type:
        :   enum in [`'FLOAT'`, `'VECTOR2D'`, `'POSE'`, `'VIBRATION'`], default `'FLOAT'`, (readonly)

    user_path
    :   User path of the action. E.g. “/user/hand/left”

        Type:
        :   string, default “”, (readonly, never None)

    user_path_other
    :   Other user path, for bimanual actions. E.g. “/user/hand/right”

        Type:
        :   string, default “”, (readonly, never None)

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   [type](#bpy.types.XrEventData.type "bpy.types.XrEventData.type")