mirror of
https://github.com/VioletTides/KnockThru.git
synced 2026-10-29 04:03:02 +01:00
A knock needs the controller to move first. While every tracked controller stays under 0.1 m/s, the pose thread reads every 10 ms. The first read that sees a controller faster than that switches back to 1 kHz, which holds for 0.5 s after the last movement. KNOCKTHRU_TEST_RATE now takes moving_speed, hold_s, still_ms, and idle_ms for sweeps. Every recording gives the same actions as the 1 kHz replay, calibration included. Margins from the sweep: - still_ms 20 and 30 give the same result. - moving_speed 0.2 with hold_s 0.5 gives the same result. - moving_speed 0.3 with hold_s 0.5 loses one headset double. - moving_speed 0.3 with hold_s 0.3 gives a wrong action in mixed. Reads in the recordings, which are knock sessions with little rest, drop from 414,710 to 378,881 (9%). straps and leg-doubles drop 20%. play and noise do not change. scripts/measure.sh 60 on the Frame in standby, twice: 0.23-0.28% CPU and 70 wakeups/s for the whole app, the same as before this change. The still rate only applies with a controller on, which needs the headset worn, so the Frame has no measurement of it yet.
KnockThru docs
These pages explain how KnockThru works on the inside. To install and use it, read the main README instead.
- How knock detection works: how KnockThru tells a knock apart from swinging your arms, and where each rule came from.
- How calibration works: what the calibration walkthrough measures, and how it turns your knocks into thresholds.
- The test recordings: the motion recordings from a Steam Frame that every change gets tested against.
- How the app fits together: what runs on the headset, how it switches passthrough, and where your settings live.
- Settings: every key in
config.json.
Every number in these pages comes from the code or from the test recordings. If you change a threshold, update the page that explains it.