mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 05:00:08 +02:00
Hands: fixes from the second headset test (pinches)
- The palm-down filter is off by default: the user's deliberate pinches, hand raised, read 0.90-0.99, like typing. - Typing is told apart by the keyboard instead: the input relay sends the pointer helper "typing" on key presses, and it takes no pinch within POINTER_PINCH_TYPING (1 s) of one. - Grips are still held to hands raised (POINTER_GRIP_BELOW, 0.35 m below the eyes); pinches aren't, since the user's own sat 0.35-0.45 m below, elbow resting. - A grip doesn't begin with the thumb on the index tip: that's a pinch with the other fingers curled, which was taken for a grip. - A pinch's point is the index and middle knuckles: the tips' midpoint moved 1-2 cm as the pinch opened, dragging every release off its press. - ft-hands --gesture-log prints what the detectors measure, 10 times a second. Pinches still aren't reliable enough to use; hand tracking is parked for now in favour of the controllers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
fbd188f5f9
commit
5ca4160a7e
7 files changed
+70
-25
No files matched your search
@@ -34,6 +34,8 @@ reaches games; see pointer/helper/vrbuttons.h).
|
||||
|
||||
In gaze mode outside games, the helper keeps the pointer ("gazeawake 1", repeated every 5
|
||||
seconds; "gazeawake 0" or silence ends it): the pointer isn't released when the mouse is idle.
|
||||
Typing on a keyboard sends the helper "typing" (at most 4 times a second): it takes no hand
|
||||
pinches right after a key, since typing touches thumb to index like a pinch.
|
||||
|
||||
Keys also go to ft-screens (@ft_screens, the Frametop desktop's compositor), which
|
||||
types them into the desktop screen that has focus: from pass-through keyboards, and
|
||||
@@ -614,6 +616,7 @@ def main():
|
||||
load_config()
|
||||
meta_down = False # Meta pressed with no other key yet: a tap toggles the dashboard
|
||||
screens_sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM | socket.SOCK_NONBLOCK)
|
||||
last_typing = 0.0 # the helper was last told of a key then (see "typing" at the top)
|
||||
|
||||
def vr_bind(now):
|
||||
"""Tell the pointer helper which controller buttons to take from games."""
|
||||
@@ -957,6 +960,9 @@ def main():
|
||||
# Observed only, unless typing goes to the desktop. With META_DASHBOARD=1,
|
||||
# a Meta tap on any keyboard toggles the dashboard.
|
||||
if node.role == "passthrough" and etype == EV_KEY:
|
||||
if value == 1 and code < BTN_MISC and now - last_typing >= 0.25:
|
||||
last_typing = now
|
||||
screens_sock.sendto(b"typing", HELPER)
|
||||
to_screens(code, value)
|
||||
if node.grabbed and code < BTN_MISC and value in (0, 1):
|
||||
share_key(node, code, value)
|
||||
|
||||
Reference in new issue
Block a user