From b41753442548192effc6c6944dd04fd12cc4e35c Mon Sep 17 00:00:00 2001 From: DeeJanuz <45082401+DeeJanuz@users.noreply.github.com> Date: Thu, 1 Oct 2026 17:22:52 -0600 Subject: [PATCH] Hands: ft-cutouts, the hand cutouts without pinches and grips hands/ft-cutouts on|off|status starts ft-camd and ft-hands as transient user units with ft-hands' new --no-gestures: hands are published for ft-screens' cutouts, but no pinch or grip is detected, so nothing clicks or drags and a closing hand doesn't raise the tracking rate. It needs a build and ft-camd's capabilities, not hands/run.sh install. Its units conflict with ft-handsctl's, so each stops the other, and they stop with SteamVR. Co-Authored-By: Claude Opus 5.5 --- hands/README.md | 5 ++++ hands/ft-cutouts | 56 ++++++++++++++++++++++++++++++++++++++++++++ hands/track/main.cpp | 52 ++++++++++++++++++++++++---------------- 3 files changed, 93 insertions(+), 20 deletions(-) create mode 100755 hands/ft-cutouts diff --git a/hands/README.md b/hands/README.md index 849d7e0..cfbca6d 100644 --- a/hands/README.md +++ b/hands/README.md @@ -14,6 +14,8 @@ Two programs, each a user service that stops when SteamVR does: They don't start with SteamVR. `hands/run.sh install` builds them, gives ft-camd its capabilities, installs both services disabled, and links `hands/ft-handsctl` into `~/.local/bin`. Then `ft-handsctl on` starts hand tracking and `ft-handsctl off` stops it. `install.sh` doesn't install it. +For the cutouts alone, `hands/ft-cutouts on` starts the same two programs with ft-hands' `--no-gestures`: your hands show through the screens, and no pinch or grip is detected, so nothing clicks or drags. It runs this checkout's build as transient user units, so it needs `hands/build.sh` and ft-camd's capabilities (`hands/run.sh caps`) but not `hands/run.sh install`. It and `ft-handsctl on` stop each other's services, and it stops with SteamVR too. + ``` ft-handsctl on | off # on the Frame: start or stop hand tracking (SteamVR must be running) ft-handsctl status # the services, and ft-hands' last status lines @@ -21,6 +23,8 @@ ft-handsctl log [lines] ft-handsctl cutouts on|off|state # ft-screens' hand cutouts, without stopping tracking ft-handsctl gestures # pinches and grips, live (tools/watch_gestures.py --distance) +hands/ft-cutouts on | off | status # the cutouts only: no pinches or grips + hands/run.sh install # build, give ft-camd its capabilities (sudo, once per build), install disabled hands/run.sh start|stop # start or stop the services hands/run.sh restart # after changing a setting @@ -104,6 +108,7 @@ Options: - `--models DIR`: where the models are. - `--nice N`: niceness. Default 5, so the VR stack wins contested CPUs. - `--no-publish`: don't write the hands and gestures files. +- `--no-gestures`: hands for the cutouts only. No pinch or grip detection, so nothing reaches the pointer and a closing hand doesn't raise the rate to 30 Hz. The gestures file is removed at start. `ft-cutouts` runs it this way. - `--record DIR`, `--record-for S`: save every frame set for S seconds (default 120) to `DIR/sets.bin`. That's about 80 MB/s. Sending the tracker SIGUSR1 (`pkill -USR1 -x ft-hands`) starts a recording in `~/.local/share/frametop/hands/rec-