Events and patterns
GestureEvent
Section titled “GestureEvent”| Field | Type | Meaning |
|---|---|---|
id |
string | The gesture, e.g. 'head.left'. See the catalog. |
phase |
'start' | 'end' |
Began or stopped. Every start is followed by exactly one end. |
t |
number (ms) | When it happened, on the sample clock. A start is stamped at the gesture’s onset, not when it was confirmed. |
strength |
number | On start: how strongly it crossed the line (1 = exactly at it, or a 0 to 1 score; see each gesture). 0 on end. |
In C# the same fields are Id, Phase (GesturePhase.Start / GesturePhase.End), T and Strength.
Patterns
Section titled “Patterns”| Pattern | Matches |
|---|---|
'blink' |
Exactly that gesture |
'head.*' |
A family: head.left, head.right, head.up, head.down, head.neutral, head.tilt.left, head.tilt.right |
'*' |
Every gesture |
Ordering guarantees
Section titled “Ordering guarantees”- Within one frame, events arrive in a fixed order: face, eyes, mouth, brows, head, expression.
- A gesture never starts twice without ending in between.
- When the profile changes (recalibration,
setProfile), every held gesture exceptface.found/face.lostends first. head.neutralends before a head direction starts, and starts after one ends.
Holding vs. tapping
Section titled “Holding vs. tapping”Fire on start for tap-like verbs (shoot, jump). Treat start…end as a held state for continuous verbs (steer while the head is turned, glow while smiling). isActive(id) tells you whether a gesture is held right now.