mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 03:00:06 +02:00
The last state of the experiment, kept on this branch only: - input/gazefirst.py, input/steamui.py: the relay reading the controllers from vrserver's web socket, switching the compositor binding, and driving the Steam UI filter (whose block now expires unless renewed). - The helper's trigger and bumper holds (steered by the controller's position), the laser keeper, and the click gate that waits for the laser. - pointer/probe/focustest (overlay flag 1 << 4, as an input client too), vrsetting (SteamVR settings through vrserver), lasertest --reclaim. Every press and release Steam sees takes SteamVR out of laser mode, and taking the laser back breaks clicks and drags. See docs/gaze-controllers.md on experimental. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
188 lines
5.6 KiB
JSON
188 lines
5.6 KiB
JSON
{
|
|
"action_manifest_version": 0,
|
|
"alias_info": {},
|
|
"app_key": "openvr.component.vrcompositor",
|
|
"bindings": {
|
|
"/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/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": "Gaze first (Frametop, docs/gaze-first.md): the stock compositor binding with only the Steam button (dashboard, room view, recenter, screenshot chord) and room setup left. The relay reads the rest from vrserver's web socket.",
|
|
"name": "Frametop gaze first: Frame controller, Steam button only",
|
|
"options": {},
|
|
"simulated_actions": []
|
|
}
|