Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
fe91a5b
Update vcpkg
ButterscotchV Jan 16, 2026
3ac80a4
Add builtin-baseline for VS vcpkg
ButterscotchV Jan 16, 2026
14df5cb
WIP Add support for fingers via protobuf
Erimelowo Jun 21, 2025
7b95c09
Add version and input support via protobuf
Erimelowo Jul 4, 2025
8fe8d58
WIP working on inputs
Erimelowo Jul 12, 2025
3dd192c
get finger bone index properly
Erimelowo Nov 6, 2025
6875a3c
Add initial structures for allowing full controller input forwarding …
Sebane1 Nov 19, 2025
1e2be88
Update protobuffs
Sebane1 Jan 13, 2026
390a1f2
Adjust protobuf data for proper controller input support.
Sebane1 Jan 17, 2026
2989a9c
Add controller input message
Sebane1 Jan 17, 2026
69f7f17
Temporarily comment out finger code.
Sebane1 Jan 17, 2026
8719fc2
Add perenthesis.
Sebane1 Jan 17, 2026
7f08226
Comment out inputs.
Sebane1 Jan 17, 2026
7e8bff7
Update header file.
Sebane1 Jan 17, 2026
ab3eda1
Add menu/recenter mappings.
Sebane1 Jan 17, 2026
4c2bcfc
Update interface to include controller inputs
Sebane1 Jan 17, 2026
aba12b6
Adjust component creation fields
Sebane1 Jan 17, 2026
6f3ec2b
Fix syntax.
Sebane1 Jan 17, 2026
de1c1fc
Fix strings.
Sebane1 Jan 17, 2026
372361f
Fix strings differently.
Sebane1 Jan 17, 2026
46cc3cd
Fix argument type for ControllerInputMessage in interface.
Sebane1 Jan 17, 2026
f41ef37
Change input strings to match with standard Quest Touch controllers.
Sebane1 Jan 17, 2026
dd26d36
Remove c_str() conversion.
Sebane1 Jan 17, 2026
c25faee
Adjustments for proper controller detection.
Sebane1 Jan 18, 2026
7100031
Adjust inputs, and device type reporting.
Sebane1 Jan 18, 2026
493decb
Use Quest Touch bindings
Sebane1 Jan 18, 2026
0d7c479
Fix input strings
Sebane1 Jan 18, 2026
65c3da8
Update controller bindings.
Sebane1 Jan 18, 2026
7321b57
Dont bother displaying oculus touch
Sebane1 Jan 18, 2026
edc2fe8
Fix double haptic_component_
Sebane1 Jan 18, 2026
d8fe2a0
Temporarily assume anything mapped to hands wnts to be a controller.
Sebane1 Jan 18, 2026
eec61dd
Lets actually remember to map the right hand too.
Sebane1 Jan 18, 2026
df56917
Try a different render model.
Sebane1 Jan 18, 2026
7f85145
Revert to the original model.
Sebane1 Jan 18, 2026
9800b84
Update OpenVR, switch to UpdatePoseComponent when tracker is a contro…
Sebane1 Jan 18, 2026
92eac2e
Use HMD matrix.
Sebane1 Jan 18, 2026
582ba20
Update header
Sebane1 Jan 18, 2026
37775aa
Fix class implementation for ToHMDMatrix
Sebane1 Jan 18, 2026
6db6bac
Use TrackedDevicePoseUpdated for both controllers and tracker.
Sebane1 Jan 18, 2026
1bc718e
Attempt to get pointer working.
Sebane1 Jan 18, 2026
44d2565
Further adjustments to help inputs work correctly.
Sebane1 Jan 18, 2026
8b27962
Add additional tweaks to try and get input to register.
Sebane1 Jan 18, 2026
b50cff5
Remove invalid function.
Sebane1 Jan 18, 2026
09f8bd3
Cleanup inputs. More attempts to get inputs to register.
Sebane1 Jan 18, 2026
2d19b88
Remove invalid syntax
Sebane1 Jan 18, 2026
9faef72
Fix missing references
Sebane1 Jan 18, 2026
8e81c53
Fix incorrect references.
Sebane1 Jan 19, 2026
2cb5d6b
Fix invalid syntax
Sebane1 Jan 19, 2026
ef27cbd
Adjust bindings to more closesly match valve index config.
Sebane1 Jan 19, 2026
7535346
Adjust vr compositor bindings.
Sebane1 Jan 19, 2026
ebe6028
Add output to sources.
Sebane1 Jan 19, 2026
17fd3ae
Set more properties.
Sebane1 Jan 19, 2026
209c912
Set more properties p2
Sebane1 Jan 19, 2026
62f92c5
Use our own virtual controller.
Sebane1 Jan 19, 2026
3e45a63
Dont offset the pointer position for now.
Sebane1 Jan 19, 2026
dd6c975
Whats happens if we dont update the pose component
Sebane1 Jan 19, 2026
4234cc6
Dont really need to check if we're a controller if receiving buttons.
Sebane1 Jan 19, 2026
44a3bb2
Fix syntax error
Sebane1 Jan 19, 2026
f80b4b7
Serial numbers confuse VRChat for some reason
Sebane1 Jan 19, 2026
ffa7c99
More hecking bindings. More trail and error getting SteamVR to take o…
Sebane1 Jan 19, 2026
1cca9a3
Fix syntax error.
Sebane1 Jan 19, 2026
94e6b94
Tweak mappings slightly se see if that gets mappings to work.
Sebane1 Jan 20, 2026
c6a6693
Fix syntax error.
Sebane1 Jan 20, 2026
d5841cf
Add actions.json
Sebane1 Jan 20, 2026
07d8c8d
New day, more binding stuff.
Sebane1 Jan 20, 2026
001e6ed
Log literally everything.
Sebane1 Jan 21, 2026
2e7f280
Fix syntax issues.
Sebane1 Jan 21, 2026
32a8e53
More syntax adjustments
Sebane1 Jan 21, 2026
cdbbc3c
Fix syntax issues.
Sebane1 Jan 21, 2026
284d22f
Fix syntax issues.
Sebane1 Jan 21, 2026
2cce76f
Fix syntax issues.
Sebane1 Jan 21, 2026
5345370
Fix syntax issues
Sebane1 Jan 21, 2026
77c29a8
Increase logging.
Sebane1 Jan 21, 2026
d22e377
Adjust path for logging.
Sebane1 Jan 21, 2026
81cdfa3
Check that inputs have been activated before trying to use them.
Sebane1 Jan 21, 2026
39629e0
Log handle references
Sebane1 Jan 21, 2026
20f6d32
Fix syntax error.
Sebane1 Jan 21, 2026
613ce56
Even more logging
Sebane1 Jan 21, 2026
842d857
Fix syntax errors
Sebane1 Jan 21, 2026
e14e5af
Additonal logging, move input updates to RunFrame
Sebane1 Jan 21, 2026
6fea97d
Only do input updates if we're a controller.
Sebane1 Jan 21, 2026
7e149a5
Debug input values.
Sebane1 Jan 21, 2026
47fd4fa
Adjust log messages.
Sebane1 Jan 21, 2026
652ee32
Let tap inputs be available regardless of being a controller.
Sebane1 Jan 21, 2026
348fd23
Only controllers should do steam input.
Sebane1 Jan 21, 2026
096640c
Fix system click debug
Sebane1 Jan 21, 2026
1287302
Change stick mapping to thumbstick
Sebane1 Jan 21, 2026
ab38d3d
Re-introduce finger mappings.
Sebane1 Feb 6, 2026
c6951e7
Add missing finger bone rotations to protobuff.
Sebane1 Feb 7, 2026
98a8ecb
Add missing input message type
Sebane1 Feb 7, 2026
6987e14
Experiment with swapping pose input to Quest hand tracking when hands…
Sebane1 Feb 20, 2026
b1a477d
Add static keywords.
Sebane1 Feb 20, 2026
9153e80
Add check before swapping pose data.
Sebane1 Feb 20, 2026
a0b8fa0
Adjust blending logic between SlimeVR to VD Controllers.
Sebane1 Feb 20, 2026
586f5a9
Remove smoothing transition logic.
Sebane1 Feb 20, 2026
6e21ad8
Make algorithm for swapping between SlimeVR pose and virtual desktop …
Sebane1 Feb 20, 2026
5159557
Make sure we arent accidentally grabbing ourselves in pose detection.
Sebane1 Feb 20, 2026
ac029ab
Remove logic for attempting to prevent flicker, as it doesnt appear t…
Sebane1 Feb 20, 2026
70461f5
Use hemisphere in front of the user to calculate whether we should sw…
Sebane1 Feb 20, 2026
c5ebd77
Adjust pose swapping calculations
Sebane1 Feb 20, 2026
ef97e77
Temporarily remove pose swapping.
Sebane1 Feb 21, 2026
a42cb13
Ensure only one spot is setting position.
Sebane1 Feb 21, 2026
fde40b5
Re-introduce hand swapping.
Sebane1 Feb 21, 2026
0e68075
Attempt to make transition smoother.
Sebane1 Feb 21, 2026
8158481
Dont write fingers if there is no data.
Sebane1 Feb 21, 2026
946ea20
Makes swapping to SlimeVR hand tracking more responsive
Sebane1 Feb 21, 2026
d098153
Fix type issues.
Sebane1 Feb 21, 2026
9e01483
Increase allowed hand distance.
Sebane1 Feb 21, 2026
2af0873
Add config file resource for hand tracking/slimevr skeleton ratios.
Sebane1 Feb 21, 2026
87d8822
Add slower lerp when tracking system swaps.
Sebane1 Feb 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
41 changes: 41 additions & 0 deletions driver/slimevr/resources/input/actions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"action_manifest_version": 1,
"controller_type": "slimevr_virtual_controller",
"interaction_profile": "/interaction_profiles/valve/index_controller",
"description": "SlimeVR virtual controller",
"app_key": "openvr.component.slimevr",
"actions": {
"pose": [
{ "name": "/actions/main/in/PoseRaw" },
{ "name": "/actions/main/in/PoseAim" }
],
"haptic": [
{ "name": "/actions/main/out/Haptic" }
],
"boolean": [
{ "name": "/actions/main/in/DoubleTap" },
{ "name": "/actions/main/in/TripleTap" },
{ "name": "/actions/main/in/A" },
{ "name": "/actions/main/in/B" },
{ "name": "/actions/main/in/System" },
{ "name": "/actions/main/in/TriggerClick" },
{ "name": "/actions/main/in/GripTouch" },
{ "name": "/actions/main/in/TrackpadClick" },
{ "name": "/actions/main/in/TrackpadTouch" },
{ "name": "/actions/main/in/ThumbstickClick" },
{ "name": "/actions/main/in/ThumbstickTouch" }
],
"scalar": [
{ "name": "/actions/main/in/TriggerValue" },
{ "name": "/actions/main/in/GripValue" },
{ "name": "/actions/main/in/TrackpadX" },
{ "name": "/actions/main/in/TrackpadY" },
{ "name": "/actions/main/in/ThumbstickX" },
{ "name": "/actions/main/in/ThumbstickY" }
],
"skeleton": [
{ "name": "/actions/main/in/SkeletonLeft" },
{ "name": "/actions/main/in/SkeletonRight" }
]
}
}
83 changes: 0 additions & 83 deletions driver/slimevr/resources/input/example_controller_bindings.json

