mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 06:00:09 +02:00
From the first headset tests (docs/gaze-first.md, "Test results"): - SteamVR gives the treadmill path only to a device that hints it when it's added, so the driver hints a role that's no hand from Activate (a hand still only while shown). With it, our device held the dashboard laser with no hand role. The helper doesn't release the pointer for having no hand role when POINTER_ROLE is treadmill. - The helper's global action sets can't mute the compositor (SteamVR reports them inactive while the laser mouse has focus), but selecting pointer/bindings/vrcompositor_frame_controller_gazefirst.json (the stock binding without its trigger and bumper laser entries) through vrserver's /input/selectconfig.action does. - input/vrws.py follows devices that connect later. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
464 lines
9.2 KiB
JSON
464 lines
9.2 KiB
JSON
{
|
|
"action_manifest_version": 0,
|
|
"alias_info": {},
|
|
"app_key": "openvr.component.vrcompositor",
|
|
"bindings": {
|
|
"/actions/dualanalog": {
|
|
"sources": [
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/dualanalog/in/modeswitch1"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/left/input/grip"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/dualanalog/in/modeswitch2"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/right/input/grip"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/dualanalog/in/leftclick"
|
|
},
|
|
"position": {
|
|
"output": "/actions/dualanalog/in/leftvalue"
|
|
}
|
|
},
|
|
"mode": "joystick",
|
|
"path": "/user/hand/left/input/thumbstick"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/dualanalog/in/rightclick"
|
|
},
|
|
"position": {
|
|
"output": "/actions/dualanalog/in/rightvalue"
|
|
}
|
|
},
|
|
"mode": "joystick",
|
|
"path": "/user/hand/right/input/thumbstick"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/dualanalog/in/leftclick"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/left/input/trigger"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/dualanalog/in/rightclick"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/right/input/trigger"
|
|
}
|
|
]
|
|
},
|
|
"/actions/lasermouse": {
|
|
"haptics": [
|
|
{
|
|
"output": "/actions/lasermouse/out/haptic",
|
|
"path": "/user/hand/left/output/haptic"
|
|
},
|
|
{
|
|
"output": "/actions/lasermouse/out/haptic",
|
|
"path": "/user/hand/right/output/haptic"
|
|
}
|
|
],
|
|
"poses": [
|
|
{
|
|
"output": "/actions/lasermouse/in/Pointer",
|
|
"path": "/user/hand/left/pose/tip"
|
|
},
|
|
{
|
|
"output": "/actions/lasermouse/in/Pointer",
|
|
"path": "/user/hand/right/pose/tip"
|
|
}
|
|
],
|
|
"sources": [
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse/in/rightclick"
|
|
}
|
|
},
|
|
"mode": "joystick",
|
|
"path": "/user/hand/left/input/thumbstick"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse/in/middleclick"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/left/input/dpad_right"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse/in/back"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/left/input/dpad_left"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse/in/home"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/left/input/dpad_down"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse/in/rightclick"
|
|
}
|
|
},
|
|
"mode": "joystick",
|
|
"path": "/user/hand/right/input/thumbstick"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse/in/middleclick"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/right/input/x"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse/in/back"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/right/input/b"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse/in/home"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/right/input/a"
|
|
}
|
|
]
|
|
},
|
|
"/actions/lasermouse_secondary": {
|
|
"sources": [
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse_secondary/in/switchlaserhand"
|
|
}
|
|
},
|
|
"mode": "trigger",
|
|
"path": "/user/hand/left/input/grip"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/lasermouse_secondary/in/switchlaserhand"
|
|
}
|
|
},
|
|
"mode": "trigger",
|
|
"path": "/user/hand/right/input/grip"
|
|
}
|
|
]
|
|
},
|
|
"/actions/scroll_discrete": {
|
|
"sources": [
|
|
{
|
|
"inputs": {
|
|
"scroll": {
|
|
"output": "/actions/scroll_discrete/in/scroll"
|
|
}
|
|
},
|
|
"mode": "scroll",
|
|
"path": "/user/hand/left/input/thumbstick"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"scroll": {
|
|
"output": "/actions/scroll_discrete/in/scroll"
|
|
}
|
|
},
|
|
"mode": "scroll",
|
|
"path": "/user/hand/right/input/thumbstick"
|
|
}
|
|
]
|
|
},
|
|
"/actions/scroll_smooth": {
|
|
"sources": [
|
|
{
|
|
"inputs": {
|
|
"scroll": {
|
|
"output": "/actions/scroll_smooth/in/scroll"
|
|
}
|
|
},
|
|
"mode": "scroll",
|
|
"parameters": {
|
|
"scroll_mode": "smooth"
|
|
},
|
|
"path": "/user/hand/left/input/thumbstick"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"scroll": {
|
|
"output": "/actions/scroll_smooth/in/scroll"
|
|
}
|
|
},
|
|
"mode": "scroll",
|
|
"parameters": {
|
|
"scroll_mode": "smooth"
|
|
},
|
|
"path": "/user/hand/right/input/thumbstick"
|
|
}
|
|
]
|
|
},
|
|
"/actions/system": {
|
|
"chords": [
|
|
{
|
|
"inputs": [
|
|
[
|
|
"/user/hand/left/input/system",
|
|
"held"
|
|
],
|
|
[
|
|
"/user/hand/left/input/trigger",
|
|
"click"
|
|
]
|
|
],
|
|
"output": "/actions/system/in/TakeScreenshot"
|
|
},
|
|
{
|
|
"inputs": [
|
|
[
|
|
"/user/hand/right/input/system",
|
|
"held"
|
|
],
|
|
[
|
|
"/user/hand/right/input/trigger",
|
|
"click"
|
|
]
|
|
],
|
|
"output": "/actions/system/in/TakeScreenshot"
|
|
},
|
|
{
|
|
"inputs": [
|
|
[
|
|
"/user/hand/left/input/system",
|
|
"held"
|
|
],
|
|
[
|
|
"/user/hand/right/input/trigger",
|
|
"click"
|
|
]
|
|
],
|
|
"output": "/actions/system/in/TakeScreenshot"
|
|
},
|
|
{
|
|
"inputs": [
|
|
[
|
|
"/user/hand/right/input/system",
|
|
"held"
|
|
],
|
|
[
|
|
"/user/hand/left/input/trigger",
|
|
"click"
|
|
]
|
|
],
|
|
"output": "/actions/system/in/TakeScreenshot"
|
|
}
|
|
],
|
|
"sources": [
|
|
{
|
|
"inputs": {},
|
|
"mode": "button",
|
|
"parameters": {
|
|
"haptic_amplitude": "0"
|
|
},
|
|
"path": "/user/hand/left/input/trigger"
|
|
},
|
|
{
|
|
"inputs": {},
|
|
"mode": "button",
|
|
"parameters": {
|
|
"haptic_amplitude": "0"
|
|
},
|
|
"path": "/user/hand/right/input/trigger"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/system/in/ToggleDashboard"
|
|
},
|
|
"double": {
|
|
"output": "/actions/system/in/ToggleRoomView"
|
|
},
|
|
"held": {
|
|
"output": "/actions/system/in/SystemButtonChord"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/left/input/system"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/system/in/ToggleDashboard"
|
|
},
|
|
"double": {
|
|
"output": "/actions/system/in/ToggleRoomView"
|
|
},
|
|
"held": {
|
|
"output": "/actions/system/in/SystemButtonChord"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/right/input/system"
|
|
}
|
|
]
|
|
},
|
|
"/actions/quickmouse": {
|
|
"sources": [
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/quickmouse/in/ActivateQuickMouse"
|
|
}
|
|
},
|
|
"mode": "trigger",
|
|
"path": "/user/hand/left/input/grip"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/quickmouse/in/ActivateQuickMouse"
|
|
}
|
|
},
|
|
"mode": "trigger",
|
|
"path": "/user/hand/right/input/grip"
|
|
}
|
|
]
|
|
},
|
|
"/actions/locomotion": {
|
|
"sources": [
|
|
{
|
|
"inputs": {
|
|
"position": {
|
|
"output": "/actions/locomotion/in/movement"
|
|
}
|
|
},
|
|
"mode": "joystick",
|
|
"path": "/user/hand/left/input/thumbstick"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"position": {
|
|
"output": "/actions/locomotion/in/rotation"
|
|
}
|
|
},
|
|
"mode": "joystick",
|
|
"path": "/user/hand/right/input/thumbstick"
|
|
}
|
|
]
|
|
},
|
|
"/actions/quickrecenter": {
|
|
"sources": [
|
|
{
|
|
"inputs": {
|
|
"long": {
|
|
"output": "/actions/quickrecenter/in/Recenter"
|
|
}
|
|
},
|
|
"parameters": {
|
|
"long_press_delay": 1.0,
|
|
"long_press_expiry": 4.0
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/left/input/system"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"long": {
|
|
"output": "/actions/quickrecenter/in/Recenter"
|
|
}
|
|
},
|
|
"parameters": {
|
|
"long_press_delay": 1.0,
|
|
"long_press_expiry": 4.0
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/right/input/system"
|
|
}
|
|
]
|
|
},
|
|
"/actions/roomsetup": {
|
|
"sources": [
|
|
{
|
|
"inputs": {
|
|
"position": {
|
|
"output": "/actions/roomsetup/in/FloorFineAdjust"
|
|
}
|
|
},
|
|
"mode": "joystick",
|
|
"path": "/user/hand/left/input/thumbstick"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"position": {
|
|
"output": "/actions/roomsetup/in/FloorFineAdjust"
|
|
}
|
|
},
|
|
"mode": "joystick",
|
|
"path": "/user/hand/right/input/thumbstick"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/roomsetup/in/Accept"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/right/input/a"
|
|
},
|
|
{
|
|
"inputs": {
|
|
"click": {
|
|
"output": "/actions/roomsetup/in/Back"
|
|
}
|
|
},
|
|
"mode": "button",
|
|
"path": "/user/hand/right/input/b"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"category": "steamvr_input",
|
|
"controller_type": "frame_controller",
|
|
"description": "The Frame controller stock compositor binding without its trigger and bumper laser entries (docs/gaze-first.md)",
|
|
"name": "Frametop gaze first: no trigger or bumper laser",
|
|
"options": {},
|
|
"simulated_actions": []
|
|
}
|