mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 05:00:08 +02:00
Quick check: put the pointer on the dot, and one limit for learning
After the quick check's capture, in gaze mode, the dot stays where it is in the
room (the panel's new "lock") and the gaze has the pointer again. You put the
pointer on the dot as you'd correct a click, with the mouse or Meta+J and the
head. That click clicks nothing: the helper sends it as "calverify", learned
whatever its size. Over POINTER_GAZE_NUDGE_MAX, the capture runs again, up to
3 times. A right click or Meta+K skips it.
POINTER_GAZE_NUDGE_MAX is now the one limit: 15 degrees by default (was 8),
and ft-gazed's own limits (8 for SteamVR's tracker, 25 for ours) follow it. A
keyboard correction past it isn't learned but opens a quick check ("recheck"),
in place of the 30 degree keyboard limit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cbad7bc470
commit
362968198b
9 files changed
+180
-55
No files matched your search
@@ -12,7 +12,10 @@
|
||||
//
|
||||
// Control socket: abstract unix datagram "@ft_gazepanel" (--socket NAME); a sender with an
|
||||
// address gets "ok" or "error ...":
|
||||
// show quick|full the panel, empty, in front of you
|
||||
// show quick|full the panel, empty, in front of you (fixed to the headset)
|
||||
// lock stay where it is in the room now, until the next show (the
|
||||
// quick check's second step: the head carries the pointer onto
|
||||
// the dot, so the dot mustn't move with it)
|
||||
// hide
|
||||
// bg <0..1> the background's brightness (full)
|
||||
// dot <yaw> <pitch> <state> [<progress 0..1>]
|
||||
@@ -317,6 +320,17 @@ int main(int argc, char **argv) {
|
||||
place();
|
||||
ov->ShowOverlay(h);
|
||||
visible = dirty = true;
|
||||
} else if (!std::strcmp(buf, "lock")) {
|
||||
vr::TrackedDevicePose_t pose{};
|
||||
vr::VRSystem()->GetDeviceToAbsoluteTrackingPose(vr::TrackingUniverseStanding, 0, &pose, 1);
|
||||
if (pose.bPoseIsValid) {
|
||||
// The headset's pose, moved out to the panel: where place() puts it now.
|
||||
vr::HmdMatrix34_t m = pose.mDeviceToAbsoluteTracking;
|
||||
for (int r = 0; r < 3; ++r) m.m[r][3] -= float(distance) * m.m[r][2];
|
||||
ov->SetOverlayTransformAbsolute(h, vr::TrackingUniverseStanding, &m);
|
||||
} else {
|
||||
reply = "error no headset pose";
|
||||
}
|
||||
} else if (!std::strcmp(buf, "hide")) {
|
||||
ov->HideOverlay(h);
|
||||
visible = false;
|
||||
|
||||
Reference in new issue
Block a user