From e93bbdba7b5f21307fb025bd4688ff6d2e1202a3 Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Thu, 2 Jul 2026 16:42:49 +0900 Subject: [PATCH] add steam frame default bindings --- wayvr/src/backend/openxr/helpers.rs | 11 +++-- wlx-common/assets/openxr_actions.json5 | 57 +++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/wayvr/src/backend/openxr/helpers.rs b/wayvr/src/backend/openxr/helpers.rs index 0f9b352f..84e9e9ce 100644 --- a/wayvr/src/backend/openxr/helpers.rs +++ b/wayvr/src/backend/openxr/helpers.rs @@ -72,9 +72,14 @@ pub(super) fn init_xr() -> Result<(xr::Instance, xr::SystemId), anyhow::Error> { log::warn!("Missing XR_KHR_composition_layer_color_scale_bias extension."); } - let xr_mndx_system_buttons = b"XR_MNDX_system_buttons".to_vec(); - if available_extensions.other.contains(&xr_mndx_system_buttons) { - enabled_extensions.other.push(xr_mndx_system_buttons); + let xr_extension = b"XR_MNDX_system_buttons".to_vec(); + if available_extensions.other.contains(&xr_extension) { + enabled_extensions.other.push(xr_extension); + } + + let xr_extension = b"XR_VALVE_frame_controller_interaction".to_vec(); + if available_extensions.other.contains(&xr_extension) { + enabled_extensions.other.push(xr_extension); } //#[cfg(not(debug_assertions))] diff --git a/wlx-common/assets/openxr_actions.json5 b/wlx-common/assets/openxr_actions.json5 index fc509622..3b6a17a2 100644 --- a/wlx-common/assets/openxr_actions.json5 +++ b/wlx-common/assets/openxr_actions.json5 @@ -191,6 +191,61 @@ } }, + // Steam Frame Controller + { + profile: "/interaction_profiles/valve/frame_controller_valve", + pose: { + left: "/user/hand/left/input/aim/pose", + right: "/user/hand/right/input/aim/pose" + }, + click: { + left: "/user/hand/left/input/trigger/click", + right: "/user/hand/right/input/trigger/click" + }, + grab: { + left: "/user/hand/left/input/squeeze/click", + right: "/user/hand/right/input/squeeze/click" + }, + alt_click: { }, + show_hide: { + left: "/user/hand/left/input/view/click" + }, + toggle_dashboard: { + right: "/user/hand/right/input/menu/click" + }, + space_drag: { + left: "/user/hand/left/input/system/click" + }, + space_rotate: { + right: "/user/hand/right/input/system/click", + double_click: true + }, + space_reset: { + left: "/user/hand/left/input/system/click", + double_click: true + }, + click_modifier_right: { + left: "/user/hand/left/input/dpad_right/touch", + right: "/user/hand/right/input/x/touch" + }, + click_modifier_middle: { + left: "/user/hand/left/input/dpad_left/touch", + right: "/user/hand/right/input/b/touch" + }, + move_mouse: { + left: "/user/hand/left/input/trigger/touch", + right: "/user/hand/right/input/trigger/touch" + }, + scroll: { + left: "/user/hand/left/input/thumbstick/y", + right: "/user/hand/right/input/thumbstick/y" + }, + haptic: { + left: "/user/hand/left/output/haptic", + right: "/user/hand/right/output/haptic" + } + }, + // Vive controller { profile: "/interaction_profiles/htc/vive_controller", @@ -360,7 +415,7 @@ }, show_hide: { left: "/user/hand/left/input/secondary/click", - "double_click": true + double_click: true }, click_modifier_right: { left: "/user/hand/left/input/secondary/click",