diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..453527f --- /dev/null +++ b/.clang-format @@ -0,0 +1,8 @@ +--- +# Use defaults from the Google style with the following exceptions: +BasedOnStyle: Google +IndentWidth: 4 +AccessModifierOffset: -2 +ColumnLimit: 132 +SortIncludes: false +... diff --git a/api-layer/generate.py b/api-layer/generate.py index 95dcbc2..5ba0306 100644 --- a/api-layer/generate.py +++ b/api-layer/generate.py @@ -359,6 +359,7 @@ def dump(file, indent, depth, element): "xrSuggestInteractionProfileBindings", "xrAttachSessionActionSets", "xrGetCurrentInteractionProfile", + "xrEnumerateEnvironmentBlendModes", ] supported_commands = [ diff --git a/api-layer/generate_placeholder_actions.py b/api-layer/generate_placeholder_actions.py index eafc350..65339e3 100644 --- a/api-layer/generate_placeholder_actions.py +++ b/api-layer/generate_placeholder_actions.py @@ -20,10 +20,13 @@ # import sys +list_join_str = ",\n " + well_known_strings = set() +path_spec_list = [] # As of 1.0.11, these are the paths for input allowlist, from semantic_paths.adoc -path_specs = """ +simple_controller_paths = """ Path: pathname:/interaction_profiles/khr/simple_controller * pathname:/user/hand/left * pathname:/user/hand/right @@ -32,6 +35,10 @@ * subpathname:/input/grip/pose * subpathname:/input/aim/pose * subpathname:/output/haptic +""" +path_spec_list.append(simple_controller_paths) + +daydream_paths = """ Path: pathname:/interaction_profiles/google/daydream_controller * pathname:/user/hand/left * pathname:/user/hand/right @@ -42,6 +49,10 @@ * subpathname:/input/trackpad/touch * subpathname:/input/grip/pose * subpathname:/input/aim/pose +""" +path_spec_list.append(daydream_paths) + +vive_paths = """ Path: pathname:/interaction_profiles/htc/vive_controller * pathname:/user/hand/left * pathname:/user/hand/right @@ -63,7 +74,19 @@ * subpathname:/input/volume_up/click * subpathname:/input/volume_down/click * subpathname:/input/mute_mic/click +""" +path_spec_list.append(vive_paths) + +microsoft_top_path = """ Path: pathname:/interaction_profiles/microsoft/motion_controller +""" + +samsung_top_path = """ +Path: pathname:/interaction_profiles/samsung/odyssey_controller +EXTENSION:XR_EXT_SAMSUNG_ODYSSEY_CONTROLLER_EXTENSION_NAME +""" + +microsoft_samsung_common_paths = """ * pathname:/user/hand/left * pathname:/user/hand/right * subpathname:/input/menu/click @@ -79,6 +102,11 @@ * subpathname:/input/grip/pose * subpathname:/input/aim/pose * subpathname:/output/haptic +""" + +path_spec_list.extend([microsoft_top_path, microsoft_samsung_common_paths, samsung_top_path, microsoft_samsung_common_paths]); + +xbox_paths = """ Path: pathname:/interaction_profiles/microsoft/xbox_controller * pathname:/user/gamepad * subpathname:/input/menu/click @@ -105,6 +133,10 @@ * subpathname:/output/haptic_right * subpathname:/output/haptic_left_trigger * subpathname:/output/haptic_right_trigger +""" +path_spec_list.append(xbox_paths) + +occulus_paths = """ Path: pathname:/interaction_profiles/oculus/go_controller * pathname:/user/hand/left * pathname:/user/hand/right @@ -143,6 +175,10 @@ * subpathname:/input/grip/pose * subpathname:/input/aim/pose * subpathname:/output/haptic +""" +path_spec_list.append(occulus_paths) + +valve_paths = """ Path: pathname:/interaction_profiles/valve/index_controller * pathname:/user/hand/left * pathname:/user/hand/right @@ -169,12 +205,14 @@ * subpathname:/input/aim/pose * subpathname:/output/haptic """ +path_spec_list.append(valve_paths) # From XR_EXT_hp_mixed_reality_controller (which the MSFT "Demo Scene" # provides profile bindings for and is chosen for the Samsung Odyssey # controllers, edited to match what this script expects -path_specs = path_specs + """ +hp_mrc_paths = """ Path: pathname:/interaction_profiles/hp/mixed_reality_controller +EXTENSION:XR_EXT_HP_MIXED_REALITY_CONTROLLER_EXTENSION_NAME * pathname:/user/hand/left * pathname:/user/hand/right * On pathname:/user/hand/left only @@ -194,15 +232,72 @@ * subpathname:/input/aim/pose * subpathname:/output/haptic """ +path_spec_list.append(hp_mrc_paths) + +eye_gaze_paths = """ +Path: pathname:/interaction_profiles/ext/eye_gaze_interaction +EXTENSION:XR_EXT_EYE_GAZE_INTERACTION_EXTENSION_NAME +* pathname:/user/eyes_ext +* subpathname:/input/gaze_ext/pose +""" +path_spec_list.append(eye_gaze_paths) + +vive_cosmos_paths = """ +Path: pathname:/interaction_profiles/htc/vive_cosmos_controller +EXTENSION:XR_HTC_VIVE_COSMOS_CONTROLLER_INTERACTION_EXTENSION_NAME +* pathname:/user/hand/left +* pathname:/user/hand/right +* On pathname:/user/hand/left only: +** subpathname:/input/x/click +** subpathname:/input/y/click +** subpathname:/input/menu/click +* On pathname:/user/hand/right only: +** subpathname:/input/a/click +** subpathname:/input/b/click +** subpathname:/input/system/click + use) +* subpathname:/input/shoulder/click +* subpathname:/input/squeeze/click +* subpathname:/input/trigger/click +* subpathname:/input/trigger/value +* subpathname:/input/thumbstick/x +* subpathname:/input/thumbstick/y +* subpathname:/input/thumbstick/click +* subpathname:/input/thumbstick/touch +* subpathname:/input/grip/pose +* subpathname:/input/aim/pose +* subpathname:/output/haptic +""" +path_spec_list.append(vive_cosmos_paths) + +# Microsoft Hand Controller -- Hand interaction profile +msft_hand_controller = """ +Path: pathname:/interaction_profiles/microsoft/hand_interaction +EXTENSION:XR_MSFT_HAND_INTERACTION_EXTENSION_NAME +* pathname:/user/hand/left +* pathname:/user/hand/right +* subpathname:/input/select/value +* subpathname:/input/squeeze/value +* subpathname:/input/aim/pose +* subpathname/input/grip/pose +""" +path_spec_list.append(msft_hand_controller) placeholder_profiles = {} -for l in path_specs.splitlines(): +profile_extension = {} +extensions = set() +for l in "\n".join(path_spec_list).splitlines(): if l.startswith("Path: pathname:"): profile = l.split(":")[2] # print("profile %s" % profile) well_known_strings.add(profile) placeholder_profiles[profile] = {} pathnames = [] + profile_extension[profile] = [] + elif l.startswith("EXTENSION:"): + extension_name = l.split(":")[1] + profile_extension[profile].append(extension_name) + extensions.add(extension_name) elif l.startswith("* pathname:"): top_level = l.split(":")[1] # print(" top level path %s" % top_level) @@ -239,22 +334,63 @@ # don't add upper component for vector2f here # that's added below, once, for just .x + def to_upper_snake(str) : return "_".join([s.upper() for s in str[1:].split("/")]) +# Construct the well known string enum and map num = 1 well_known_enums = "" well_known_mappings = "" -for str in well_known_strings: - well_known_enums += " " + to_upper_snake(str) + " = %d,\n" % num - well_known_mappings += " {" + to_upper_snake(str) + ', "' + str + '"},\n' +well_known_dict = {} # The extension enum will find this useful +for str in sorted(well_known_strings): + enum_name = to_upper_snake(str) + well_known_dict[str] = enum_name + well_known_enums += " " + enum_name + " = %d,\n" % num + well_known_mappings += " {" + enum_name + ', "' + str + '"},\n' num += 1 +# Construct the extension mask enum and map +ext_none_bit = "REQ_EXTENSION_NONE_MASK" +ext_masks = list() +ext_masks.append(f"{ext_none_bit} = 0") +ext_bit = 0; +ext_bits = {} +ext_bit_list = [] +for ext in sorted(extensions): + bit_name = "REQ_" + ext[3:-15] + "_BIT" + ext_bits[ext] = bit_name + ext_masks.append(f"{bit_name} = (1 << {ext_bit})") + ext_bit_list.append(f'{{{ext}, {bit_name}}}') # No quotes because the ext is the name of a #define string literal + ext_bit += 1 + +def profile_extension_mask(profile): + return "REQ_" + well_known_dict[profile] + "_MASK" + +for profile in sorted(profile_extension.keys()): + ext_list = profile_extension[profile] + enum_name = profile_extension_mask(profile) + if (ext_list): + ext_mask = " | ".join([ext_bits[e] for e in ext_list]) + if len(ext_list) > 1 : + ext_mask = "(" + ext_mask + ")" + else: + ext_mask = ext_none_bit + ext_masks.append(f"{enum_name} = {ext_mask}") + + + +# Construct the placeholder entries placeholder_ids = "" -for (profile, top_levels) in placeholder_profiles.items(): - for (top_level, components) in top_levels.items(): - for component in components: +extension_map_list = [] +for profile in sorted(placeholder_profiles.keys()): + top_levels = placeholder_profiles[profile] + ext_list = ", ".join(profile_extension[profile]) + extension_map_list.append(f"{{{well_known_dict[profile]}, {profile_extension_mask(profile)}}}") + for top_level in sorted(top_levels.keys()): + components = top_levels[top_level] + for component in sorted(components): if component.endswith("value") or component.endswith("x") or component.endswith("y") or component.endswith("force") or component.endswith("touch"): type = "XR_ACTION_TYPE_FLOAT_INPUT" elif component.endswith("click"): @@ -271,20 +407,43 @@ def to_upper_snake(str) : placeholder_ids += ' {"' + profile + top_level + component[:-2] + '", XR_ACTION_TYPE_VECTOR2F_INPUT, ' + to_upper_snake(profile) + ", " + to_upper_snake(top_level) + ", " + to_upper_snake(component[:-2]) + ", " + to_upper_snake(top_level + component[:-2]) + "},\n" -well_known = f""" +well_known_decl = f""" +// All applications within an overlay session must use the same version of the overlay layer to ensure compatibility, or the some +// RPC to share the main overlay's enum -> string map must be added. enum WellKnownStringIndex {{ NULL_PATH = 0, {well_known_enums} -}}; // Existing entries will need to not change for subsequent versions for backward compatibility after the first public release +}}; + +""" + +ext_req_type = "ProfileExtensionReqMask" +ext_enum_decl = f""" +enum {ext_req_type} {{ + {list_join_str.join(ext_masks)} +}}; + +""" +well_known_def = f""" std::unordered_map OverlaysLayerWellKnownStrings = {{ {well_known_mappings} }}; """ -placeholders = f""" +extension_map_def = f""" +std::unordered_map ExtensionsBits = {{ + {list_join_str.join(ext_bit_list)} +}}; + +std::unordered_map ProfileExtensions = {{ + {list_join_str.join(extension_map_list)} +}}; +""" + +placeholders = f""" struct PlaceholderActionId {{ std::string name; @@ -299,8 +458,12 @@ def to_upper_snake(str) : {{ {placeholder_ids} }}; + """ -print(well_known,) +print(well_known_decl) +print(ext_enum_decl) +print(extension_map_def) +print(well_known_def) print(placeholders) diff --git a/api-layer/overlays.cpp b/api-layer/overlays.cpp index be9872a..33b839a 100644 --- a/api-layer/overlays.cpp +++ b/api-layer/overlays.cpp @@ -87,179 +87,212 @@ void LogToFile(const char *str) } } -std::unordered_map OverlaysLayerWellKnownStrings = { - {USER_HAND_LEFT_INPUT_GRIP_POSE, "/user/hand/left/input/grip/pose"}, - {USER_HAND_LEFT_INPUT_Y_TOUCH, "/user/hand/left/input/y/touch"}, - {INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, "/interaction_profiles/oculus/go_controller"}, - {INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, "/interaction_profiles/htc/vive_controller"}, - {USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK, "/user/hand/right/input/trackpad/click"}, - {INPUT_SELECT_CLICK, "/input/select/click"}, - {USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_Y, "/user/gamepad/input/thumbstick_left/y"}, - {USER_HAND_LEFT_INPUT_Y_CLICK, "/user/hand/left/input/y/click"}, +std::unordered_map ExtensionsBits = { + {XR_EXT_EYE_GAZE_INTERACTION_EXTENSION_NAME, REQ_EXT_EYE_GAZE_INTERACTION_BIT}, + {XR_EXT_HP_MIXED_REALITY_CONTROLLER_EXTENSION_NAME, REQ_EXT_HP_MIXED_REALITY_CONTROLLER_BIT}, + {XR_EXT_SAMSUNG_ODYSSEY_CONTROLLER_EXTENSION_NAME, REQ_EXT_SAMSUNG_ODYSSEY_CONTROLLER_BIT}, + {XR_HTC_VIVE_COSMOS_CONTROLLER_INTERACTION_EXTENSION_NAME, REQ_HTC_VIVE_COSMOS_CONTROLLER_INTERACTION_BIT}, + {XR_MSFT_HAND_INTERACTION_EXTENSION_NAME, REQ_MSFT_HAND_INTERACTION_BIT}}; + +std::unordered_map ProfileExtensions = { + {INTERACTION_PROFILES_EXT_EYE_GAZE_INTERACTION, REQ_INTERACTION_PROFILES_EXT_EYE_GAZE_INTERACTION_MASK}, + {INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, REQ_INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER_MASK}, + {INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, REQ_INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER_MASK}, + {INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, REQ_INTERACTION_PROFILES_HTC_VIVE_CONTROLLER_MASK}, + {INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, REQ_INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER_MASK}, + {INTERACTION_PROFILES_HTC_VIVE_PRO, REQ_INTERACTION_PROFILES_HTC_VIVE_PRO_MASK}, + {INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, REQ_INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER_MASK}, + {INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION, REQ_INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION_MASK}, + {INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, REQ_INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER_MASK}, + {INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, REQ_INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER_MASK}, + {INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, REQ_INTERACTION_PROFILES_OCULUS_GO_CONTROLLER_MASK}, + {INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, REQ_INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER_MASK}, + {INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, REQ_INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER_MASK}, + {INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, REQ_INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER_MASK}}; + +std::unordered_map OverlaysLayerWellKnownStrings = { + {INPUT_A_CLICK, "/input/a/click"}, + {INPUT_A_TOUCH, "/input/a/touch"}, + {INPUT_AIM_POSE, "/input/aim/pose"}, + {INPUT_B_CLICK, "/input/b/click"}, {INPUT_B_TOUCH, "/input/b/touch"}, - {USER_HAND_RIGHT_INPUT_MENU_CLICK, "/user/hand/right/input/menu/click"}, - {INTERACTION_PROFILES_HTC_VIVE_PRO, "/interaction_profiles/htc/vive_pro"}, - {INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, "/interaction_profiles/microsoft/motion_controller"}, - {USER_HAND_LEFT_INPUT_A_CLICK, "/user/hand/left/input/a/click"}, - {INPUT_X_TOUCH, "/input/x/touch"}, - {USER_HAND_LEFT_INPUT_THUMBSTICK, "/user/hand/left/input/thumbstick"}, - {INPUT_TRACKPAD_FORCE, "/input/trackpad/force"}, - {INPUT_THUMBSTICK_RIGHT, "/input/thumbstick_right"}, + {INPUT_BACK_CLICK, "/input/back/click"}, + {INPUT_DPAD_DOWN_CLICK, "/input/dpad_down/click"}, + {INPUT_DPAD_LEFT_CLICK, "/input/dpad_left/click"}, + {INPUT_DPAD_RIGHT_CLICK, "/input/dpad_right/click"}, + {INPUT_DPAD_UP_CLICK, "/input/dpad_up/click"}, + {INPUT_GAZE_EXT_POSE, "/input/gaze_ext/pose"}, + {INPUT_GRIP_POSE, "/input/grip/pose"}, + {INPUT_MENU_CLICK, "/input/menu/click"}, + {INPUT_MUTE_MIC_CLICK, "/input/mute_mic/click"}, + {INPUT_SELECT_CLICK, "/input/select/click"}, + {INPUT_SELECT_VALUE, "/input/select/value"}, + {INPUT_SHOULDER_CLICK, "/input/shoulder/click"}, + {INPUT_SHOULDER_LEFT_CLICK, "/input/shoulder_left/click"}, + {INPUT_SHOULDER_RIGHT_CLICK, "/input/shoulder_right/click"}, + {INPUT_SQUEEZE_CLICK, "/input/squeeze/click"}, + {INPUT_SQUEEZE_FORCE, "/input/squeeze/force"}, + {INPUT_SQUEEZE_VALUE, "/input/squeeze/value"}, + {INPUT_SYSTEM_CLICK, "/input/system/click"}, + {INPUT_SYSTEM_TOUCH, "/input/system/touch"}, + {INPUT_THUMBREST_TOUCH, "/input/thumbrest/touch"}, + {INPUT_THUMBSTICK, "/input/thumbstick"}, {INPUT_THUMBSTICK_CLICK, "/input/thumbstick/click"}, - {USER_GAMEPAD_INPUT_DPAD_RIGHT_CLICK, "/user/gamepad/input/dpad_right/click"}, + {INPUT_THUMBSTICK_TOUCH, "/input/thumbstick/touch"}, + {INPUT_THUMBSTICK_X, "/input/thumbstick/x"}, + {INPUT_THUMBSTICK_Y, "/input/thumbstick/y"}, {INPUT_THUMBSTICK_LEFT, "/input/thumbstick_left"}, - {USER_GAMEPAD, "/user/gamepad"}, - {USER_HAND_LEFT_INPUT_TRACKPAD, "/user/hand/left/input/trackpad"}, - {USER_HAND_RIGHT_INPUT_TRIGGER_CLICK, "/user/hand/right/input/trigger/click"}, - {INPUT_DPAD_RIGHT_CLICK, "/input/dpad_right/click"}, - {USER_HAND_RIGHT_INPUT_A_CLICK, "/user/hand/right/input/a/click"}, - {INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, "/interaction_profiles/valve/index_controller"}, + {INPUT_THUMBSTICK_LEFT_CLICK, "/input/thumbstick_left/click"}, + {INPUT_THUMBSTICK_LEFT_X, "/input/thumbstick_left/x"}, + {INPUT_THUMBSTICK_LEFT_Y, "/input/thumbstick_left/y"}, + {INPUT_THUMBSTICK_RIGHT, "/input/thumbstick_right"}, + {INPUT_THUMBSTICK_RIGHT_CLICK, "/input/thumbstick_right/click"}, + {INPUT_THUMBSTICK_RIGHT_X, "/input/thumbstick_right/x"}, + {INPUT_THUMBSTICK_RIGHT_Y, "/input/thumbstick_right/y"}, {INPUT_TRACKPAD, "/input/trackpad"}, - {USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_CLICK, "/user/gamepad/input/thumbstick_right/click"}, - {USER_HAND_RIGHT_INPUT_SYSTEM_TOUCH, "/user/hand/right/input/system/touch"}, - {INPUT_SHOULDER_RIGHT_CLICK, "/input/shoulder_right/click"}, - {USER_HAND_RIGHT_INPUT_AIM_POSE, "/user/hand/right/input/aim/pose"}, - {USER_HAND_RIGHT_INPUT_B_CLICK, "/user/hand/right/input/b/click"}, + {INPUT_TRACKPAD_CLICK, "/input/trackpad/click"}, + {INPUT_TRACKPAD_FORCE, "/input/trackpad/force"}, {INPUT_TRACKPAD_TOUCH, "/input/trackpad/touch"}, - {INPUT_DPAD_DOWN_CLICK, "/input/dpad_down/click"}, + {INPUT_TRACKPAD_X, "/input/trackpad/x"}, + {INPUT_TRACKPAD_Y, "/input/trackpad/y"}, + {INPUT_TRIGGER_CLICK, "/input/trigger/click"}, + {INPUT_TRIGGER_TOUCH, "/input/trigger/touch"}, + {INPUT_TRIGGER_VALUE, "/input/trigger/value"}, + {INPUT_TRIGGER_LEFT_VALUE, "/input/trigger_left/value"}, + {INPUT_TRIGGER_RIGHT_VALUE, "/input/trigger_right/value"}, + {INPUT_VIEW_CLICK, "/input/view/click"}, + {INPUT_VOLUME_DOWN_CLICK, "/input/volume_down/click"}, + {INPUT_VOLUME_UP_CLICK, "/input/volume_up/click"}, + {INPUT_X_CLICK, "/input/x/click"}, + {INPUT_X_TOUCH, "/input/x/touch"}, {INPUT_Y_CLICK, "/input/y/click"}, - {OUTPUT_HAPTIC_RIGHT_TRIGGER, "/output/haptic_right_trigger"}, - {INPUT_THUMBSTICK_RIGHT_CLICK, "/input/thumbstick_right/click"}, {INPUT_Y_TOUCH, "/input/y/touch"}, - {USER_HAND_RIGHT_INPUT_SELECT_CLICK, "/user/hand/right/input/select/click"}, - {USER_HEAD, "/user/head"}, - {INPUT_SYSTEM_CLICK, "/input/system/click"}, - {USER_HAND_RIGHT_INPUT_GRIP_POSE, "/user/hand/right/input/grip/pose"}, - {USER_HAND_LEFT_INPUT_SYSTEM_TOUCH, "/user/hand/left/input/system/touch"}, - {USER_HAND_LEFT_INPUT_B_TOUCH, "/user/hand/left/input/b/touch"}, - {USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_Y, "/user/gamepad/input/thumbstick_right/y"}, - {OUTPUT_HAPTIC_LEFT_TRIGGER, "/output/haptic_left_trigger"}, - {OUTPUT_HAPTIC_LEFT, "/output/haptic_left"}, + {INTERACTION_PROFILES_EXT_EYE_GAZE_INTERACTION, "/interaction_profiles/ext/eye_gaze_interaction"}, {INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, "/interaction_profiles/google/daydream_controller"}, - {USER_HAND_LEFT_INPUT_THUMBSTICK_Y, "/user/hand/left/input/thumbstick/y"}, - {USER_HAND_RIGHT_INPUT_SYSTEM_CLICK, "/user/hand/right/input/system/click"}, - {USER_HAND_LEFT_INPUT_TRACKPAD_X, "/user/hand/left/input/trackpad/x"}, - {USER_HAND_RIGHT_INPUT_TRIGGER_VALUE, "/user/hand/right/input/trigger/value"}, - {OUTPUT_HAPTIC_RIGHT, "/output/haptic_right"}, - {INPUT_THUMBSTICK_TOUCH, "/input/thumbstick/touch"}, - {USER_HAND_LEFT_INPUT_SQUEEZE_CLICK, "/user/hand/left/input/squeeze/click"}, - {USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_X, "/user/gamepad/input/thumbstick_right/x"}, - {USER_HAND_LEFT_INPUT_TRACKPAD_FORCE, "/user/hand/left/input/trackpad/force"}, - {USER_HAND_RIGHT_INPUT_TRACKPAD_X, "/user/hand/right/input/trackpad/x"}, - {INPUT_THUMBSTICK_Y, "/input/thumbstick/y"}, - {USER_HEAD_INPUT_VOLUME_UP_CLICK, "/user/head/input/volume_up/click"}, - {USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT, "/user/gamepad/output/haptic_right"}, - {USER_HAND_LEFT_INPUT_TRIGGER_VALUE, "/user/hand/left/input/trigger/value"}, + {INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, "/interaction_profiles/hp/mixed_reality_controller"}, + {INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, "/interaction_profiles/htc/vive_controller"}, + {INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, "/interaction_profiles/htc/vive_cosmos_controller"}, + {INTERACTION_PROFILES_HTC_VIVE_PRO, "/interaction_profiles/htc/vive_pro"}, + {INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, "/interaction_profiles/khr/simple_controller"}, + {INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION, "/interaction_profiles/microsoft/hand_interaction"}, + {INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, "/interaction_profiles/microsoft/motion_controller"}, {INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, "/interaction_profiles/microsoft/xbox_controller"}, - {USER_HAND_RIGHT_INPUT_TRACKPAD_Y, "/user/hand/right/input/trackpad/y"}, - {USER_GAMEPAD_INPUT_Y_CLICK, "/user/gamepad/input/y/click"}, - {USER_GAMEPAD_OUTPUT_HAPTIC_LEFT, "/user/gamepad/output/haptic_left"}, - {USER_HAND_LEFT_INPUT_TRIGGER_TOUCH, "/user/hand/left/input/trigger/touch"}, - {USER_HEAD_INPUT_MUTE_MIC_CLICK, "/user/head/input/mute_mic/click"}, + {INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, "/interaction_profiles/oculus/go_controller"}, + {INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, "/interaction_profiles/oculus/touch_controller"}, + {INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, "/interaction_profiles/samsung/odyssey_controller"}, + {INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, "/interaction_profiles/valve/index_controller"}, + {OUTPUT_HAPTIC, "/output/haptic"}, + {OUTPUT_HAPTIC_LEFT, "/output/haptic_left"}, + {OUTPUT_HAPTIC_LEFT_TRIGGER, "/output/haptic_left_trigger"}, + {OUTPUT_HAPTIC_RIGHT, "/output/haptic_right"}, + {OUTPUT_HAPTIC_RIGHT_TRIGGER, "/output/haptic_right_trigger"}, + {USER_EYES_EXT, "/user/eyes_ext"}, + {USER_EYES_EXT_INPUT_GAZE_EXT_POSE, "/user/eyes_ext/input/gaze_ext/pose"}, + {USER_GAMEPAD, "/user/gamepad"}, {USER_GAMEPAD_INPUT_A_CLICK, "/user/gamepad/input/a/click"}, - {USER_HAND_RIGHT_INPUT_THUMBSTICK, "/user/hand/right/input/thumbstick"}, - {INPUT_BACK_CLICK, "/input/back/click"}, - {INPUT_TRIGGER_TOUCH, "/input/trigger/touch"}, - {INPUT_TRACKPAD_CLICK, "/input/trackpad/click"}, - {USER_HAND_LEFT_INPUT_SELECT_CLICK, "/user/hand/left/input/select/click"}, - {INPUT_THUMBSTICK_LEFT_Y, "/input/thumbstick_left/y"}, - {INPUT_THUMBSTICK, "/input/thumbstick"}, - {INPUT_DPAD_LEFT_CLICK, "/input/dpad_left/click"}, - {USER_GAMEPAD_OUTPUT_HAPTIC_LEFT_TRIGGER, "/user/gamepad/output/haptic_left_trigger"}, - {USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK, "/user/hand/right/input/thumbstick/click"}, {USER_GAMEPAD_INPUT_B_CLICK, "/user/gamepad/input/b/click"}, - {INPUT_VIEW_CLICK, "/input/view/click"}, - {INPUT_B_CLICK, "/input/b/click"}, - {USER_GAMEPAD_INPUT_VIEW_CLICK, "/user/gamepad/input/view/click"}, {USER_GAMEPAD_INPUT_DPAD_DOWN_CLICK, "/user/gamepad/input/dpad_down/click"}, - {USER_HAND_RIGHT_INPUT_B_TOUCH, "/user/hand/right/input/b/touch"}, - {USER_HAND_RIGHT_INPUT_TRIGGER_TOUCH, "/user/hand/right/input/trigger/touch"}, - {INPUT_DPAD_UP_CLICK, "/input/dpad_up/click"}, - {USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK, "/user/hand/right/input/squeeze/click"}, + {USER_GAMEPAD_INPUT_DPAD_LEFT_CLICK, "/user/gamepad/input/dpad_left/click"}, + {USER_GAMEPAD_INPUT_DPAD_RIGHT_CLICK, "/user/gamepad/input/dpad_right/click"}, + {USER_GAMEPAD_INPUT_DPAD_UP_CLICK, "/user/gamepad/input/dpad_up/click"}, + {USER_GAMEPAD_INPUT_MENU_CLICK, "/user/gamepad/input/menu/click"}, + {USER_GAMEPAD_INPUT_SHOULDER_LEFT_CLICK, "/user/gamepad/input/shoulder_left/click"}, + {USER_GAMEPAD_INPUT_SHOULDER_RIGHT_CLICK, "/user/gamepad/input/shoulder_right/click"}, + {USER_GAMEPAD_INPUT_THUMBSTICK_LEFT, "/user/gamepad/input/thumbstick_left"}, + {USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_CLICK, "/user/gamepad/input/thumbstick_left/click"}, + {USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_X, "/user/gamepad/input/thumbstick_left/x"}, + {USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_Y, "/user/gamepad/input/thumbstick_left/y"}, + {USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT, "/user/gamepad/input/thumbstick_right"}, + {USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_CLICK, "/user/gamepad/input/thumbstick_right/click"}, + {USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_X, "/user/gamepad/input/thumbstick_right/x"}, + {USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_Y, "/user/gamepad/input/thumbstick_right/y"}, {USER_GAMEPAD_INPUT_TRIGGER_LEFT_VALUE, "/user/gamepad/input/trigger_left/value"}, - {INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, "/interaction_profiles/hp/mixed_reality_controller"}, - {INPUT_TRACKPAD_Y, "/input/trackpad/y"}, - {INPUT_SQUEEZE_FORCE, "/input/squeeze/force"}, - {USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH, "/user/hand/right/input/trackpad/touch"}, - {USER_HAND_LEFT_INPUT_THUMBREST_TOUCH, "/user/hand/left/input/thumbrest/touch"}, - {USER_HAND_LEFT_INPUT_X_TOUCH, "/user/hand/left/input/x/touch"}, - {INPUT_MENU_CLICK, "/input/menu/click"}, - {USER_HAND_RIGHT_INPUT_A_TOUCH, "/user/hand/right/input/a/touch"}, - {USER_HAND_RIGHT_INPUT_TRACKPAD_FORCE, "/user/hand/right/input/trackpad/force"}, - {USER_HAND_LEFT_INPUT_SYSTEM_CLICK, "/user/hand/left/input/system/click"}, - {USER_HAND_LEFT_INPUT_MENU_CLICK, "/user/hand/left/input/menu/click"}, + {USER_GAMEPAD_INPUT_TRIGGER_RIGHT_VALUE, "/user/gamepad/input/trigger_right/value"}, + {USER_GAMEPAD_INPUT_VIEW_CLICK, "/user/gamepad/input/view/click"}, {USER_GAMEPAD_INPUT_X_CLICK, "/user/gamepad/input/x/click"}, - {USER_HAND_RIGHT_INPUT_SQUEEZE_FORCE, "/user/hand/right/input/squeeze/force"}, + {USER_GAMEPAD_INPUT_Y_CLICK, "/user/gamepad/input/y/click"}, + {USER_GAMEPAD_OUTPUT_HAPTIC_LEFT, "/user/gamepad/output/haptic_left"}, + {USER_GAMEPAD_OUTPUT_HAPTIC_LEFT_TRIGGER, "/user/gamepad/output/haptic_left_trigger"}, + {USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT, "/user/gamepad/output/haptic_right"}, + {USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT_TRIGGER, "/user/gamepad/output/haptic_right_trigger"}, + {USER_HAND_LEFT, "/user/hand/left"}, + {USER_HAND_LEFT_INPUT_A_CLICK, "/user/hand/left/input/a/click"}, + {USER_HAND_LEFT_INPUT_A_TOUCH, "/user/hand/left/input/a/touch"}, + {USER_HAND_LEFT_INPUT_AIM_POSE, "/user/hand/left/input/aim/pose"}, + {USER_HAND_LEFT_INPUT_B_CLICK, "/user/hand/left/input/b/click"}, + {USER_HAND_LEFT_INPUT_B_TOUCH, "/user/hand/left/input/b/touch"}, + {USER_HAND_LEFT_INPUT_BACK_CLICK, "/user/hand/left/input/back/click"}, + {USER_HAND_LEFT_INPUT_GRIP_POSE, "/user/hand/left/input/grip/pose"}, + {USER_HAND_LEFT_INPUT_MENU_CLICK, "/user/hand/left/input/menu/click"}, + {USER_HAND_LEFT_INPUT_SELECT_CLICK, "/user/hand/left/input/select/click"}, + {USER_HAND_LEFT_INPUT_SELECT_VALUE, "/user/hand/left/input/select/value"}, + {USER_HAND_LEFT_INPUT_SHOULDER_CLICK, "/user/hand/left/input/shoulder/click"}, + {USER_HAND_LEFT_INPUT_SQUEEZE_CLICK, "/user/hand/left/input/squeeze/click"}, {USER_HAND_LEFT_INPUT_SQUEEZE_FORCE, "/user/hand/left/input/squeeze/force"}, - {INPUT_SYSTEM_TOUCH, "/input/system/touch"}, - {USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE, "/user/hand/right/input/squeeze/value"}, + {USER_HAND_LEFT_INPUT_SQUEEZE_VALUE, "/user/hand/left/input/squeeze/value"}, + {USER_HAND_LEFT_INPUT_SYSTEM_CLICK, "/user/hand/left/input/system/click"}, + {USER_HAND_LEFT_INPUT_SYSTEM_TOUCH, "/user/hand/left/input/system/touch"}, + {USER_HAND_LEFT_INPUT_THUMBREST_TOUCH, "/user/hand/left/input/thumbrest/touch"}, + {USER_HAND_LEFT_INPUT_THUMBSTICK, "/user/hand/left/input/thumbstick"}, {USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK, "/user/hand/left/input/thumbstick/click"}, - {INPUT_TRIGGER_RIGHT_VALUE, "/input/trigger_right/value"}, - {USER_HAND_LEFT_INPUT_BACK_CLICK, "/user/hand/left/input/back/click"}, - {USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_CLICK, "/user/gamepad/input/thumbstick_left/click"}, - {USER_HAND_RIGHT, "/user/hand/right"}, + {USER_HAND_LEFT_INPUT_THUMBSTICK_TOUCH, "/user/hand/left/input/thumbstick/touch"}, + {USER_HAND_LEFT_INPUT_THUMBSTICK_X, "/user/hand/left/input/thumbstick/x"}, + {USER_HAND_LEFT_INPUT_THUMBSTICK_Y, "/user/hand/left/input/thumbstick/y"}, + {USER_HAND_LEFT_INPUT_TRACKPAD, "/user/hand/left/input/trackpad"}, {USER_HAND_LEFT_INPUT_TRACKPAD_CLICK, "/user/hand/left/input/trackpad/click"}, - {USER_HAND_LEFT, "/user/hand/left"}, - {INPUT_A_CLICK, "/input/a/click"}, - {INPUT_THUMBSTICK_LEFT_CLICK, "/input/thumbstick_left/click"}, - {USER_GAMEPAD_INPUT_DPAD_UP_CLICK, "/user/gamepad/input/dpad_up/click"}, - {INPUT_GRIP_POSE, "/input/grip/pose"}, - {USER_HAND_RIGHT_INPUT_THUMBSTICK_Y, "/user/hand/right/input/thumbstick/y"}, - {INPUT_SQUEEZE_VALUE, "/input/squeeze/value"}, - {USER_HAND_LEFT_INPUT_X_CLICK, "/user/hand/left/input/x/click"}, + {USER_HAND_LEFT_INPUT_TRACKPAD_FORCE, "/user/hand/left/input/trackpad/force"}, {USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH, "/user/hand/left/input/trackpad/touch"}, - {USER_HAND_LEFT_INPUT_THUMBSTICK_X, "/user/hand/left/input/thumbstick/x"}, - {INPUT_MUTE_MIC_CLICK, "/input/mute_mic/click"}, - {USER_HEAD_INPUT_SYSTEM_CLICK, "/user/head/input/system/click"}, - {USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT, "/user/gamepad/input/thumbstick_right"}, - {USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT_TRIGGER, "/user/gamepad/output/haptic_right_trigger"}, - {USER_HAND_LEFT_INPUT_TRIGGER_CLICK, "/user/hand/left/input/trigger/click"}, - {INPUT_THUMBSTICK_LEFT_X, "/input/thumbstick_left/x"}, - {INPUT_TRACKPAD_X, "/input/trackpad/x"}, + {USER_HAND_LEFT_INPUT_TRACKPAD_X, "/user/hand/left/input/trackpad/x"}, {USER_HAND_LEFT_INPUT_TRACKPAD_Y, "/user/hand/left/input/trackpad/y"}, - {USER_GAMEPAD_INPUT_TRIGGER_RIGHT_VALUE, "/user/gamepad/input/trigger_right/value"}, - {USER_HAND_RIGHT_INPUT_TRACKPAD, "/user/hand/right/input/trackpad"}, - {OUTPUT_HAPTIC, "/output/haptic"}, - {INPUT_THUMBSTICK_X, "/input/thumbstick/x"}, + {USER_HAND_LEFT_INPUT_TRIGGER_CLICK, "/user/hand/left/input/trigger/click"}, + {USER_HAND_LEFT_INPUT_TRIGGER_TOUCH, "/user/hand/left/input/trigger/touch"}, + {USER_HAND_LEFT_INPUT_TRIGGER_VALUE, "/user/hand/left/input/trigger/value"}, + {USER_HAND_LEFT_INPUT_X_CLICK, "/user/hand/left/input/x/click"}, + {USER_HAND_LEFT_INPUT_X_TOUCH, "/user/hand/left/input/x/touch"}, + {USER_HAND_LEFT_INPUT_Y_CLICK, "/user/hand/left/input/y/click"}, + {USER_HAND_LEFT_INPUT_Y_TOUCH, "/user/hand/left/input/y/touch"}, {USER_HAND_LEFT_OUTPUT_HAPTIC, "/user/hand/left/output/haptic"}, - {USER_GAMEPAD_INPUT_MENU_CLICK, "/user/gamepad/input/menu/click"}, - {USER_HAND_RIGHT_INPUT_THUMBSTICK_TOUCH, "/user/hand/right/input/thumbstick/touch"}, - {INPUT_SQUEEZE_CLICK, "/input/squeeze/click"}, - {INPUT_X_CLICK, "/input/x/click"}, - {INPUT_TRIGGER_VALUE, "/input/trigger/value"}, - {USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_X, "/user/gamepad/input/thumbstick_left/x"}, - {USER_HAND_LEFT_INPUT_THUMBSTICK_TOUCH, "/user/hand/left/input/thumbstick/touch"}, + {USER_HAND_RIGHT, "/user/hand/right"}, + {USER_HAND_RIGHT_INPUT_A_CLICK, "/user/hand/right/input/a/click"}, + {USER_HAND_RIGHT_INPUT_A_TOUCH, "/user/hand/right/input/a/touch"}, + {USER_HAND_RIGHT_INPUT_AIM_POSE, "/user/hand/right/input/aim/pose"}, + {USER_HAND_RIGHT_INPUT_B_CLICK, "/user/hand/right/input/b/click"}, + {USER_HAND_RIGHT_INPUT_B_TOUCH, "/user/hand/right/input/b/touch"}, + {USER_HAND_RIGHT_INPUT_BACK_CLICK, "/user/hand/right/input/back/click"}, + {USER_HAND_RIGHT_INPUT_GRIP_POSE, "/user/hand/right/input/grip/pose"}, + {USER_HAND_RIGHT_INPUT_MENU_CLICK, "/user/hand/right/input/menu/click"}, + {USER_HAND_RIGHT_INPUT_SELECT_CLICK, "/user/hand/right/input/select/click"}, + {USER_HAND_RIGHT_INPUT_SELECT_VALUE, "/user/hand/right/input/select/value"}, + {USER_HAND_RIGHT_INPUT_SHOULDER_CLICK, "/user/hand/right/input/shoulder/click"}, + {USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK, "/user/hand/right/input/squeeze/click"}, + {USER_HAND_RIGHT_INPUT_SQUEEZE_FORCE, "/user/hand/right/input/squeeze/force"}, + {USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE, "/user/hand/right/input/squeeze/value"}, + {USER_HAND_RIGHT_INPUT_SYSTEM_CLICK, "/user/hand/right/input/system/click"}, + {USER_HAND_RIGHT_INPUT_SYSTEM_TOUCH, "/user/hand/right/input/system/touch"}, {USER_HAND_RIGHT_INPUT_THUMBREST_TOUCH, "/user/hand/right/input/thumbrest/touch"}, + {USER_HAND_RIGHT_INPUT_THUMBSTICK, "/user/hand/right/input/thumbstick"}, + {USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK, "/user/hand/right/input/thumbstick/click"}, + {USER_HAND_RIGHT_INPUT_THUMBSTICK_TOUCH, "/user/hand/right/input/thumbstick/touch"}, + {USER_HAND_RIGHT_INPUT_THUMBSTICK_X, "/user/hand/right/input/thumbstick/x"}, + {USER_HAND_RIGHT_INPUT_THUMBSTICK_Y, "/user/hand/right/input/thumbstick/y"}, + {USER_HAND_RIGHT_INPUT_TRACKPAD, "/user/hand/right/input/trackpad"}, + {USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK, "/user/hand/right/input/trackpad/click"}, + {USER_HAND_RIGHT_INPUT_TRACKPAD_FORCE, "/user/hand/right/input/trackpad/force"}, + {USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH, "/user/hand/right/input/trackpad/touch"}, + {USER_HAND_RIGHT_INPUT_TRACKPAD_X, "/user/hand/right/input/trackpad/x"}, + {USER_HAND_RIGHT_INPUT_TRACKPAD_Y, "/user/hand/right/input/trackpad/y"}, + {USER_HAND_RIGHT_INPUT_TRIGGER_CLICK, "/user/hand/right/input/trigger/click"}, + {USER_HAND_RIGHT_INPUT_TRIGGER_TOUCH, "/user/hand/right/input/trigger/touch"}, + {USER_HAND_RIGHT_INPUT_TRIGGER_VALUE, "/user/hand/right/input/trigger/value"}, {USER_HAND_RIGHT_OUTPUT_HAPTIC, "/user/hand/right/output/haptic"}, - {INPUT_THUMBSTICK_RIGHT_X, "/input/thumbstick_right/x"}, - {USER_HAND_LEFT_INPUT_A_TOUCH, "/user/hand/left/input/a/touch"}, - {INPUT_THUMBREST_TOUCH, "/input/thumbrest/touch"}, - {USER_GAMEPAD_INPUT_SHOULDER_LEFT_CLICK, "/user/gamepad/input/shoulder_left/click"}, - {INPUT_SHOULDER_LEFT_CLICK, "/input/shoulder_left/click"}, - {INPUT_VOLUME_UP_CLICK, "/input/volume_up/click"}, - {INPUT_TRIGGER_LEFT_VALUE, "/input/trigger_left/value"}, - {INPUT_A_TOUCH, "/input/a/touch"}, - {INPUT_VOLUME_DOWN_CLICK, "/input/volume_down/click"}, + {USER_HEAD, "/user/head"}, + {USER_HEAD_INPUT_MUTE_MIC_CLICK, "/user/head/input/mute_mic/click"}, + {USER_HEAD_INPUT_SYSTEM_CLICK, "/user/head/input/system/click"}, {USER_HEAD_INPUT_VOLUME_DOWN_CLICK, "/user/head/input/volume_down/click"}, - {USER_HAND_RIGHT_INPUT_BACK_CLICK, "/user/hand/right/input/back/click"}, - {USER_HAND_LEFT_INPUT_AIM_POSE, "/user/hand/left/input/aim/pose"}, - {INPUT_THUMBSTICK_RIGHT_Y, "/input/thumbstick_right/y"}, - {INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, "/interaction_profiles/oculus/touch_controller"}, - {USER_GAMEPAD_INPUT_DPAD_LEFT_CLICK, "/user/gamepad/input/dpad_left/click"}, - {USER_GAMEPAD_INPUT_THUMBSTICK_LEFT, "/user/gamepad/input/thumbstick_left"}, - {USER_HAND_RIGHT_INPUT_THUMBSTICK_X, "/user/hand/right/input/thumbstick/x"}, - {INPUT_TRIGGER_CLICK, "/input/trigger/click"}, - {INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, "/interaction_profiles/khr/simple_controller"}, - {INPUT_AIM_POSE, "/input/aim/pose"}, - {USER_HAND_LEFT_INPUT_B_CLICK, "/user/hand/left/input/b/click"}, - {USER_HAND_LEFT_INPUT_SQUEEZE_VALUE, "/user/hand/left/input/squeeze/value"}, - {USER_GAMEPAD_INPUT_SHOULDER_RIGHT_CLICK, "/user/gamepad/input/shoulder_right/click"}, + {USER_HEAD_INPUT_VOLUME_UP_CLICK, "/user/head/input/volume_up/click"}, }; - - - struct PlaceholderActionId { std::string name; @@ -270,250 +303,636 @@ struct PlaceholderActionId WellKnownStringIndex fullBindingString; }; -std::vector PlaceholderActionIds = -{ - {"/interaction_profiles/khr/simple_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, - {"/interaction_profiles/khr/simple_controller/user/hand/left/input/select/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, INPUT_SELECT_CLICK, USER_HAND_LEFT_INPUT_SELECT_CLICK}, - {"/interaction_profiles/khr/simple_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, - {"/interaction_profiles/khr/simple_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, - {"/interaction_profiles/khr/simple_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, - {"/interaction_profiles/khr/simple_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, - {"/interaction_profiles/khr/simple_controller/user/hand/right/input/select/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, INPUT_SELECT_CLICK, USER_HAND_RIGHT_INPUT_SELECT_CLICK}, - {"/interaction_profiles/khr/simple_controller/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, INPUT_MENU_CLICK, USER_HAND_RIGHT_INPUT_MENU_CLICK}, - {"/interaction_profiles/khr/simple_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, - {"/interaction_profiles/khr/simple_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, - {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, - {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/google/daydream_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, - {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_CLICK, USER_HAND_LEFT_INPUT_TRACKPAD_CLICK}, - {"/interaction_profiles/google/daydream_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, - {"/interaction_profiles/google/daydream_controller/user/hand/left/input/select/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_SELECT_CLICK, USER_HAND_LEFT_INPUT_SELECT_CLICK}, - {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, - {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/google/daydream_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, - {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_CLICK, USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK}, - {"/interaction_profiles/google/daydream_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, - {"/interaction_profiles/google/daydream_controller/user/hand/right/input/select/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_SELECT_CLICK, USER_HAND_RIGHT_INPUT_SELECT_CLICK}, - {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_SYSTEM_CLICK, USER_HAND_LEFT_INPUT_SYSTEM_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_CLICK, USER_HAND_LEFT_INPUT_TRIGGER_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_CLICK, USER_HAND_LEFT_INPUT_TRACKPAD_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_CLICK, USER_HAND_LEFT_INPUT_SQUEEZE_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_CLICK, USER_HAND_RIGHT_INPUT_SYSTEM_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_CLICK, USER_HAND_RIGHT_INPUT_TRIGGER_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_CLICK, USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_MENU_CLICK, USER_HAND_RIGHT_INPUT_MENU_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_CLICK, USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK}, - {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, - {"/interaction_profiles/htc/vive_pro/user/head/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_PRO, USER_HEAD, INPUT_SYSTEM_CLICK, USER_HEAD_INPUT_SYSTEM_CLICK}, - {"/interaction_profiles/htc/vive_pro/user/head/input/volume_up/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_PRO, USER_HEAD, INPUT_VOLUME_UP_CLICK, USER_HEAD_INPUT_VOLUME_UP_CLICK}, - {"/interaction_profiles/htc/vive_pro/user/head/input/volume_down/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_PRO, USER_HEAD, INPUT_VOLUME_DOWN_CLICK, USER_HEAD_INPUT_VOLUME_DOWN_CLICK}, - {"/interaction_profiles/htc/vive_pro/user/head/input/mute_mic/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HTC_VIVE_PRO, USER_HEAD, INPUT_MUTE_MIC_CLICK, USER_HEAD_INPUT_MUTE_MIC_CLICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_CLICK, USER_HAND_LEFT_INPUT_TRACKPAD_CLICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_CLICK, USER_HAND_LEFT_INPUT_SQUEEZE_CLICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_CLICK, USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_MENU_CLICK, USER_HAND_RIGHT_INPUT_MENU_CLICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_CLICK, USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK}, - {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/output/haptic_right", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, OUTPUT_HAPTIC_RIGHT, USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_MENU_CLICK, USER_GAMEPAD_INPUT_MENU_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/x/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_X_CLICK, USER_GAMEPAD_INPUT_X_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_right/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_RIGHT_X, USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_X}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_right", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_RIGHT, USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/trigger_right/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_TRIGGER_RIGHT_VALUE, USER_GAMEPAD_INPUT_TRIGGER_RIGHT_VALUE}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/dpad_right/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_DPAD_RIGHT_CLICK, USER_GAMEPAD_INPUT_DPAD_RIGHT_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/shoulder_left/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_SHOULDER_LEFT_CLICK, USER_GAMEPAD_INPUT_SHOULDER_LEFT_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_A_CLICK, USER_GAMEPAD_INPUT_A_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_left/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_LEFT_CLICK, USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/shoulder_right/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_SHOULDER_RIGHT_CLICK, USER_GAMEPAD_INPUT_SHOULDER_RIGHT_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/trigger_left/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_TRIGGER_LEFT_VALUE, USER_GAMEPAD_INPUT_TRIGGER_LEFT_VALUE}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_left/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_LEFT_Y, USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_Y}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/dpad_left/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_DPAD_LEFT_CLICK, USER_GAMEPAD_INPUT_DPAD_LEFT_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/dpad_down/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_DPAD_DOWN_CLICK, USER_GAMEPAD_INPUT_DPAD_DOWN_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/y/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_Y_CLICK, USER_GAMEPAD_INPUT_Y_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_right/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_RIGHT_Y, USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_Y}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/view/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_VIEW_CLICK, USER_GAMEPAD_INPUT_VIEW_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/output/haptic_right_trigger", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, OUTPUT_HAPTIC_RIGHT_TRIGGER, USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT_TRIGGER}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_right/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_RIGHT_CLICK, USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_B_CLICK, USER_GAMEPAD_INPUT_B_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/dpad_up/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_DPAD_UP_CLICK, USER_GAMEPAD_INPUT_DPAD_UP_CLICK}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/output/haptic_left_trigger", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, OUTPUT_HAPTIC_LEFT_TRIGGER, USER_GAMEPAD_OUTPUT_HAPTIC_LEFT_TRIGGER}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/output/haptic_left", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, OUTPUT_HAPTIC_LEFT, USER_GAMEPAD_OUTPUT_HAPTIC_LEFT}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_left/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_LEFT_X, USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_X}, - {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_left", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_LEFT, USER_GAMEPAD_INPUT_THUMBSTICK_LEFT}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_SYSTEM_CLICK, USER_HAND_LEFT_INPUT_SYSTEM_CLICK}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/back/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_BACK_CLICK, USER_HAND_LEFT_INPUT_BACK_CLICK}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_CLICK, USER_HAND_LEFT_INPUT_TRIGGER_CLICK}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_CLICK, USER_HAND_LEFT_INPUT_TRACKPAD_CLICK}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, - {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_CLICK, USER_HAND_RIGHT_INPUT_SYSTEM_CLICK}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/back/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_BACK_CLICK, USER_HAND_RIGHT_INPUT_BACK_CLICK}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_CLICK, USER_HAND_RIGHT_INPUT_TRIGGER_CLICK}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_CLICK, USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, - {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/x/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_X_TOUCH, USER_HAND_LEFT_INPUT_X_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/trigger/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_TOUCH, USER_HAND_LEFT_INPUT_TRIGGER_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbrest/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBREST_TOUCH, USER_HAND_LEFT_INPUT_THUMBREST_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_VALUE, USER_HAND_LEFT_INPUT_SQUEEZE_VALUE}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_TOUCH, USER_HAND_LEFT_INPUT_THUMBSTICK_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/y/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_Y_CLICK, USER_HAND_LEFT_INPUT_Y_CLICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/x/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_X_CLICK, USER_HAND_LEFT_INPUT_X_CLICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, - {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/y/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_Y_TOUCH, USER_HAND_LEFT_INPUT_Y_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_B_CLICK, USER_HAND_RIGHT_INPUT_B_CLICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_CLICK, USER_HAND_RIGHT_INPUT_SYSTEM_CLICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/trigger/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_TOUCH, USER_HAND_RIGHT_INPUT_TRIGGER_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_A_CLICK, USER_HAND_RIGHT_INPUT_A_CLICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/a/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_A_TOUCH, USER_HAND_RIGHT_INPUT_A_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbrest/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBREST_TOUCH, USER_HAND_RIGHT_INPUT_THUMBREST_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_VALUE, USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/b/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_B_TOUCH, USER_HAND_RIGHT_INPUT_B_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_TOUCH, USER_HAND_RIGHT_INPUT_THUMBSTICK_TOUCH}, - {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/squeeze/force", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_FORCE, USER_HAND_LEFT_INPUT_SQUEEZE_FORCE}, - {"/interaction_profiles/valve/index_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/b/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_B_TOUCH, USER_HAND_LEFT_INPUT_B_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_TOUCH, USER_HAND_LEFT_INPUT_THUMBSTICK_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/system/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_SYSTEM_TOUCH, USER_HAND_LEFT_INPUT_SYSTEM_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad/force", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_FORCE, USER_HAND_LEFT_INPUT_TRACKPAD_FORCE}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/trigger/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_TOUCH, USER_HAND_LEFT_INPUT_TRIGGER_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_A_CLICK, USER_HAND_LEFT_INPUT_A_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/a/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_A_TOUCH, USER_HAND_LEFT_INPUT_A_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_VALUE, USER_HAND_LEFT_INPUT_SQUEEZE_VALUE}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_B_CLICK, USER_HAND_LEFT_INPUT_B_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_SYSTEM_CLICK, USER_HAND_LEFT_INPUT_SYSTEM_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_CLICK, USER_HAND_LEFT_INPUT_TRIGGER_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/squeeze/force", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_FORCE, USER_HAND_RIGHT_INPUT_SQUEEZE_FORCE}, - {"/interaction_profiles/valve/index_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/b/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_B_TOUCH, USER_HAND_RIGHT_INPUT_B_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_TOUCH, USER_HAND_RIGHT_INPUT_THUMBSTICK_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/system/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_TOUCH, USER_HAND_RIGHT_INPUT_SYSTEM_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad/force", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_FORCE, USER_HAND_RIGHT_INPUT_TRACKPAD_FORCE}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/trigger/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_TOUCH, USER_HAND_RIGHT_INPUT_TRIGGER_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_A_CLICK, USER_HAND_RIGHT_INPUT_A_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/a/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_A_TOUCH, USER_HAND_RIGHT_INPUT_A_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_VALUE, USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_B_CLICK, USER_HAND_RIGHT_INPUT_B_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_CLICK, USER_HAND_RIGHT_INPUT_SYSTEM_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_CLICK, USER_HAND_RIGHT_INPUT_TRIGGER_CLICK}, - {"/interaction_profiles/valve/index_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_VALUE, USER_HAND_LEFT_INPUT_SQUEEZE_VALUE}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/y/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_Y_CLICK, USER_HAND_LEFT_INPUT_Y_CLICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/x/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_X_CLICK, USER_HAND_LEFT_INPUT_X_CLICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_B_CLICK, USER_HAND_RIGHT_INPUT_B_CLICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_A_CLICK, USER_HAND_RIGHT_INPUT_A_CLICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_MENU_CLICK, USER_HAND_RIGHT_INPUT_MENU_CLICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_VALUE, USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE}, - {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, - +std::vector PlaceholderActionIds = { + {"/interaction_profiles/ext/eye_gaze_interaction/user/eyes_ext/input/gaze_ext/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_EXT_EYE_GAZE_INTERACTION, USER_EYES_EXT, INPUT_GAZE_EXT_POSE, USER_EYES_EXT_INPUT_GAZE_EXT_POSE}, + {"/interaction_profiles/google/daydream_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/google/daydream_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/google/daydream_controller/user/hand/left/input/select/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_SELECT_CLICK, USER_HAND_LEFT_INPUT_SELECT_CLICK}, + {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_CLICK, USER_HAND_LEFT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, + {"/interaction_profiles/google/daydream_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/google/daydream_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/google/daydream_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/google/daydream_controller/user/hand/right/input/select/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_SELECT_CLICK, USER_HAND_RIGHT_INPUT_SELECT_CLICK}, + {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_CLICK, USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, + {"/interaction_profiles/google/daydream_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_VALUE, USER_HAND_LEFT_INPUT_SQUEEZE_VALUE}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, + USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/x/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_X_CLICK, USER_HAND_LEFT_INPUT_X_CLICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/input/y/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, INPUT_Y_CLICK, USER_HAND_LEFT_INPUT_Y_CLICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_A_CLICK, USER_HAND_RIGHT_INPUT_A_CLICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_B_CLICK, USER_HAND_RIGHT_INPUT_B_CLICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_MENU_CLICK, USER_HAND_RIGHT_INPUT_MENU_CLICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_VALUE, USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, + USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/hp/mixed_reality_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_CLICK, USER_HAND_LEFT_INPUT_SQUEEZE_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_SYSTEM_CLICK, USER_HAND_LEFT_INPUT_SYSTEM_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_CLICK, USER_HAND_LEFT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_CLICK, USER_HAND_LEFT_INPUT_TRIGGER_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/htc/vive_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_MENU_CLICK, USER_HAND_RIGHT_INPUT_MENU_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_CLICK, USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_CLICK, USER_HAND_RIGHT_INPUT_SYSTEM_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_CLICK, USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_CLICK, USER_HAND_RIGHT_INPUT_TRIGGER_CLICK}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/htc/vive_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/shoulder/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_SHOULDER_CLICK, USER_HAND_LEFT_INPUT_SHOULDER_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_CLICK, USER_HAND_LEFT_INPUT_SQUEEZE_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, + USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_TOUCH, + USER_HAND_LEFT_INPUT_THUMBSTICK_TOUCH}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_CLICK, USER_HAND_LEFT_INPUT_TRIGGER_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/x/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_X_CLICK, USER_HAND_LEFT_INPUT_X_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/input/y/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, INPUT_Y_CLICK, USER_HAND_LEFT_INPUT_Y_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_A_CLICK, USER_HAND_RIGHT_INPUT_A_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_B_CLICK, USER_HAND_RIGHT_INPUT_B_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/shoulder/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_SHOULDER_CLICK, USER_HAND_RIGHT_INPUT_SHOULDER_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_CLICK, USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_CLICK, USER_HAND_RIGHT_INPUT_SYSTEM_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, + USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_TOUCH, + USER_HAND_RIGHT_INPUT_THUMBSTICK_TOUCH}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_CLICK, USER_HAND_RIGHT_INPUT_TRIGGER_CLICK}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/htc/vive_cosmos_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, + {"/interaction_profiles/htc/vive_pro/user/head/input/mute_mic/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_PRO, USER_HEAD, INPUT_MUTE_MIC_CLICK, USER_HEAD_INPUT_MUTE_MIC_CLICK}, + {"/interaction_profiles/htc/vive_pro/user/head/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_PRO, USER_HEAD, INPUT_SYSTEM_CLICK, USER_HEAD_INPUT_SYSTEM_CLICK}, + {"/interaction_profiles/htc/vive_pro/user/head/input/volume_down/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_PRO, USER_HEAD, INPUT_VOLUME_DOWN_CLICK, USER_HEAD_INPUT_VOLUME_DOWN_CLICK}, + {"/interaction_profiles/htc/vive_pro/user/head/input/volume_up/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_HTC_VIVE_PRO, USER_HEAD, INPUT_VOLUME_UP_CLICK, USER_HEAD_INPUT_VOLUME_UP_CLICK}, + {"/interaction_profiles/khr/simple_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/khr/simple_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/khr/simple_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, + {"/interaction_profiles/khr/simple_controller/user/hand/left/input/select/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, INPUT_SELECT_CLICK, USER_HAND_LEFT_INPUT_SELECT_CLICK}, + {"/interaction_profiles/khr/simple_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, + {"/interaction_profiles/khr/simple_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/khr/simple_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/khr/simple_controller/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, INPUT_MENU_CLICK, USER_HAND_RIGHT_INPUT_MENU_CLICK}, + {"/interaction_profiles/khr/simple_controller/user/hand/right/input/select/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, INPUT_SELECT_CLICK, USER_HAND_RIGHT_INPUT_SELECT_CLICK}, + {"/interaction_profiles/khr/simple_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, + {"/interaction_profiles/microsoft/hand_interaction/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/microsoft/hand_interaction/user/hand/left/input/select/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION, USER_HAND_LEFT, INPUT_SELECT_VALUE, USER_HAND_LEFT_INPUT_SELECT_VALUE}, + {"/interaction_profiles/microsoft/hand_interaction/user/hand/left/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION, USER_HAND_LEFT, INPUT_SQUEEZE_VALUE, USER_HAND_LEFT_INPUT_SQUEEZE_VALUE}, + {"/interaction_profiles/microsoft/hand_interaction/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/microsoft/hand_interaction/user/hand/right/input/select/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION, USER_HAND_RIGHT, INPUT_SELECT_VALUE, USER_HAND_RIGHT_INPUT_SELECT_VALUE}, + {"/interaction_profiles/microsoft/hand_interaction/user/hand/right/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION, USER_HAND_RIGHT, INPUT_SQUEEZE_VALUE, USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_CLICK, USER_HAND_LEFT_INPUT_SQUEEZE_CLICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, + USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_CLICK, USER_HAND_LEFT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_MENU_CLICK, USER_HAND_RIGHT_INPUT_MENU_CLICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_CLICK, USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, + USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_CLICK, USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/microsoft/motion_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_A_CLICK, USER_GAMEPAD_INPUT_A_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_B_CLICK, USER_GAMEPAD_INPUT_B_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/dpad_down/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_DPAD_DOWN_CLICK, USER_GAMEPAD_INPUT_DPAD_DOWN_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/dpad_left/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_DPAD_LEFT_CLICK, USER_GAMEPAD_INPUT_DPAD_LEFT_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/dpad_right/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_DPAD_RIGHT_CLICK, USER_GAMEPAD_INPUT_DPAD_RIGHT_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/dpad_up/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_DPAD_UP_CLICK, USER_GAMEPAD_INPUT_DPAD_UP_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_MENU_CLICK, USER_GAMEPAD_INPUT_MENU_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/shoulder_left/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_SHOULDER_LEFT_CLICK, + USER_GAMEPAD_INPUT_SHOULDER_LEFT_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/shoulder_right/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_SHOULDER_RIGHT_CLICK, + USER_GAMEPAD_INPUT_SHOULDER_RIGHT_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_left/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_LEFT_CLICK, + USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_left/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_LEFT_X, USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_X}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_left", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_LEFT, USER_GAMEPAD_INPUT_THUMBSTICK_LEFT}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_left/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_LEFT_Y, USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_Y}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_right/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_RIGHT_CLICK, + USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_right/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_RIGHT_X, USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_X}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_right", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_RIGHT, USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/thumbstick_right/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_THUMBSTICK_RIGHT_Y, USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_Y}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/trigger_left/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_TRIGGER_LEFT_VALUE, USER_GAMEPAD_INPUT_TRIGGER_LEFT_VALUE}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/trigger_right/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_TRIGGER_RIGHT_VALUE, + USER_GAMEPAD_INPUT_TRIGGER_RIGHT_VALUE}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/view/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_VIEW_CLICK, USER_GAMEPAD_INPUT_VIEW_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/x/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_X_CLICK, USER_GAMEPAD_INPUT_X_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/input/y/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, INPUT_Y_CLICK, USER_GAMEPAD_INPUT_Y_CLICK}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/output/haptic_left", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, OUTPUT_HAPTIC_LEFT, USER_GAMEPAD_OUTPUT_HAPTIC_LEFT}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/output/haptic_left_trigger", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, OUTPUT_HAPTIC_LEFT_TRIGGER, + USER_GAMEPAD_OUTPUT_HAPTIC_LEFT_TRIGGER}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/output/haptic_right", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, OUTPUT_HAPTIC_RIGHT, USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT}, + {"/interaction_profiles/microsoft/xbox_controller/user/gamepad/output/haptic_right_trigger", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER, USER_GAMEPAD, OUTPUT_HAPTIC_RIGHT_TRIGGER, + USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT_TRIGGER}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/back/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_BACK_CLICK, USER_HAND_LEFT_INPUT_BACK_CLICK}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_SYSTEM_CLICK, USER_HAND_LEFT_INPUT_SYSTEM_CLICK}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_CLICK, USER_HAND_LEFT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/oculus/go_controller/user/hand/left/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_CLICK, USER_HAND_LEFT_INPUT_TRIGGER_CLICK}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/back/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_BACK_CLICK, USER_HAND_RIGHT_INPUT_BACK_CLICK}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_CLICK, USER_HAND_RIGHT_INPUT_SYSTEM_CLICK}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_CLICK, USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/oculus/go_controller/user/hand/right/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_CLICK, USER_HAND_RIGHT_INPUT_TRIGGER_CLICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_VALUE, USER_HAND_LEFT_INPUT_SQUEEZE_VALUE}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbrest/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBREST_TOUCH, USER_HAND_LEFT_INPUT_THUMBREST_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_TOUCH, USER_HAND_LEFT_INPUT_THUMBSTICK_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/trigger/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_TOUCH, USER_HAND_LEFT_INPUT_TRIGGER_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/x/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_X_CLICK, USER_HAND_LEFT_INPUT_X_CLICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/x/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_X_TOUCH, USER_HAND_LEFT_INPUT_X_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/y/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_Y_CLICK, USER_HAND_LEFT_INPUT_Y_CLICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/input/y/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, INPUT_Y_TOUCH, USER_HAND_LEFT_INPUT_Y_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_A_CLICK, USER_HAND_RIGHT_INPUT_A_CLICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/a/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_A_TOUCH, USER_HAND_RIGHT_INPUT_A_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_B_CLICK, USER_HAND_RIGHT_INPUT_B_CLICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/b/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_B_TOUCH, USER_HAND_RIGHT_INPUT_B_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_VALUE, USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_CLICK, USER_HAND_RIGHT_INPUT_SYSTEM_CLICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbrest/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBREST_TOUCH, USER_HAND_RIGHT_INPUT_THUMBREST_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_TOUCH, USER_HAND_RIGHT_INPUT_THUMBSTICK_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/trigger/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_TOUCH, USER_HAND_RIGHT_INPUT_TRIGGER_TOUCH}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/oculus/touch_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_MENU_CLICK, USER_HAND_LEFT_INPUT_MENU_CLICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_CLICK, USER_HAND_LEFT_INPUT_SQUEEZE_CLICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, + USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_CLICK, USER_HAND_LEFT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_MENU_CLICK, USER_HAND_RIGHT_INPUT_MENU_CLICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_CLICK, USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, + USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/trackpad/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_CLICK, USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/samsung/odyssey_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_A_CLICK, USER_HAND_LEFT_INPUT_A_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/a/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_A_TOUCH, USER_HAND_LEFT_INPUT_A_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_AIM_POSE, USER_HAND_LEFT_INPUT_AIM_POSE}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_B_CLICK, USER_HAND_LEFT_INPUT_B_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/b/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_B_TOUCH, USER_HAND_LEFT_INPUT_B_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_GRIP_POSE, USER_HAND_LEFT_INPUT_GRIP_POSE}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/squeeze/force", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_FORCE, USER_HAND_LEFT_INPUT_SQUEEZE_FORCE}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_SQUEEZE_VALUE, USER_HAND_LEFT_INPUT_SQUEEZE_VALUE}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_SYSTEM_CLICK, USER_HAND_LEFT_INPUT_SYSTEM_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/system/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_SYSTEM_TOUCH, USER_HAND_LEFT_INPUT_SYSTEM_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_CLICK, USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_TOUCH, USER_HAND_LEFT_INPUT_THUMBSTICK_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_X, USER_HAND_LEFT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK, USER_HAND_LEFT_INPUT_THUMBSTICK}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_THUMBSTICK_Y, USER_HAND_LEFT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad/force", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_FORCE, USER_HAND_LEFT_INPUT_TRACKPAD_FORCE}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_TOUCH, USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_X, USER_HAND_LEFT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD, USER_HAND_LEFT_INPUT_TRACKPAD}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRACKPAD_Y, USER_HAND_LEFT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_CLICK, USER_HAND_LEFT_INPUT_TRIGGER_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/trigger/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_TOUCH, USER_HAND_LEFT_INPUT_TRIGGER_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, INPUT_TRIGGER_VALUE, USER_HAND_LEFT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/valve/index_controller/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_LEFT, OUTPUT_HAPTIC, USER_HAND_LEFT_OUTPUT_HAPTIC}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_A_CLICK, USER_HAND_RIGHT_INPUT_A_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/a/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_A_TOUCH, USER_HAND_RIGHT_INPUT_A_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_AIM_POSE, USER_HAND_RIGHT_INPUT_AIM_POSE}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_B_CLICK, USER_HAND_RIGHT_INPUT_B_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/b/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_B_TOUCH, USER_HAND_RIGHT_INPUT_B_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_GRIP_POSE, USER_HAND_RIGHT_INPUT_GRIP_POSE}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/squeeze/force", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_FORCE, USER_HAND_RIGHT_INPUT_SQUEEZE_FORCE}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_SQUEEZE_VALUE, USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_CLICK, USER_HAND_RIGHT_INPUT_SYSTEM_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/system/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_SYSTEM_TOUCH, USER_HAND_RIGHT_INPUT_SYSTEM_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_CLICK, USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_TOUCH, USER_HAND_RIGHT_INPUT_THUMBSTICK_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_X, USER_HAND_RIGHT_INPUT_THUMBSTICK_X}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK, USER_HAND_RIGHT_INPUT_THUMBSTICK}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_THUMBSTICK_Y, USER_HAND_RIGHT_INPUT_THUMBSTICK_Y}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad/force", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_FORCE, USER_HAND_RIGHT_INPUT_TRACKPAD_FORCE}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_TOUCH, USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad/x", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_X, USER_HAND_RIGHT_INPUT_TRACKPAD_X}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad", XR_ACTION_TYPE_VECTOR2F_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD, USER_HAND_RIGHT_INPUT_TRACKPAD}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/trackpad/y", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRACKPAD_Y, USER_HAND_RIGHT_INPUT_TRACKPAD_Y}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_CLICK, USER_HAND_RIGHT_INPUT_TRIGGER_CLICK}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/trigger/touch", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_TOUCH, USER_HAND_RIGHT_INPUT_TRIGGER_TOUCH}, + {"/interaction_profiles/valve/index_controller/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, INPUT_TRIGGER_VALUE, USER_HAND_RIGHT_INPUT_TRIGGER_VALUE}, + {"/interaction_profiles/valve/index_controller/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER, USER_HAND_RIGHT, OUTPUT_HAPTIC, USER_HAND_RIGHT_OUTPUT_HAPTIC}, }; - // Just in case everything is terrible and every proc has to be synchronized std::recursive_mutex gSynchronizeEveryProcMutex; bool gSynchronizeEveryProc = true; // XXX Currently true because of both layer view loss and ReleaseSwapchainImage VALIDATION_FAILURE @@ -528,6 +947,23 @@ std::recursive_mutex HapticQuirkMutex; const std::set OverlaysLayerNoObjectInfo = {}; +using ExtensionMask = std::underlying_type_t; +ExtensionMask CreateExtensionMask(const XrInstanceCreateInfo& info) { + ExtensionMask mask = REQ_EXTENSION_NONE_MASK; + for (uint32_t i = 0; i < info.enabledExtensionCount; i++) { + const auto it = ExtensionsBits.find(info.enabledExtensionNames[i]); + if (it != ExtensionsBits.cend()) { + mask |= static_cast(it->second); + } + } + return mask; +} + +bool ProfileIsSupported(ExtensionMask ext_mask, WellKnownStringIndex profile_index) { + const ExtensionMask required_ext = ProfileExtensions[profile_index]; + return (required_ext & ext_mask) == required_ext; +} + uint64_t GetNextLocalHandle() { static std::atomic_uint64_t nextHandle = 1; @@ -1302,7 +1738,9 @@ XrResult OverlaysLayerXrCreateApiLayerInstance(const XrInstanceCreateInfo *insta instanceInfo->OverlaysLayerWellKnownStringToPath.insert({w.first, path}); instanceInfo->OverlaysLayerPathToWellKnownString.insert({path, w.first}); } + const auto extension_mask = CreateExtensionMask(*instanceInfo->createInfo); for(auto& id : PlaceholderActionIds) { + if (!ProfileIsSupported(extension_mask, id.interactionProfileString)) continue; // Skip unsupported paths XrPath profilePath = instanceInfo->OverlaysLayerWellKnownStringToPath.at(id.interactionProfileString); XrPath subactionPath = instanceInfo->OverlaysLayerWellKnownStringToPath.at(id.subActionString); XrPath componentPath = instanceInfo->OverlaysLayerWellKnownStringToPath.at(id.componentString); @@ -1834,7 +2272,9 @@ XrResult OverlaysLayerCreateSessionMain(XrInstance instance, const XrSessionCrea } int i=1; + const auto extension_mask = CreateExtensionMask(*instanceInfo->createInfo); for(auto& id : PlaceholderActionIds) { + if (!ProfileIsSupported(extension_mask, id.interactionProfileString)) continue; // Skip unsupported paths char placeholderNameString[64]; sprintf(placeholderNameString, "overlays%d", i++); @@ -4982,6 +5422,64 @@ XrResult OverlaysLayerEnumerateBoundSourcesForActionOverlay(XrInstance instance, return XR_SUCCESS; } +// WIP: We're lying s.t. any client to the overlay service thinks the overlay service is an AR physical reality... +// WIP: However we're always returning the extra blendmode without regard to wheter this is the main or overlay session because +// WIP: the way overlay is define currently we don't know if the application is going to function in the main or overlay mode +// WIP: isn't until CreateSession time, which makes it too late to know wheter to lie or not. +// WIP: Need to control this behavior in some safe way. Also, caching the enumeration downchaing. +XrResult OverlaysLayerEnumerateEnvironmentBlendModes(XrInstance instance, XrSystemId systemId, + XrViewConfigurationType viewConfigurationType, + uint32_t environmentBlendModeCapacityInput, + uint32_t* environmentBlendModeCountOutput, + XrEnvironmentBlendMode* environmentBlendModes) { + try { + XrResult result; + std::vector blendModes; + uint32_t numBlendModes = *environmentBlendModeCountOutput; + { + auto instanceInfo = OverlaysLayerGetHandleInfoFromXrInstance(instance); + auto synchronizeEveryProcLock = gSynchronizeEveryProc + ? std::unique_lock(gSynchronizeEveryProcMutex) + : std::unique_lock(); + result = instanceInfo->downchain->EnumerateEnvironmentBlendModes(instance, systemId, viewConfigurationType, 0, + &numBlendModes, nullptr); + if (XR_FAILED(result)) { + return result; + } + + blendModes.resize(numBlendModes); + result = instanceInfo->downchain->EnumerateEnvironmentBlendModes(instance, systemId, viewConfigurationType, + numBlendModes, &numBlendModes, blendModes.data()); + } + if (XR_FAILED(result)) { + return result; + } + + // Add blend mode if not already on the list + auto is_blend = [](XrEnvironmentBlendMode mode) { return mode == XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND; }; + if (!std::any_of(blendModes.begin(), blendModes.end(), is_blend)) { + blendModes.push_back(XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND); + } + + *environmentBlendModeCountOutput = static_cast(blendModes.size()); + // Copy whatever results + if (environmentBlendModes) { + if (environmentBlendModeCapacityInput < blendModes.size()) { + result = XR_ERROR_SIZE_INSUFFICIENT; + } else { + std::copy(blendModes.begin(), blendModes.end(), environmentBlendModes); + } + } + + return result; + } catch (const OverlaysLayerXrException exc) { + return exc.result(); + } catch (const std::bad_alloc& e) { + OverlaysLayerLogMessage(XR_NULL_HANDLE, XR_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT, "xrEnumerateEnvironmentBlendModes", + OverlaysLayerNoObjectInfo, e.what()); + return XR_ERROR_OUT_OF_MEMORY; + } +} extern "C" { diff --git a/api-layer/overlays.h b/api-layer/overlays.h index 931121a..5ed74ee 100644 --- a/api-layer/overlays.h +++ b/api-layer/overlays.h @@ -775,176 +775,213 @@ union ActionStateUnion XrActionStatePose poseState; }; +// All applications within an overlay session must use the same version of the overlay layer to ensure compatibility, or the some +// RPC to share the main overlay's enum -> string map must be added. enum WellKnownStringIndex { NULL_PATH = 0, - USER_HAND_LEFT_INPUT_GRIP_POSE = 1, - USER_HAND_LEFT_INPUT_Y_TOUCH = 2, - INTERACTION_PROFILES_OCULUS_GO_CONTROLLER = 3, - INTERACTION_PROFILES_HTC_VIVE_CONTROLLER = 4, - USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK = 5, - INPUT_SELECT_CLICK = 6, - USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_Y = 7, - USER_HAND_LEFT_INPUT_Y_CLICK = 8, - INPUT_B_TOUCH = 9, - USER_HAND_RIGHT_INPUT_MENU_CLICK = 10, - INTERACTION_PROFILES_HTC_VIVE_PRO = 11, - INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER = 12, - USER_HAND_LEFT_INPUT_A_CLICK = 13, - INPUT_X_TOUCH = 14, - USER_HAND_LEFT_INPUT_THUMBSTICK = 15, - INPUT_TRACKPAD_FORCE = 16, - INPUT_THUMBSTICK_RIGHT = 17, - INPUT_THUMBSTICK_CLICK = 18, - USER_GAMEPAD_INPUT_DPAD_RIGHT_CLICK = 19, - INPUT_THUMBSTICK_LEFT = 20, - USER_GAMEPAD = 21, - USER_HAND_LEFT_INPUT_TRACKPAD = 22, - USER_HAND_RIGHT_INPUT_TRIGGER_CLICK = 23, - INPUT_DPAD_RIGHT_CLICK = 24, - USER_HAND_RIGHT_INPUT_A_CLICK = 25, - INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER = 26, - INPUT_TRACKPAD = 27, - USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_CLICK = 28, - USER_HAND_RIGHT_INPUT_SYSTEM_TOUCH = 29, - INPUT_SHOULDER_RIGHT_CLICK = 30, - USER_HAND_RIGHT_INPUT_AIM_POSE = 31, - USER_HAND_RIGHT_INPUT_B_CLICK = 32, - INPUT_TRACKPAD_TOUCH = 33, - INPUT_DPAD_DOWN_CLICK = 34, - INPUT_Y_CLICK = 35, - OUTPUT_HAPTIC_RIGHT_TRIGGER = 36, - INPUT_THUMBSTICK_RIGHT_CLICK = 37, - INPUT_Y_TOUCH = 38, - USER_HAND_RIGHT_INPUT_SELECT_CLICK = 39, - USER_HEAD = 40, - INPUT_SYSTEM_CLICK = 41, - USER_HAND_RIGHT_INPUT_GRIP_POSE = 42, - USER_HAND_LEFT_INPUT_SYSTEM_TOUCH = 43, - USER_HAND_LEFT_INPUT_B_TOUCH = 44, - USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_Y = 45, - OUTPUT_HAPTIC_LEFT_TRIGGER = 46, - OUTPUT_HAPTIC_LEFT = 47, - INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER = 48, - USER_HAND_LEFT_INPUT_THUMBSTICK_Y = 49, - USER_HAND_RIGHT_INPUT_SYSTEM_CLICK = 50, - USER_HAND_LEFT_INPUT_TRACKPAD_X = 51, - USER_HAND_RIGHT_INPUT_TRIGGER_VALUE = 52, - OUTPUT_HAPTIC_RIGHT = 53, - INPUT_THUMBSTICK_TOUCH = 54, - USER_HAND_LEFT_INPUT_SQUEEZE_CLICK = 55, - USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_X = 56, - USER_HAND_LEFT_INPUT_TRACKPAD_FORCE = 57, - USER_HAND_RIGHT_INPUT_TRACKPAD_X = 58, - INPUT_THUMBSTICK_Y = 59, - USER_HEAD_INPUT_VOLUME_UP_CLICK = 60, - USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT = 61, - USER_HAND_LEFT_INPUT_TRIGGER_VALUE = 62, - INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER = 63, - USER_HAND_RIGHT_INPUT_TRACKPAD_Y = 64, - USER_GAMEPAD_INPUT_Y_CLICK = 65, - USER_GAMEPAD_OUTPUT_HAPTIC_LEFT = 66, - USER_HAND_LEFT_INPUT_TRIGGER_TOUCH = 67, - USER_HEAD_INPUT_MUTE_MIC_CLICK = 68, - USER_GAMEPAD_INPUT_A_CLICK = 69, - USER_HAND_RIGHT_INPUT_THUMBSTICK = 70, - INPUT_BACK_CLICK = 71, - INPUT_TRIGGER_TOUCH = 72, - INPUT_TRACKPAD_CLICK = 73, - USER_HAND_LEFT_INPUT_SELECT_CLICK = 74, - INPUT_THUMBSTICK_LEFT_Y = 75, - INPUT_THUMBSTICK = 76, - INPUT_DPAD_LEFT_CLICK = 77, - USER_GAMEPAD_OUTPUT_HAPTIC_LEFT_TRIGGER = 78, - USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK = 79, + INPUT_A_CLICK = 1, + INPUT_A_TOUCH = 2, + INPUT_AIM_POSE = 3, + INPUT_B_CLICK = 4, + INPUT_B_TOUCH = 5, + INPUT_BACK_CLICK = 6, + INPUT_DPAD_DOWN_CLICK = 7, + INPUT_DPAD_LEFT_CLICK = 8, + INPUT_DPAD_RIGHT_CLICK = 9, + INPUT_DPAD_UP_CLICK = 10, + INPUT_GAZE_EXT_POSE = 11, + INPUT_GRIP_POSE = 12, + INPUT_MENU_CLICK = 13, + INPUT_MUTE_MIC_CLICK = 14, + INPUT_SELECT_CLICK = 15, + INPUT_SELECT_VALUE = 16, + INPUT_SHOULDER_CLICK = 17, + INPUT_SHOULDER_LEFT_CLICK = 18, + INPUT_SHOULDER_RIGHT_CLICK = 19, + INPUT_SQUEEZE_CLICK = 20, + INPUT_SQUEEZE_FORCE = 21, + INPUT_SQUEEZE_VALUE = 22, + INPUT_SYSTEM_CLICK = 23, + INPUT_SYSTEM_TOUCH = 24, + INPUT_THUMBREST_TOUCH = 25, + INPUT_THUMBSTICK = 26, + INPUT_THUMBSTICK_CLICK = 27, + INPUT_THUMBSTICK_TOUCH = 28, + INPUT_THUMBSTICK_X = 29, + INPUT_THUMBSTICK_Y = 30, + INPUT_THUMBSTICK_LEFT = 31, + INPUT_THUMBSTICK_LEFT_CLICK = 32, + INPUT_THUMBSTICK_LEFT_X = 33, + INPUT_THUMBSTICK_LEFT_Y = 34, + INPUT_THUMBSTICK_RIGHT = 35, + INPUT_THUMBSTICK_RIGHT_CLICK = 36, + INPUT_THUMBSTICK_RIGHT_X = 37, + INPUT_THUMBSTICK_RIGHT_Y = 38, + INPUT_TRACKPAD = 39, + INPUT_TRACKPAD_CLICK = 40, + INPUT_TRACKPAD_FORCE = 41, + INPUT_TRACKPAD_TOUCH = 42, + INPUT_TRACKPAD_X = 43, + INPUT_TRACKPAD_Y = 44, + INPUT_TRIGGER_CLICK = 45, + INPUT_TRIGGER_TOUCH = 46, + INPUT_TRIGGER_VALUE = 47, + INPUT_TRIGGER_LEFT_VALUE = 48, + INPUT_TRIGGER_RIGHT_VALUE = 49, + INPUT_VIEW_CLICK = 50, + INPUT_VOLUME_DOWN_CLICK = 51, + INPUT_VOLUME_UP_CLICK = 52, + INPUT_X_CLICK = 53, + INPUT_X_TOUCH = 54, + INPUT_Y_CLICK = 55, + INPUT_Y_TOUCH = 56, + INTERACTION_PROFILES_EXT_EYE_GAZE_INTERACTION = 57, + INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER = 58, + INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER = 59, + INTERACTION_PROFILES_HTC_VIVE_CONTROLLER = 60, + INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER = 61, + INTERACTION_PROFILES_HTC_VIVE_PRO = 62, + INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER = 63, + INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION = 64, + INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER = 65, + INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER = 66, + INTERACTION_PROFILES_OCULUS_GO_CONTROLLER = 67, + INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER = 68, + INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER = 69, + INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER = 70, + OUTPUT_HAPTIC = 71, + OUTPUT_HAPTIC_LEFT = 72, + OUTPUT_HAPTIC_LEFT_TRIGGER = 73, + OUTPUT_HAPTIC_RIGHT = 74, + OUTPUT_HAPTIC_RIGHT_TRIGGER = 75, + USER_EYES_EXT = 76, + USER_EYES_EXT_INPUT_GAZE_EXT_POSE = 77, + USER_GAMEPAD = 78, + USER_GAMEPAD_INPUT_A_CLICK = 79, USER_GAMEPAD_INPUT_B_CLICK = 80, - INPUT_VIEW_CLICK = 81, - INPUT_B_CLICK = 82, - USER_GAMEPAD_INPUT_VIEW_CLICK = 83, - USER_GAMEPAD_INPUT_DPAD_DOWN_CLICK = 84, - USER_HAND_RIGHT_INPUT_B_TOUCH = 85, - USER_HAND_RIGHT_INPUT_TRIGGER_TOUCH = 86, - INPUT_DPAD_UP_CLICK = 87, - USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK = 88, - USER_GAMEPAD_INPUT_TRIGGER_LEFT_VALUE = 89, - INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER = 90, - INPUT_TRACKPAD_Y = 91, - INPUT_SQUEEZE_FORCE = 92, - USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH = 93, - USER_HAND_LEFT_INPUT_THUMBREST_TOUCH = 94, - USER_HAND_LEFT_INPUT_X_TOUCH = 95, - INPUT_MENU_CLICK = 96, - USER_HAND_RIGHT_INPUT_A_TOUCH = 97, - USER_HAND_RIGHT_INPUT_TRACKPAD_FORCE = 98, - USER_HAND_LEFT_INPUT_SYSTEM_CLICK = 99, - USER_HAND_LEFT_INPUT_MENU_CLICK = 100, - USER_GAMEPAD_INPUT_X_CLICK = 101, - USER_HAND_RIGHT_INPUT_SQUEEZE_FORCE = 102, - USER_HAND_LEFT_INPUT_SQUEEZE_FORCE = 103, - INPUT_SYSTEM_TOUCH = 104, - USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE = 105, - USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK = 106, - INPUT_TRIGGER_RIGHT_VALUE = 107, - USER_HAND_LEFT_INPUT_BACK_CLICK = 108, - USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_CLICK = 109, - USER_HAND_RIGHT = 110, - USER_HAND_LEFT_INPUT_TRACKPAD_CLICK = 111, - USER_HAND_LEFT = 112, - INPUT_A_CLICK = 113, - INPUT_THUMBSTICK_LEFT_CLICK = 114, - USER_GAMEPAD_INPUT_DPAD_UP_CLICK = 115, - INPUT_GRIP_POSE = 116, - USER_HAND_RIGHT_INPUT_THUMBSTICK_Y = 117, - INPUT_SQUEEZE_VALUE = 118, - USER_HAND_LEFT_INPUT_X_CLICK = 119, - USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH = 120, - USER_HAND_LEFT_INPUT_THUMBSTICK_X = 121, - INPUT_MUTE_MIC_CLICK = 122, - USER_HEAD_INPUT_SYSTEM_CLICK = 123, - USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT = 124, - USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT_TRIGGER = 125, - USER_HAND_LEFT_INPUT_TRIGGER_CLICK = 126, - INPUT_THUMBSTICK_LEFT_X = 127, - INPUT_TRACKPAD_X = 128, - USER_HAND_LEFT_INPUT_TRACKPAD_Y = 129, - USER_GAMEPAD_INPUT_TRIGGER_RIGHT_VALUE = 130, - USER_HAND_RIGHT_INPUT_TRACKPAD = 131, - OUTPUT_HAPTIC = 132, - INPUT_THUMBSTICK_X = 133, - USER_HAND_LEFT_OUTPUT_HAPTIC = 134, - USER_GAMEPAD_INPUT_MENU_CLICK = 135, - USER_HAND_RIGHT_INPUT_THUMBSTICK_TOUCH = 136, - INPUT_SQUEEZE_CLICK = 137, - INPUT_X_CLICK = 138, - INPUT_TRIGGER_VALUE = 139, - USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_X = 140, - USER_HAND_LEFT_INPUT_THUMBSTICK_TOUCH = 141, - USER_HAND_RIGHT_INPUT_THUMBREST_TOUCH = 142, - USER_HAND_RIGHT_OUTPUT_HAPTIC = 143, - INPUT_THUMBSTICK_RIGHT_X = 144, - USER_HAND_LEFT_INPUT_A_TOUCH = 145, - INPUT_THUMBREST_TOUCH = 146, - USER_GAMEPAD_INPUT_SHOULDER_LEFT_CLICK = 147, - INPUT_SHOULDER_LEFT_CLICK = 148, - INPUT_VOLUME_UP_CLICK = 149, - INPUT_TRIGGER_LEFT_VALUE = 150, - INPUT_A_TOUCH = 151, - INPUT_VOLUME_DOWN_CLICK = 152, - USER_HEAD_INPUT_VOLUME_DOWN_CLICK = 153, - USER_HAND_RIGHT_INPUT_BACK_CLICK = 154, - USER_HAND_LEFT_INPUT_AIM_POSE = 155, - INPUT_THUMBSTICK_RIGHT_Y = 156, - INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER = 157, - USER_GAMEPAD_INPUT_DPAD_LEFT_CLICK = 158, - USER_GAMEPAD_INPUT_THUMBSTICK_LEFT = 159, - USER_HAND_RIGHT_INPUT_THUMBSTICK_X = 160, - INPUT_TRIGGER_CLICK = 161, - INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER = 162, - INPUT_AIM_POSE = 163, - USER_HAND_LEFT_INPUT_B_CLICK = 164, - USER_HAND_LEFT_INPUT_SQUEEZE_VALUE = 165, - USER_GAMEPAD_INPUT_SHOULDER_RIGHT_CLICK = 166, - -}; // Existing entries will need to not change for subsequent versions for backward compatibility after the first public release + USER_GAMEPAD_INPUT_DPAD_DOWN_CLICK = 81, + USER_GAMEPAD_INPUT_DPAD_LEFT_CLICK = 82, + USER_GAMEPAD_INPUT_DPAD_RIGHT_CLICK = 83, + USER_GAMEPAD_INPUT_DPAD_UP_CLICK = 84, + USER_GAMEPAD_INPUT_MENU_CLICK = 85, + USER_GAMEPAD_INPUT_SHOULDER_LEFT_CLICK = 86, + USER_GAMEPAD_INPUT_SHOULDER_RIGHT_CLICK = 87, + USER_GAMEPAD_INPUT_THUMBSTICK_LEFT = 88, + USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_CLICK = 89, + USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_X = 90, + USER_GAMEPAD_INPUT_THUMBSTICK_LEFT_Y = 91, + USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT = 92, + USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_CLICK = 93, + USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_X = 94, + USER_GAMEPAD_INPUT_THUMBSTICK_RIGHT_Y = 95, + USER_GAMEPAD_INPUT_TRIGGER_LEFT_VALUE = 96, + USER_GAMEPAD_INPUT_TRIGGER_RIGHT_VALUE = 97, + USER_GAMEPAD_INPUT_VIEW_CLICK = 98, + USER_GAMEPAD_INPUT_X_CLICK = 99, + USER_GAMEPAD_INPUT_Y_CLICK = 100, + USER_GAMEPAD_OUTPUT_HAPTIC_LEFT = 101, + USER_GAMEPAD_OUTPUT_HAPTIC_LEFT_TRIGGER = 102, + USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT = 103, + USER_GAMEPAD_OUTPUT_HAPTIC_RIGHT_TRIGGER = 104, + USER_HAND_LEFT = 105, + USER_HAND_LEFT_INPUT_A_CLICK = 106, + USER_HAND_LEFT_INPUT_A_TOUCH = 107, + USER_HAND_LEFT_INPUT_AIM_POSE = 108, + USER_HAND_LEFT_INPUT_B_CLICK = 109, + USER_HAND_LEFT_INPUT_B_TOUCH = 110, + USER_HAND_LEFT_INPUT_BACK_CLICK = 111, + USER_HAND_LEFT_INPUT_GRIP_POSE = 112, + USER_HAND_LEFT_INPUT_MENU_CLICK = 113, + USER_HAND_LEFT_INPUT_SELECT_CLICK = 114, + USER_HAND_LEFT_INPUT_SELECT_VALUE = 115, + USER_HAND_LEFT_INPUT_SHOULDER_CLICK = 116, + USER_HAND_LEFT_INPUT_SQUEEZE_CLICK = 117, + USER_HAND_LEFT_INPUT_SQUEEZE_FORCE = 118, + USER_HAND_LEFT_INPUT_SQUEEZE_VALUE = 119, + USER_HAND_LEFT_INPUT_SYSTEM_CLICK = 120, + USER_HAND_LEFT_INPUT_SYSTEM_TOUCH = 121, + USER_HAND_LEFT_INPUT_THUMBREST_TOUCH = 122, + USER_HAND_LEFT_INPUT_THUMBSTICK = 123, + USER_HAND_LEFT_INPUT_THUMBSTICK_CLICK = 124, + USER_HAND_LEFT_INPUT_THUMBSTICK_TOUCH = 125, + USER_HAND_LEFT_INPUT_THUMBSTICK_X = 126, + USER_HAND_LEFT_INPUT_THUMBSTICK_Y = 127, + USER_HAND_LEFT_INPUT_TRACKPAD = 128, + USER_HAND_LEFT_INPUT_TRACKPAD_CLICK = 129, + USER_HAND_LEFT_INPUT_TRACKPAD_FORCE = 130, + USER_HAND_LEFT_INPUT_TRACKPAD_TOUCH = 131, + USER_HAND_LEFT_INPUT_TRACKPAD_X = 132, + USER_HAND_LEFT_INPUT_TRACKPAD_Y = 133, + USER_HAND_LEFT_INPUT_TRIGGER_CLICK = 134, + USER_HAND_LEFT_INPUT_TRIGGER_TOUCH = 135, + USER_HAND_LEFT_INPUT_TRIGGER_VALUE = 136, + USER_HAND_LEFT_INPUT_X_CLICK = 137, + USER_HAND_LEFT_INPUT_X_TOUCH = 138, + USER_HAND_LEFT_INPUT_Y_CLICK = 139, + USER_HAND_LEFT_INPUT_Y_TOUCH = 140, + USER_HAND_LEFT_OUTPUT_HAPTIC = 141, + USER_HAND_RIGHT = 142, + USER_HAND_RIGHT_INPUT_A_CLICK = 143, + USER_HAND_RIGHT_INPUT_A_TOUCH = 144, + USER_HAND_RIGHT_INPUT_AIM_POSE = 145, + USER_HAND_RIGHT_INPUT_B_CLICK = 146, + USER_HAND_RIGHT_INPUT_B_TOUCH = 147, + USER_HAND_RIGHT_INPUT_BACK_CLICK = 148, + USER_HAND_RIGHT_INPUT_GRIP_POSE = 149, + USER_HAND_RIGHT_INPUT_MENU_CLICK = 150, + USER_HAND_RIGHT_INPUT_SELECT_CLICK = 151, + USER_HAND_RIGHT_INPUT_SELECT_VALUE = 152, + USER_HAND_RIGHT_INPUT_SHOULDER_CLICK = 153, + USER_HAND_RIGHT_INPUT_SQUEEZE_CLICK = 154, + USER_HAND_RIGHT_INPUT_SQUEEZE_FORCE = 155, + USER_HAND_RIGHT_INPUT_SQUEEZE_VALUE = 156, + USER_HAND_RIGHT_INPUT_SYSTEM_CLICK = 157, + USER_HAND_RIGHT_INPUT_SYSTEM_TOUCH = 158, + USER_HAND_RIGHT_INPUT_THUMBREST_TOUCH = 159, + USER_HAND_RIGHT_INPUT_THUMBSTICK = 160, + USER_HAND_RIGHT_INPUT_THUMBSTICK_CLICK = 161, + USER_HAND_RIGHT_INPUT_THUMBSTICK_TOUCH = 162, + USER_HAND_RIGHT_INPUT_THUMBSTICK_X = 163, + USER_HAND_RIGHT_INPUT_THUMBSTICK_Y = 164, + USER_HAND_RIGHT_INPUT_TRACKPAD = 165, + USER_HAND_RIGHT_INPUT_TRACKPAD_CLICK = 166, + USER_HAND_RIGHT_INPUT_TRACKPAD_FORCE = 167, + USER_HAND_RIGHT_INPUT_TRACKPAD_TOUCH = 168, + USER_HAND_RIGHT_INPUT_TRACKPAD_X = 169, + USER_HAND_RIGHT_INPUT_TRACKPAD_Y = 170, + USER_HAND_RIGHT_INPUT_TRIGGER_CLICK = 171, + USER_HAND_RIGHT_INPUT_TRIGGER_TOUCH = 172, + USER_HAND_RIGHT_INPUT_TRIGGER_VALUE = 173, + USER_HAND_RIGHT_OUTPUT_HAPTIC = 174, + USER_HEAD = 175, + USER_HEAD_INPUT_MUTE_MIC_CLICK = 176, + USER_HEAD_INPUT_SYSTEM_CLICK = 177, + USER_HEAD_INPUT_VOLUME_DOWN_CLICK = 178, + USER_HEAD_INPUT_VOLUME_UP_CLICK = 179, +}; + +enum ProfileExtensionReqMask { + REQ_EXTENSION_NONE_MASK = 0, + REQ_EXT_EYE_GAZE_INTERACTION_BIT = (1 << 0), + REQ_EXT_HP_MIXED_REALITY_CONTROLLER_BIT = (1 << 1), + REQ_EXT_SAMSUNG_ODYSSEY_CONTROLLER_BIT = (1 << 2), + REQ_HTC_VIVE_COSMOS_CONTROLLER_INTERACTION_BIT = (1 << 3), + REQ_MSFT_HAND_INTERACTION_BIT = (1 << 4), + REQ_INTERACTION_PROFILES_EXT_EYE_GAZE_INTERACTION_MASK = REQ_EXT_EYE_GAZE_INTERACTION_BIT, + REQ_INTERACTION_PROFILES_GOOGLE_DAYDREAM_CONTROLLER_MASK = REQ_EXTENSION_NONE_MASK, + REQ_INTERACTION_PROFILES_HP_MIXED_REALITY_CONTROLLER_MASK = REQ_EXT_HP_MIXED_REALITY_CONTROLLER_BIT, + REQ_INTERACTION_PROFILES_HTC_VIVE_CONTROLLER_MASK = REQ_EXTENSION_NONE_MASK, + REQ_INTERACTION_PROFILES_HTC_VIVE_COSMOS_CONTROLLER_MASK = REQ_HTC_VIVE_COSMOS_CONTROLLER_INTERACTION_BIT, + REQ_INTERACTION_PROFILES_HTC_VIVE_PRO_MASK = REQ_EXTENSION_NONE_MASK, + REQ_INTERACTION_PROFILES_KHR_SIMPLE_CONTROLLER_MASK = REQ_EXTENSION_NONE_MASK, + REQ_INTERACTION_PROFILES_MICROSOFT_HAND_INTERACTION_MASK = REQ_MSFT_HAND_INTERACTION_BIT, + REQ_INTERACTION_PROFILES_MICROSOFT_MOTION_CONTROLLER_MASK = REQ_EXTENSION_NONE_MASK, + REQ_INTERACTION_PROFILES_MICROSOFT_XBOX_CONTROLLER_MASK = REQ_EXTENSION_NONE_MASK, + REQ_INTERACTION_PROFILES_OCULUS_GO_CONTROLLER_MASK = REQ_EXTENSION_NONE_MASK, + REQ_INTERACTION_PROFILES_OCULUS_TOUCH_CONTROLLER_MASK = REQ_EXTENSION_NONE_MASK, + REQ_INTERACTION_PROFILES_SAMSUNG_ODYSSEY_CONTROLLER_MASK = REQ_EXT_SAMSUNG_ODYSSEY_CONTROLLER_BIT, + REQ_INTERACTION_PROFILES_VALVE_INDEX_CONTROLLER_MASK = REQ_EXTENSION_NONE_MASK +}; // Manually written functions ----------------------------------------------- @@ -1051,6 +1088,11 @@ XrResult OverlaysLayerGetCurrentInteractionProfile(XrSession session, XrPath top XrResult OverlaysLayerLocateViews(XrSession session, const XrViewLocateInfo* viewLocateInfo, XrViewState* viewState, uint32_t viewCapacityInput, uint32_t* viewCountOutput, XrView* views); XrResult OverlaysLayerEnumerateBoundSourcesForActionOverlay(XrInstance instance, XrSession session, const XrBoundSourcesForActionEnumerateInfo* enumerateInfo, uint32_t sourceCapacityInput, uint32_t* sourceCountOutput, XrPath* sources); +XrResult OverlaysLayerEnumerateEnvironmentBlendModes(XrInstance instance, XrSystemId systemId, + XrViewConfigurationType viewConfigurationType, + uint32_t environmentBlendModeCapacityInput, + uint32_t* environmentBlendModeCountOutput, + XrEnvironmentBlendMode* environmentBlendModes); XrResult OverlaysLayerGetInputSourceLocalizedNameMainAsOverlay(ConnectionToOverlay::Ptr connection, XrSession session, const XrInputSourceLocalizedNameGetInfo* getInfo /* sourcePath ignored */, WellKnownStringIndex sourceString, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer); XrResult OverlaysLayerGetInputSourceLocalizedNameOverlay( XrInstance instance, XrSession session, const XrInputSourceLocalizedNameGetInfo* getInfo, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer); diff --git a/overlay-sample/overlay_sample.cpp b/overlay-sample/overlay_sample.cpp index fc0cbb8..d7ccbd4 100644 --- a/overlay-sample/overlay_sample.cpp +++ b/overlay-sample/overlay_sample.cpp @@ -85,6 +85,13 @@ constexpr int gFudgeMinAlpha = 128; int gLayerPlacement = 0; float gLayerRotationalOffset = 0.f; +bool gEmptyFrame = false; +bool gAllInputExtensions = false; + +std::vector gInputExtensionList{ + XR_EXT_SAMSUNG_ODYSSEY_CONTROLLER_EXTENSION_NAME, XR_EXT_HP_MIXED_REALITY_CONTROLLER_EXTENSION_NAME, + XR_EXT_EYE_GAZE_INTERACTION_EXTENSION_NAME, XR_HTC_VIVE_COSMOS_CONTROLLER_INTERACTION_EXTENSION_NAME, + XR_MSFT_HAND_INTERACTION_EXTENSION_NAME}; // OpenXR will give us a LUID. This function will walk adapters to find // the adapter matching that LUID, then create an ID3D11Device* from it so @@ -333,6 +340,7 @@ class OpenXRProgram void OpenXRProgram::CreateInstance(const std::string& appName, uint32_t appVersion, const std::string& engineName, uint32_t engineVersion) { std::map extensions; + auto HasExtension = [&extensions](const char* extName) { return extensions.find(std::string(extName)) != extensions.end(); }; uint32_t extPropCount; CHECK_XR(xrEnumerateInstanceExtensionProperties(nullptr, 0, &extPropCount, nullptr)); @@ -352,30 +360,41 @@ void OpenXRProgram::CreateInstance(const std::string& appName, uint32_t appVersi std::cout << "Extensions supported:\n"; for(const auto& p: extensions) { std::cout << " " << p.first << ", version " << p.second << "\n"; - if(std::string(p.first) == "XR_EXT_debug_utils") { - mDebugUtilsAvailable = true; - } - if(std::string(p.first) == "XR_EXT_permissions_support") { - mPermissionsSupportAvailable = true; - } } } else { std::cout << "Warning: No extensions supported.\n"; } std::vector requiredExtensionNames; - requiredExtensionNames.push_back("XR_KHR_D3D11_enable"); - if (mRequestOverlaySession) { - requiredExtensionNames.push_back(XR_EXTX_OVERLAY_EXTENSION_NAME); - } + auto RequestExtension = [&HasExtension, &requiredExtensionNames](const char* extName) { + if (HasExtension(extName)) { + requiredExtensionNames.push_back(extName); + return true; + } + return false; + }; - if(mDebugUtilsAvailable) { - requiredExtensionNames.push_back("XR_EXT_debug_utils"); + if (!RequestExtension("XR_KHR_D3D11_enable")) { + // Fatal error to not have graphics support + std::cerr << "Error: required D3D11 extension not present" << std::endl; + exit(1); } - if(mPermissionsSupportAvailable) { - requiredExtensionNames.push_back("XR_EXT_permissions_support"); + if (mRequestOverlaySession) { + if (!RequestExtension(XR_EXTX_OVERLAY_EXTENSION_NAME)) { + // Fatal error to not have graphics support + std::cerr << "Error: cannot start overlay session without overlay extension" << std::endl; + exit(1); + } + } + RequestExtension("XR_EXT_debug_utils"); + RequestExtension("XR_EXT_permissions_support"); + if (gAllInputExtensions) { + // Enable all input extensions that are *present* -- typically when as service + for (auto& ext : gInputExtensionList) { + RequestExtension(ext); + } } XrInstanceCreateInfo createInstance{XR_TYPE_INSTANCE_CREATE_INFO}; @@ -420,8 +439,8 @@ void OpenXRProgram::CreateSession(ID3D11Device* d3d11Device, bool requestOverlay d3dBinding.device = d3d11Device; chain = &d3dBinding; + XrSessionCreateInfoOverlayEXTX sessionCreateInfoOverlay{ XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX }; if(requestOverlaySession) { - XrSessionCreateInfoOverlayEXTX sessionCreateInfoOverlay{ XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX }; sessionCreateInfoOverlay.next = chain; sessionCreateInfoOverlay.createFlags = 0; sessionCreateInfoOverlay.sessionLayersPlacement = gLayerPlacement; @@ -1037,6 +1056,7 @@ void usage(const char *programName) std::cerr << "usage: overlay-sample [options]\n"; std::cerr << "options:\n"; std::cerr << " --main Create a main session, not an overlay session\n"; + std::cerr << " --service Create a main session with no content\n"; std::cerr << " --placement N Set overlay layer level to N [default 0]\n"; std::cerr << " --rotational-offset N Angle in radians to offset the layer clockwise about\n"; std::cerr << " the stage space world up vector [default 0]\n"; @@ -1057,6 +1077,12 @@ int main( int argc, char **argv ) arg += 2; } else if (strcmp(argv[arg], "--main") == 0) { createOverlaySession = false; + gAllInputExtensions = true; // Need to support anything an overlay session *could* ask for + arg += 1; + } else if (strcmp(argv[arg], "--service") == 0) { + createOverlaySession = false; + gEmptyFrame = true; + gAllInputExtensions = true; // Need to support anything an overlay session *could* ask for arg += 1; } else if ((strcmp(argv[arg], "--rotational-offset") == 0) || (strcmp(argv[arg], "--rot") == 0)) { @@ -1279,7 +1305,7 @@ int main( int argc, char **argv ) program.BeginFrame(); - if(shouldRender) { + if(shouldRender && !gEmptyFrame) { for(int eye = 0; eye < 2; eye++) {