This file was deleted.

1 change: 0 additions & 1 deletion driver/slimevr/resources/input/example_controller_left.svg

This file was deleted.

This file was deleted.

31 changes: 0 additions & 31 deletions driver/slimevr/resources/input/example_tracker_bindings.json

This file was deleted.

109 changes: 109 additions & 0 deletions driver/slimevr/resources/input/slimevr_controller_bindings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
{
"jsonid": "input_profile",
"controller_type": "slimevr_virtual_controller",
"device_class": "TrackedDeviceClass_Controller",
"resource_root": "slimevr",
"driver_name": "slimevr",
"input_bindingui_mode": "controller_handed",
"should_show_binding_errors": true,
"compatibility_mode_controller_type": "knuckles",
"input_bindingui_left": {
"image": "{slimevr}/icons/slimevr_tracker_icon.png"
},
"input_bindingui_right": {
"image": "{slimevr}/icons/slimevr_tracker_icon.png"
},
"input_source": {
"/input/system": {
"type": "button",
"binding_image_point": [ 34, 45 ],
"order": 1
},
"/input/a": {
"type": "button",
"binding_image_point": [ 26, 42 ],
"order": 5
},
"/input/b": {
"type": "button",
"binding_image_point": [ 18, 37 ],
"order": 6
},
"/input/trigger": {
"type": "trigger",
"binding_image_point": [ 11, 60 ],
"order": 2
},
"/input/trackpad": {
"type": "trackpad",
"binding_image_point": [ 27, 37 ],
"order": 3
},
"/input/grip": {
"type": "trigger",
"binding_image_point": [ 47, 86 ],
"order": 7
},
"/input/thumbstick": {
"type": "joystick",
"binding_image_point": [ 31, 26 ],
"order": 4
},
"/input/pinch": {
"type": "pinch",
"binding_image_point": [ 27, 37 ],
"value_source": "/input/trigger",
"capsense_source": "/input/finger/index",
"force_source": "/input/trackpad",
"order": 7
},

"/input/finger/index": {
"type": "trigger",
"visibility": "InputValueVisibility_AvailableButHidden",
"binding_image_point": [ 56, 86 ],
"order": 7
},
"/input/finger/middle": {
"type": "trigger",
"visibility": "InputValueVisibility_AvailableButHidden",
"binding_image_point": [ 56, 86 ],
"order": 8
},
"/input/finger/ring": {
"type": "trigger",
"visibility": "InputValueVisibility_AvailableButHidden",
"binding_image_point": [ 56, 86 ],
"order": 9
},
"/input/finger/pinky": {
"type": "trigger",
"visibility": "InputValueVisibility_AvailableButHidden",
"binding_image_point": [ 56, 86 ],
"order": 10
},

"/pose/raw": {
"type": "pose",
"binding_image_point": [ 5, 35 ]
},
"/input/skeleton/left": {
"type": "skeleton",
"skeleton": "/skeleton/hand/left",
"side": "left",
"binding_image_point": [ 5, 35 ]

},
"/input/skeleton/right": {
"type": "skeleton",
"skeleton": "/skeleton/hand/right",
"side": "right",
"binding_image_point": [ 5, 35 ]
},

"/output/haptic": {
"type": "vibration",
"binding_image_point": [ 5, 35 ]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"bindings": {
"/actions/legacy": {
"haptics": [
],
"poses": [
{
"output": "/actions/legacy/in/Left_Pose",
"path": "/user/hand/left/pose/raw"
},
{
"output": "/actions/legacy/in/Right_Pose",
"path": "/user/hand/right/pose/raw"
}
],
"sources": [
]
}
},
"controller_type": "slimevr_virtual_controller",
"description": "Default binding values for legacy apps using the soft knuckles controller",
"name": "SlimeVR Legacy Defaults",
"simulated_actions": []
}
Loading