From d231850771684fd7b1e408ff5a81a77d437b089f Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Tue, 24 Jan 2023 13:36:34 +0000 Subject: [PATCH] xrt: Add Samsung Odyssey Controller --- src/xrt/auxiliary/bindings/bindings.json | 89 ++++++++++++++++++++++++ src/xrt/include/xrt/xrt_defines.h | 13 ++++ 2 files changed, 102 insertions(+) diff --git a/src/xrt/auxiliary/bindings/bindings.json b/src/xrt/auxiliary/bindings/bindings.json index 639383c82..6937100ed 100644 --- a/src/xrt/auxiliary/bindings/bindings.json +++ b/src/xrt/auxiliary/bindings/bindings.json @@ -930,6 +930,95 @@ } }, + "/interaction_profiles/samsung/odyssey_controller": { + "title": "Samsung Odyssey Controller", + "type": "tracked_controller", + "monado_device": "XRT_DEVICE_SAMSUNG_ODYSSEY_CONTROLLER", + "extension": "XR_EXT_samsung_odyssey_controller", + "subaction_paths": [ + "/user/hand/left", + "/user/hand/right" + ], + "subpaths": { + "/input/menu": { + "type": "button", + "localized_name": "Menu", + "components": ["click"], + "monado_bindings": { + "click": "XRT_INPUT_ODYSSEY_CONTROLLER_MENU_CLICK" + } + }, + "/input/squeeze": { + "type": "button", + "localized_name": "Squeeze", + "components": ["click"], + "monado_bindings": { + "click": "XRT_INPUT_ODYSSEY_CONTROLLER_SQUEEZE_CLICK" + } + }, + "/input/trigger": { + "type": "trigger", + "localized_name": "Trigger", + "components": ["value"], + "monado_bindings": { + "value": "XRT_INPUT_ODYSSEY_CONTROLLER_TRIGGER_VALUE" + } + }, + "/input/thumbstick": { + "type": "joystick", + "localized_name": "Thumbstick", + "components": ["click", "position"], + "dpad_emulation": { + "position": "position", + "center": false + }, + "monado_bindings": { + "click": "XRT_INPUT_ODYSSEY_CONTROLLER_THUMBSTICK_CLICK", + "position": "XRT_INPUT_ODYSSEY_CONTROLLER_THUMBSTICK" + } + }, + "/input/trackpad": { + "type": "trackpad", + "localized_name": "Trackpad", + "components": ["click", "touch", "position"], + "dpad_emulation": { + "position": "position", + "activate": "click", + "center": true + }, + "monado_bindings": { + "click": "XRT_INPUT_ODYSSEY_CONTROLLER_TRACKPAD_CLICK", + "touch": "XRT_INPUT_ODYSSEY_CONTROLLER_TRACKPAD_TOUCH", + "position": "XRT_INPUT_ODYSSEY_CONTROLLER_TRACKPAD" + } + }, + "/input/grip": { + "type": "pose", + "localized_name": "Grip", + "components": ["pose"], + "monado_bindings": { + "pose": "XRT_INPUT_ODYSSEY_CONTROLLER_GRIP_POSE" + } + }, + "/input/aim": { + "type": "pose", + "localized_name": "Aim", + "components": ["pose"], + "monado_bindings": { + "pose": "XRT_INPUT_ODYSSEY_CONTROLLER_AIM_POSE" + } + }, + "/output/haptic": { + "type": "vibration", + "localized_name": "Haptic", + "components": ["haptic"], + "monado_bindings": { + "haptic": "XRT_OUTPUT_NAME_ODYSSEY_CONTROLLER_HAPTIC" + } + } + } + }, + "/interaction_profiles/microsoft/hand_interaction": { "title": "Microsoft hand interaction", "type": "tracked_controller", diff --git a/src/xrt/include/xrt/xrt_defines.h b/src/xrt/include/xrt/xrt_defines.h index f19bbe07a..8c0aede34 100644 --- a/src/xrt/include/xrt/xrt_defines.h +++ b/src/xrt/include/xrt/xrt_defines.h @@ -621,6 +621,7 @@ enum xrt_device_name XRT_DEVICE_INDEX_CONTROLLER, XRT_DEVICE_HP_REVERB_G2_CONTROLLER, + XRT_DEVICE_SAMSUNG_ODYSSEY_CONTROLLER, XRT_DEVICE_HAND_INTERACTION, @@ -875,6 +876,17 @@ enum xrt_input_name XRT_INPUT_G2_CONTROLLER_THUMBSTICK = XRT_INPUT_NAME(0x00F8, VEC2_MINUS_ONE_TO_ONE), XRT_INPUT_G2_CONTROLLER_GRIP_POSE = XRT_INPUT_NAME(0x00F9, POSE), XRT_INPUT_G2_CONTROLLER_AIM_POSE = XRT_INPUT_NAME(0x00FA, POSE), + + XRT_INPUT_ODYSSEY_CONTROLLER_MENU_CLICK = XRT_INPUT_NAME(0x0100, BOOLEAN), + XRT_INPUT_ODYSSEY_CONTROLLER_SQUEEZE_CLICK = XRT_INPUT_NAME(0x0101, BOOLEAN), + XRT_INPUT_ODYSSEY_CONTROLLER_TRIGGER_VALUE = XRT_INPUT_NAME(0x0102, VEC1_ZERO_TO_ONE), + XRT_INPUT_ODYSSEY_CONTROLLER_THUMBSTICK_CLICK = XRT_INPUT_NAME(0x0103, BOOLEAN), + XRT_INPUT_ODYSSEY_CONTROLLER_THUMBSTICK = XRT_INPUT_NAME(0x0104, VEC2_MINUS_ONE_TO_ONE), + XRT_INPUT_ODYSSEY_CONTROLLER_TRACKPAD_CLICK = XRT_INPUT_NAME(0x0105, BOOLEAN), + XRT_INPUT_ODYSSEY_CONTROLLER_TRACKPAD_TOUCH = XRT_INPUT_NAME(0x0106, BOOLEAN), + XRT_INPUT_ODYSSEY_CONTROLLER_TRACKPAD = XRT_INPUT_NAME(0x0107, VEC2_MINUS_ONE_TO_ONE), + XRT_INPUT_ODYSSEY_CONTROLLER_GRIP_POSE = XRT_INPUT_NAME(0x0108, POSE), + XRT_INPUT_ODYSSEY_CONTROLLER_AIM_POSE = XRT_INPUT_NAME(0x0109, POSE), // clang-format on }; @@ -1034,6 +1046,7 @@ enum xrt_output_name XRT_OUTPUT_NAME_FORCE_FEEDBACK_RIGHT = XRT_OUTPUT_NAME(0x0081, FORCE_FEEDBACK), XRT_OUTPUT_NAME_G2_CONTROLLER_HAPTIC = XRT_OUTPUT_NAME(0x0090, VIBRATION), + XRT_OUTPUT_NAME_ODYSSEY_CONTROLLER_HAPTIC = XRT_OUTPUT_NAME(0x00A0, VIBRATION), // clang-format on };