// Available bindings: // // -- click -- // primary click to interact with the watch or overlays. required // // -- grab -- // used to manipulate position, size, orientation of overlays in 3D space // // -- show_hide -- // used to quickly hide and show your last selection of screens + keyboard // // -- space_drag -- // move your stage (playspace drag) // // -- toggle_dashboard -- // run or toggle visibility of a previously configured WayVR-compatible dashboard // // -- space_rotate -- // rotate your stage (playspace rotate, WIP) // // -- space_reset -- // reset your stage (reset the offset from playspace drag) // // -- click_modifier_right -- // while this is held, your pointer will turn ORANGE and your mouse clicks will be RIGHT clicks // // -- click_modifier_middle -- // while this is held, your pointer will turn PURPLE and your mouse clicks will be MIDDLE clicks // // -- move_mouse -- // when using `focus_follows_mouse_mode`, you need to hold this for the mouse to move // // -- pose, haptic -- // do not mess with these, unless you know what you're doing [ // Fallback controller, intended for testing { profile: "/interaction_profiles/khr/simple_controller", pose: { left: "/user/hand/left/input/aim/pose", right: "/user/hand/right/input/aim/pose" }, haptic: { left: "/user/hand/left/output/haptic", right: "/user/hand/right/output/haptic" }, click: { // left trigger is click left: "/user/hand/left/input/select/click", }, grab: { // right trigger is grab right: "/user/hand/right/input/select/click" }, show_hide: { left: "/user/hand/left/input/menu/click" } }, // Oculus Touch Controller. Compatible with Quest 2, Quest 3, Quest Pro { profile: "/interaction_profiles/oculus/touch_controller", pose: { left: "/user/hand/left/input/aim/pose", right: "/user/hand/right/input/aim/pose" }, haptic: { left: "/user/hand/left/output/haptic", right: "/user/hand/right/output/haptic" }, click: { left: "/user/hand/left/input/trigger/value", right: "/user/hand/right/input/trigger/value" }, grab: { left: "/user/hand/left/input/squeeze/value", right: "/user/hand/right/input/squeeze/value" }, scroll: { left: "/user/hand/left/input/thumbstick/y", right: "/user/hand/right/input/thumbstick/y" }, scroll_horizontal: { left: "/user/hand/left/input/thumbstick/x", right: "/user/hand/right/input/thumbstick/x" }, show_hide: { double_click: true, left: "/user/hand/left/input/y/click", }, space_drag: { left: "/user/hand/left/input/menu/click", }, space_reset: { double_click: true, left: "/user/hand/left/input/menu/click", }, click_modifier_right: { left: "/user/hand/left/input/y/touch", right: "/user/hand/right/input/b/touch" }, click_modifier_middle: { left: "/user/hand/left/input/x/touch", right: "/user/hand/right/input/a/touch" }, move_mouse: { // used with focus_follows_mouse_mode left: "/user/hand/left/input/trigger/touch", right: "/user/hand/right/input/trigger/touch" } }, // Index controller { profile: "/interaction_profiles/valve/index_controller", pose: { left: "/user/hand/left/input/aim/pose", right: "/user/hand/right/input/aim/pose" }, haptic: { left: "/user/hand/left/output/haptic", right: "/user/hand/right/output/haptic" }, click: { left: "/user/hand/left/input/trigger/value", right: "/user/hand/right/input/trigger/value" }, alt_click: { // left trackpad is space_drag right: "/user/hand/right/input/trackpad/force", }, grab: { left: "/user/hand/left/input/squeeze/force", right: "/user/hand/right/input/squeeze/force" }, scroll: { left: "/user/hand/left/input/thumbstick/y", right: "/user/hand/right/input/thumbstick/y" }, scroll_horizontal: { left: "/user/hand/left/input/thumbstick/x", right: "/user/hand/right/input/thumbstick/x" }, toggle_dashboard: { double_click: false, right: "/user/hand/right/input/system/click", }, show_hide: { double_click: true, left: "/user/hand/left/input/a/click", }, space_drag: { left: "/user/hand/left/input/trackpad/force", // right trackpad is alt_click }, space_reset: { left: "/user/hand/left/input/trackpad/force", double_click: true, }, click_modifier_right: { left: "/user/hand/left/input/b/touch", right: "/user/hand/right/input/b/touch" }, click_modifier_middle: { left: "/user/hand/left/input/a/touch", right: "/user/hand/right/input/a/touch" }, move_mouse: { // used with focus_follows_mouse_mode left: "/user/hand/left/input/trigger/touch", right: "/user/hand/right/input/trigger/touch" } }, // Vive controller { profile: "/interaction_profiles/htc/vive_controller", pose: { left: "/user/hand/left/input/aim/pose", right: "/user/hand/right/input/aim/pose" }, click: { left: "/user/hand/left/input/trigger/value", right: "/user/hand/right/input/trigger/value" }, grab: { left: "/user/hand/left/input/squeeze/click", right: "/user/hand/right/input/squeeze/click" }, scroll: { left: "/user/hand/left/input/trackpad/y", right: "/user/hand/right/input/trackpad/y" }, scroll_horizontal: { left: "/user/hand/left/input/trackpad/x", right: "/user/hand/right/input/trackpad/x" }, show_hide: { left: "/user/hand/left/input/menu/click", }, space_drag: { right: "/user/hand/right/input/menu/click", }, space_reset: { double_click: true, right: "/user/hand/right/input/menu/click", }, haptic: { left: "/user/hand/left/output/haptic", right: "/user/hand/right/output/haptic" } }, // Windows Mixed Reality controller { profile: "/interaction_profiles/microsoft/motion_controller", pose: { left: "/user/hand/left/input/aim/pose", right: "/user/hand/right/input/aim/pose" }, haptic: { left: "/user/hand/left/output/haptic", right: "/user/hand/right/output/haptic" }, click: { left: "/user/hand/left/input/trigger/value", right: "/user/hand/right/input/trigger/value" }, grab: { left: "/user/hand/left/input/squeeze/click", right: "/user/hand/right/input/squeeze/click" }, scroll: { left: "/user/hand/left/input/thumbstick/y", right: "/user/hand/right/input/thumbstick/y" }, scroll_horizontal: { left: "/user/hand/left/input/thumbstick/x", right: "/user/hand/right/input/thumbstick/x" }, show_hide: { left: "/user/hand/left/input/system/click", }, space_drag: { right: "/user/hand/right/input/system/click", }, space_reset: { double_click: true, right: "/user/hand/right/input/system/click", }, click_modifier_right: { left: "/user/hand/left/input/trackpad/dpad_up", right: "/user/hand/right/input/trackpad/dpad_up" }, click_modifier_middle: { left: "/user/hand/left/input/trackpad/dpad_down", right: "/user/hand/right/input/trackpad/dpad_down" }, }, // HP Reverb G2 controller { profile: "/interaction_profiles/hp/mixed_reality_controller", pose: { left: "/user/hand/left/input/aim/pose", right: "/user/hand/right/input/aim/pose" }, haptic: { left: "/user/hand/left/output/haptic", right: "/user/hand/right/output/haptic" }, click: { left: "/user/hand/left/input/trigger/value", right: "/user/hand/right/input/trigger/value" }, grab: { left: "/user/hand/left/input/squeeze/value", right: "/user/hand/right/input/squeeze/value" }, scroll: { left: "/user/hand/left/input/thumbstick/y", right: "/user/hand/right/input/thumbstick/y" }, scroll_horizontal: { left: "/user/hand/left/input/thumbstick/x", right: "/user/hand/right/input/thumbstick/x" }, show_hide: { left: "/user/hand/left/input/system/click", }, space_drag: { right: "/user/hand/right/input/system/click", }, space_reset: { double_click: true, right: "/user/hand/right/input/system/click", }, }, ]