Mid-Air Gesture Interaction Design Guidelines
For designers and engineers: let the system clearly judge what counts as input, let users know which state they are in right now, and keep recognition uncertainty from turning into irreversible consequences.
7 principles · 39 rules · MUST 27 · SHOULD 12
Contents
For designers and engineers: let the system clearly judge what counts as input, let users know which state they are in right now, and keep recognition uncertainty from turning into irreversible consequences.
The fundamental difference between mid-air gestures and touch, mouse, or key input is not "how memorable the gesture is," but how input intent is judged:
Mouse and touch provide explicit events such as press, move, and release, but still require designing for cancellation and mis-operation handling. Mid-air gestures must additionally judge, from continuous motion, whether input has begun, whom it belongs to, and when it ends.
The sensor is always capturing, the user is always moving, and the system must continuously adjudicate "is this motion meant for me." This gives rise to two premises that run through the entire document: false triggering is a structural property of this modality, not a detail to be optimized away; tracking loss is a normal state, not an exception-handling branch. Any design that treats these two things as edge cases will fail in real environments.
These guidelines consist of seven principles and 39 rules: principles state the design direction, and rules specify applicable situations, behavior requirements, and verification methods. Each rule belongs to one and only one principle, and the rule number is the principle number (G4-2 is the second rule under the fourth principle).
Each matter is written in only one place. Take "tracking loss" as an example: what behavior the system takes when tracking is lost, how the user knows loss is occurring, and whether the loss makes an already-occurred change unable to be undone belong to three different rules (G5-1, G4-5, G6-2) — because their regulatory objects differ; they are not three phrasings of the same obligation.
What these guidelines constrain is the nature of the interaction commitments a product makes to users and the mechanisms that fulfill them; they do not presuppose a single sensing approach (optical, radar, ultrasonic, and wearable are all applicable), and do not specify a particular SDK or gesture-recognition algorithm. This is not a gesture dictionary and does not prescribe that "waving means next page"; for standardization of concrete gesture forms see the ISO/IEC 30113 series and ISO/IEC 14754. Adopting these guidelines cannot substitute for dedicated assessments of accessibility, privacy, in-vehicle distraction, and domain compliance.
Entry points for reading: configuration fields are in Design Token; use Appendix A during review.
The document has four chapters: Chapter 1 principles, Chapter 2 how to read and quick-reference the rules, Chapter 3 rules in detail, Chapter 4 terminology; the verification checklist and argumentation boundaries are in Appendices A and B, and external source cross-references are in reference.md in the same directory.
1. The Seven Principles
The seven principles divide design responsibility by regulatory object: each principle governs obligations on one category of object, and each rule belongs to the single principle matching the direct regulatory object of its obligation. When objects differ, principles cannot substitute for one another — this is both the basis for the division and the way to test it.
| Principle | Regulatory object | Design direction | Governed rules |
|---|---|---|---|
| G1 Input Validity Is Judgable | The system's judgment of "is this input meant for me" | Do not assume everything the sensor sees is a command. Engagement and disengagement have explicit conditions, input has ownership, and not having exited does not mean continued authorization | G1-1 ~ G1-6 |
| G2 Binding Between Gesture and Meaning | The gesture set and its semantic mapping | Do not let designer intuition define gestures. The gesture set is bounded, discoverable, and mutually distinguishable; meaning stays stable within context | G2-1 ~ G2-6 |
| G3 Physical Cost Has a Budget | The user's physiological and motor resources | Do not treat the body as a free input device. Fatigue, precision limits, and bodily differences are design constraints, not the user's problem | G3-1 ~ G3-5 |
| G4 State Is Perceivable | The basis on which the user judges the system's current state | Do not make users guess the state by trial and error. Applicable-input, candidate, and result feedback are distinguishable, and non-visual channels are provided depending on the scenario | G4-1 ~ G4-6 |
| G5 Recognition Uncertainty Is Made Explicit | The reliability of recognition results and how they are handled | Do not treat probability as fact. Confidence, bias direction, loss behavior, and degradation order are explicit design decisions | G5-1 ~ G5-5 |
| G6 Consequence Is Decoupled from Gesture | The consequences a gesture causes | Do not let a single misrecognition cause an irreversible result. The heavier the consequence, the less the commit path can rely on a single gesture alone | G6-1 ~ G6-5 |
| G7 Context and Other People | The physical and social environment the interaction is situated in | Do not assume a single user, a static, private environment. Bystanders, lighting, posture, and safety-critical tasks all change what interaction is feasible | G7-1 ~ G7-6 |
A single scenario can touch multiple principles — a user performing a delete gesture at the edge of the interaction zone simultaneously involves boundary perceivability (G4-5), handling under low confidence (G5-3), and the commit path for an irreversible action (G6-1) — this is not a classification error: the three rules constrain obligations on three different regulatory objects. Mutual exclusivity and exhaustiveness are claims this division accepts being tested against, not facts established by mere declaration: when a rule's addition, removal, or attribution is in doubt, verify it against the classification test in Appendix A; if the test fails, what gets revised is the division of principles.
Principles are used to understand the rules and adjudicate attribution; they are not, by themselves, a separate judgment item. When the interpretation of a principle conflicts with that of a specific clause, the applicable clause governs, and the ambiguity needing clarification is recorded.
2. How to Read the Rules
2.1 The Structure of Each Rule
| Part | Function |
|---|---|
| In one sentence | The memorable version of the rule; does not replace the body text |
| Applies to | The situations in which this rule takes effect. A product outside the scope of applicability may simply record "not applicable" |
| Rule | The normative text specifying the requirements of this rule |
| Boundary conditions | Together with Applies to, bounds the scope of the requirement: states what this rule does not require, and under what conditions an exception holds (present on some rules only) |
| Design application / Verification examples / Counterexamples | Explanations that help implementation; they add no separate obligation and do not prescribe a single implementation |
| Basis and references | Failure records and implementation references (present on some rules only; sources are in reference.md) |
Rules write the nature of the behavior, not the implementation approach: that a drag MUST NOT continue to advance once the hand leaves the field of view is a product behavior; whether to use a Kalman filter or simply freeze is an engineering approach — the two MUST correspond, but they are not the same deliverable.
2.2 Constraint Words
- MUST: not meeting it means not conforming to these guidelines. Without it, some commitment made to the user will fail under foreseeable conditions — this is the sole basis for marking something "MUST" (see Appendix B).
- MUST NOT (forbidden): the negative-strength counterpart of "MUST," at the same strength; in the body text, "MUST NOT" and "forbidden" are used interchangeably.
- SHOULD: followed by default; when there is genuine reason to deviate, record the reason and the alternative approach, and accept the same verification. Deviation does not require approval, but it does require a paper trail.
Compliance judgment takes the independent obligation clause in the body text as its unit: a declarative sentence with no constraint word carries the strength of its rule heading; an explicit constraint word takes precedence. "SHOULD NOT" is the negative-direction expression of "SHOULD." A "MUST / forbidden / MUST NOT" clause inside a [SHOULD] rule remains a hard constraint (G1-6, G2-5, G2-6, G3-4, G6-5, and G7-5 contain such clauses; among them, G2-6's practice isolation contains both a MUST-level and a forbidden-level clause), and the strength annotation on a rule heading or in the quick-reference table does not replace clause-level binding force.
Strength indicates binding force, not importance: "MUST" decides whether a product can ship at all; "SHOULD" often decides whether the product is good to use.
2.3 The Two Sides of a Counterexample
Counterexamples have two sides: "under-delivery" is missing this requirement; "over-delivery" is piling on confirmations, dwell circles, and prompts in order to satisfy it. Neither side counts as getting it right. The most typical way mid-air gesture design goes wrong is precisely the latter: to suppress false triggering, wrapping every action in a two-second dwell-confirmation circle, turning the interaction into standing at attention — the false-trigger rate does go down, but the interaction dies with it.
2.4 Rule Quick Reference: 39 Rules
The table below is the one-line memorable version of every rule. The quick reference does not replace each rule's applicability conditions and full requirements.
G1 Input Validity Is Judgable
| Rule | Strength | One-liner |
|---|---|---|
| G1-1 Participation State Is Explicit | MUST | Give the user and the system the same answer to "is it receiving gestures right now." |
| G1-2 Gesture Start and End Are Judgable | MUST | Every gesture has a clear beginning and end, not guessed from continuous motion. |
| G1-3 Not Having Left Does Not Mean Continued Authorization | MUST | Not actively exiting does not mean ongoing consent; participation state expires. |
| G1-4 Unintentional Motion Does Not Become Input | MUST | Gesturing while talking, scratching your head, handing something over — none of this should trigger a command. |
| G1-5 Input Ownership Is Clear | MUST | Clear about whom the system listens to and which input takes effect; switching person, hand, or modality has conditions. |
| G1-6 Participation Cost Matches the Scenario | SHOULD | The cost of the entry point should match the value of the feature; avoid extremes on either end. |
G2 Binding Between Gesture and Meaning
| Rule | Strength | One-liner |
|---|---|---|
| G2-1 The Gesture Set Is Bounded and Discoverable | MUST | The number of gestures has a ceiling, and users can discover what they can do without reading a manual. |
| G2-2 Semantic Mapping Is Stable | MUST | The same gesture has only one meaning within the same context. |
| G2-3 Formal Differences Are Sufficient to Distinguish | MUST | Similar-looking gestures do not carry functions with widely differing consequences. |
| G2-4 Do Not Assume Universal Intuition | SHOULD | Gesture meaning is verified against target users, not against what the designer feels is natural. |
| G2-5 Customizable and Can Be Turned Off | SHOULD | Individual gestures may be replaced or turned off, but this cannot be used to bypass consequence constraints. |
| G2-6 Learning Cost Is Re-Enterable | SHOULD | Gestures that need to be learned can be learned again at any time, not covered once and for all in first-run onboarding. |
G3 Physical Cost Has a Budget
| Rule | Strength | One-liner |
|---|---|---|
| G3-1 The Primary Path Does Not Depend on Fatiguing Motion | MUST | High-frequency operations do not require raising the arm above shoulder height or holding it aloft for a long time. |
| G3-2 Precision Requirements Match Human Capability | MUST | Do not carry mouse-level precision requirements into unsupported open air. |
| G3-3 Completable with One Hand | SHOULD | The core path can be completed with one hand, and does not assume a dominant hand. |
| G3-4 Continuous Use Has a Ceiling and Allows Rest | SHOULD | Long tasks offer a supportable posture or an alternative modality, and do not require sustained holding. |
| G3-5 Bodily Differences Do Not Constitute Exclusion | MUST | People with small hands, tremor, missing fingers, or prosthetics must also be able to complete the task. |
G4 State Is Perceivable
| Rule | Strength | One-liner |
|---|---|---|
| G4-1 Each of the Three States Has Its Own Feedback | MUST | In-range, locked, and committed must be distinguishable from one another. |
| G4-2 Feedback Delay Has a Ceiling | MUST | When feedback is slow enough to break the sense of causality, it degrades to discrete feedback rather than no feedback. |
| G4-3 Continuous Motion Has Continuous Feedback | MUST | Display the current value continuously during drag or zoom, not report the result only at the end. |
| G4-4 Feedback Is Not Exclusively Visual | SHOULD | The primary state has at least one non-visual channel. |
| G4-5 Boundaries Are Perceivable | MUST | About-to-exit and already-exited must be known to the user as they happen, not inferred from a lack of response. |
| G4-6 Feedback Does Not Overload | SHOULD | Feedback intensity matches the consequence of the action; not every minor movement gets a loud prompt. |
G5 Recognition Uncertainty Is Made Explicit
| Rule | Strength | One-liner |
|---|---|---|
| G5-1 Tracking Loss Is a Normal State | MUST | Behavior on loss is predefined and safe; continuing to advance using the last frame is forbidden. |
| G5-2 Bias Direction Is Explicit and Tiered | MUST | The base recognition value can be shared, but the consequence-release policy MUST be verified by tier. |
| G5-3 Low Confidence Does Not Pass as Certainty | MUST | When unsure, do not execute a high-consequence action, and do not silently guess one either. |
| G5-4 Recognition Conditions Can Be Known and Improved | SHOULD | When recognition degrades, tell the user the reason, and make it a reason they can act on. |
| G5-5 Degradation Path Is Predefined | MUST | How to fall back when capability drops is decided in advance, in order, not improvised at runtime. |
G6 Consequence Is Decoupled from Gesture
| Rule | Strength | One-liner |
|---|---|---|
| G6-1 Irreversible Actions Are Not Committed by a Single Gesture | MUST | Delete, send, and pay cannot be completed with a single wave. |
| G6-2 Undo Is Reachable | MUST | Recoverable changes have a real undo, and undo does not depend on gestures alone; unrecoverable consequences are not falsely presented as undoable. |
| G6-3 False-Trigger Cost Has a Ceiling | MUST | A single misrecognition's consequence has a ceiling, and repeated false triggers must be detectable and made to converge. |
| G6-4 The Confirmation Gesture Does Not Share Its Form with Common Gestures | MUST | The gesture used for confirmation must be clearly distinct in form from high-frequency gestures. |
| G6-5 Consequence Tier Determines Interaction Form | SHOULD | Protection strength matches the consequence; a more tiring or slower action does not by itself prove greater safety. |
G7 Context and Other People
| Rule | Strength | One-liner |
|---|---|---|
| G7-1 A Non-Gesture Path MUST Exist | MUST | Every feature has an entry point reachable without gestures. |
| G7-2 Capture State Is Visible | MUST | Users can know when the sensor is capturing, and this indicator cannot be turned off. |
| G7-3 Third Parties Are Not Treated as Users | MUST | Passersby do not trigger commands, and are not silently retained. |
| G7-4 Social Acceptability Is Built into the Design | SHOULD | Gestures in public do not make the performer feel embarrassed or make bystanders misunderstand. |
| G7-5 Environmental Change Triggers Adaptation | SHOULD | When lighting, noise, or posture changes, configuration changes with it, rather than one setup for everything. |
| G7-6 Does Not Compete for Attention with Safety-Critical Tasks | MUST | In scenarios such as driving, gestures MUST NOT require looking at a screen or disengaging from the primary task for an extended time. |
2.5 From Task to Interaction Decision
First state what problem the gesture solves for the target user — for example, hands should not touch the screen, fast remote control is needed, or spatial objects are manipulated directly. Compare the gesture path and the non-gesture path for the same task, counting discovery, entry, error correction, and exit together as cost; comparing only the speed of a single recognition is not enough to prove the value of adopting gestures.
The table below is a design record template; it adds no rules and standardizes no values. First choose the platform's existing standard input model, then decide which parts genuinely need to be customized.
| Journey stage | Decision to make | What the user can judge | Failure and recovery | Rule / Token category |
|---|---|---|---|---|
| Discovery and preparation | Applicable scenario, alternative entry point, capture and authorization conditions | What can be done, whether capture is currently happening | After declining authorization, the alternative entry point remains usable | G2-1, G7-1/G7-2 / Context, Fallback |
| Entry | Subject, valid zone, and participation conditions | Whether my action is currently being received | Participation ends after timeout or leaving | G1-1/G1-3/G1-5 / Participation, Interaction zone |
| Selection | Whether the target is determined by hand, gaze, or another input, and when it locks | Which object will be operated on | Candidate is cancelled when the target disappears or changes | G1-2, G4-1 / Gesture set, Feedback |
| Operation | Continuous or discrete mapping, precision, and physical budget | The current value, the current object being operated on | Freeze or roll back on occlusion; re-establish control after tracking is regained | G3-1/G3-2, G4-3, G5-1 / Physical effort, Recognition |
| Confirm or cancel | The point at which it takes effect, target binding, and the active-cancellation method | Whether it has not yet taken effect or has already taken effect | Cancel before commit; after commit, handle according to real undo capability | G1-2, G6-1/G6-2 / Consequence |
| Waiting and error correction | Slow response, unknown result, duplicate-prevention and verification path | Request received, result pending, or confirmed complete | Do not blindly resend via a repeated action; retain usable results | G4-1, G6-2/G6-3 / Feedback, Consequence |
| Switching and leaving | Modality handoff, focus loss, progress retention | Which entry point is currently active | Do not carry the old modality's release event into a new operation | G1-5, G5-1, G7-1 / Participation, Fallback |
Minimum delivery includes: one complete task path, an action-to-consequence mapping, a state-and-transition table, parseable configuration, and verification records and sources. Platform defaults may be inherited, but the platform, input contract, and applicable conditions SHOULD be labeled.
3. Rules in Detail
This chapter lays out all 39 rules under the seven principles. The design applications, verification examples, and counterexamples in it are only explanatory aids for implementation; they do not prescribe a single implementation.
3.1 G1 Input Validity Is Judgable
The sensor is continuously capturing and the user is continuously moving; a clear line is needed between the two: which motions count as a command. This line is defined by the product, enforced by the mechanism, and MUST be visible to the user. A vaguely drawn line makes the product fail in both directions at once — both false triggers and "nothing responds no matter what you do."
G1-1Participation State Is ExplicitMUST
In one sentence: Give the user and the system the same answer to "is it receiving gestures right now."
Applies toall products that use mid-air gestures as an input channel.
RuleThe product MUST define a finite, enumerable set of participation states (distinguishing at least "not participating" from "receiving input"), and ensure the system has a single, unambiguous determination of the current state at any moment. Entry and disengagement MUST each have explicit conditions, and the disengagement conditions MUST include at least one method the user can actively execute. The current participation state MUST be perceivable to the user (perception requirements are in G4-1). Equating "a hand appearing within the capture range" directly with "the user wants to interact" is forbidden, unless the false-trigger consequence has already been constrained by G6 to an acceptable range and recorded as an explicit design decision.
Design applicationentering participation may be an explicit separator gesture, entering a specific spatial volume, an attention anchor (gaze or body orientation), a trigger from another modality, or a combination of the above; the basis for the choice is false-trigger consequence and usage frequency, not technical feasibility.
Verification examples
- User side: have the user approach the device and move naturally without being told anything, and observe whether they can state "whether the system is currently listening to me."
- Implementation side: check whether there is a window in which two modules disagree on the participation-state judgment; check whether state transitions are logged as events.
CounterexamplesUnder-delivery — the system starts responding the moment a hand enters frame, and the user setting down a water glass triggers the next page; over-delivery — every interaction requires a two-second raised-hand confirmation first, and the user would rather just press a physical button.
G1-2Gesture Start and End Are JudgableMUST
In one sentence: Every gesture has a clear beginning and end, not guessed from continuous motion.
Applies toproducts in which gestures produce discrete commands or continuous control. Each sub-clause of this rule applies according to its own object: the segmentation requirement applies to input that must identify a single operation out of a motion stream; the target-binding requirement applies to object-directed operations; the cancellation and progress-reset requirement applies to operations with a preview, drag, dwell, hold, or other not-yet-effective stage. A command with no spatial target may declare "target binding not applicable," but this does not exempt it from the requirements on command start/end and active cancellation.
RuleEvery gesture MUST have judgable start and end conditions. The system MUST be able to distinguish "one complete gesture," "a not-yet-completed gesture," and "a transitional motion between gestures," and MUST NOT recognize a transitional motion (hand retraction, reset, posture switch) as a command. The product MUST explicitly declare the segmentation basis it uses: a separator gesture, a posture change, a speed or position threshold, a time window, or a combination of these.
Boundary conditionsthis rule does not require all gestures to use the same segmentation basis; different consequence tiers may use different bases (see G6-5).
Rule (target and cancellation): an object-directed operation MUST define the point at which the target binds, and how movement, a gaze shift, target disappearance, or content change afterward is handled. Once an operation has begun, silently handing the same gesture segment off to a new target is forbidden. When a preview, drag, dwell, or hold stage exists, active-cancellation conditions before it takes effect MUST be defined; losing tracking is not equivalent to a valid release (G5-1). Dwell progress MUST be bound to the current target, and MUST NOT carry over the original target's accumulated progress after the target changes.
Rule (continuous mapping): continuous control MUST declare how hand motion maps to object change — position, displacement, or velocity control; the coordinate system, axis, ratio or gain, and permitted range used; and the stop or inertia behavior after release. When snapping is offered, its entry and exit conditions MUST be declared, and silently switching targets is forbidden. When a long-distance operation requires releasing the hand to reposition, a clutch action that "pauses control to reposition the hand" MUST be distinguished from a commit action; a new baseline MUST be established before re-grasping, and the reposition displacement MUST NOT be counted back in as input. Two-handed control MUST define the role of each hand and the behavior when either hand is lost, and MUST NOT silently downgrade to one hand while changing the mapping.
Verification supplement (continuous mapping): turn around, change distance, release the hand to reposition, relocate the coordinate anchor, or lose the assisting hand during a drag, and check whether the object jumps; check whether velocity control stops as specified at the neutral position, on exit, and on tracking loss. A declared inertia animation after a valid release is a different case from mistaking loss for a release.
Basis and referencesWCAG 2.5.2 Pointer Cancellation explains the distinction among press, release, cancel, and undo. Its direct object is single-pointer input; applying a cancelable operation stage to mid-air interaction here is a design derivation of these guidelines, and does not require every gesture to use release-triggering.
Verification supplement: start dragging A then look at B, switch targets mid-dwell, actively cancel before commit; check whether the target was swapped, whether progress carried over, and whether the action still takes effect after cancellation.
Design applicationdesign explicit grab and release semantics for continuous control (drag, zoom); release judgment should not depend on a speed threshold alone, or a user releasing slowly will be judged as still gripping.
Verification examples
- User side: have the user perform the same gesture three times in a row, and observe whether the reset motion is misrecognized as a fourth.
- Implementation side: record a continuous motion stream and check the consistency between the segmentation points and human annotation, paying particular attention to the hand-retraction phase.
CounterexamplesUnder-delivery — after swiping right to turn a page, retracting the arm is recognized as a leftward swipe that flips back; over-delivery — every gesture requires an explicit "ready" posture before it and an "end" posture after it.
G1-3Not Having Left Does Not Mean Continued AuthorizationMUST
In one sentence: Not actively exiting does not mean ongoing consent; participation state expires.
Applies toproducts in which participation state can persist beyond a single gesture.
Ruleparticipation state MUST have deactivation conditions: at minimum, a timeout with no valid motion. The user going still, turning around, leaving the capture range, shifting attention, or starting to talk to someone else is forbidden from being treated as continued consent to receive commands. After participation state deactivates, interacting again MUST re-satisfy the entry conditions; if the product offers brief cost-free re-entry, its grace period MUST be explicitly defined and finite.
Basis and referencesafter the user finishes an operation, the system may still interpret everyday motion as input. Participation deactivation limits this window of false-trigger exposure; simply holding the same posture cannot itself prove the user still wants to issue a command.
Boundary conditionslow-consequence features may forgo a separate entry action; when there is no participation session spanning multiple motions, the participation timeout does not apply, but every command must still re-satisfy the subject, spatial, and segmentation criteria, and expires once the operation ends or recognition times out. When a participation session exists, after timeout, re-entering automatically on the next frame merely because the earlier entry condition still holds true is forbidden. Re-entry grace MUST NOT restore an old candidate's eligibility to commit.
Design applicationtimeout duration is tiered by false-trigger consequence, not a single uniform value; give a perceivable cue at deactivation, rather than switching silently.
Verification examples
- User side: have the user turn around and talk to someone for two minutes after finishing an operation, and observe whether their hand motion triggers a command.
- Implementation side: check whether any participation state exists with no timeout; check whether the grace re-entry duration resolves to a concrete value.
CounterexamplesUnder-delivery — after finishing watching TV in the living room, the user keeps chatting and their gestures keep being interpreted as volume adjustments; over-delivery — exiting after five seconds of stillness, so a moment of thought forces the user to raise a hand again.
G1-4Unintentional Motion Does Not Become InputMUST
In one sentence: Gesturing while talking, scratching your head, handing something over — none of this should trigger a command.
Applies toproducts whose capture range covers the user's everyday activity space.
Rulethe system MUST distinguish command motion from non-command motion; the criteria MUST be explicitly defined and testable, and MUST NOT rely on gesture form alone. Command criteria SHOULD combine at least one of the following: participation state (G1-1), attention direction, the motion's spatial position, or a separator gesture. The rate at which everyday conversational gestures, unrelated actions, and body-adjustment motions are recognized as commands MUST be measured in real usage environments, and used as one of the release criteria.
Basis and referencesthis is mid-air gesture's most famous failure mode (the Midas touch problem). Raising the recognition threshold changes the trade-off between false positives and false negatives, but form classification alone is not enough to prove "this is a command" — that requires combining participation state or contextual criteria, and verifying the resulting trade-off on target data. The effective lever is architectural: add a layer of participation state or an attention anchor, splitting "is it a command" and "which command is it" into two separate determinations.
Design applicationsplit command determination and gesture classification into two tiers; the first tier is as conservative as possible, and only the second tier performs form discrimination.
Verification examples
- User side: record one hour of natural activity in a real environment (including conversation, eating, using a phone), and tally the number of false triggers and their consequences.
- Implementation side: confirm that command determination is not simply form-classification confidence; the change in false-trigger rate after disabling the attention anchor can be measured.
CounterexamplesUnder-delivery — gesturing while on a phone call triggers a delete; over-delivery — requiring the user to gaze at the camera for three seconds every time first, making it unusable during ordinary conversation.
G1-5Input Ownership Is ClearMUST
In one sentence: Clear about whom the system listens to right now and which hand, with explicit conditions for switching person or hand.
Applies toproducts where multiple people or multiple hands may appear within the capture range at once, where multiple input modalities are offered simultaneously, or where the same motion may be interpreted by multiple event sources.
Rulethe system MUST make explicit, at any moment, the subject to which the current input is attributed (which person, which hand) and the operation instance it belongs to, and MUST define the conditions under which ownership is established, held, and transferred. Ownership transfer MUST have explicit conditions; transferring automatically because another hand is closer, clearer, or detected first is forbidden. When another person or another hand enters the capture range, it MUST NOT inherit an already-locked target or already-accumulated confirmation progress; coordinate continuity by itself does not constitute evidence that the subject is the same. When the owning subject leaves or deactivates, the current unfinished continuous operation MUST be ended, and MUST NOT be continued by a new subject (for the abort behavior of continuous operations, see G5-1).
Boundary conditionsthis rule does not require the product to support multiple people; a product declared "single-user" satisfies it merely by ensuring that ownership transfer or misrecognition does not occur when a second person appears. When the platform provides no subject evidence, satisfy this rule with verifiable isolation or an explicit participation mechanism, and do not fabricate an identity confidence score. Handling of third parties being captured itself is covered in G7-3.
Rule (multimodal routing): when gesture, gaze, speech, touch, or a controller are used together, the role each input plays in target selection, operation, and commit MUST be defined, along with priority when they compete. The same user intent MUST NOT take effect more than once because multiple entry points respond simultaneously. When the app loses input focus, the system takes over, the device sleeps, or modality switches, an unfinished operation MUST be ended or suspended; after recovery, the subject, target, and participation conditions MUST be re-checked, and automatically re-issuing an old commit event is forbidden.
Rule (event unification): when the same physical motion simultaneously produces platform selection, grab, and custom recognition events, the event source responsible for the current operation MUST be designated, and the remaining events correlated or excluded; the same intent MUST NOT be interpreted as multiple commits. A debounce duration cannot substitute for operation ownership and duplicate-side-effect prevention.
Basis and referencesthe Microsoft interaction model guidance notes that mixed input models can produce competing operational cues; W3C XAUR §3.8 discusses focus loss during input switching. These sources support the problem and the design direction; event deduplication and recovery conditions are a necessity derivation of these guidelines.
Verification supplement: pick up a controller mid-pinch, summon the system menu and return, confirm from two entry points at once; check whether it commits twice or continues using a stale target.
Design applicationdefine arbitration rules for multi-person scenarios (first-come, explicit takeover, binding to a designated subject), and make the current ownership visible to everyone present.
Verification examples
- User side: while one person is dragging an object, have another person walk by and raise a hand, and observe whether the drag is hijacked or interrupted.
- Implementation side: check whether ownership-transfer events are logged; check whether the other hand's input is correctly ignored while one hand is bound.
CounterexamplesUnder-delivery — with two people present, the system keeps jumping back and forth between the two pairs of hands, and neither can control anything; over-delivery — requiring facial-recognition login before every operation.
G1-6Participation Cost Matches the ScenarioSHOULD
In one sentence: The cost of the entry point should match the value of the feature; avoid extremes on either end.
Applies toproducts that define a participation entry method.
Rulethe cost of the action to enter interaction SHOULD match the value and frequency of the task to be accomplished: high-frequency, low-consequence operations SHOULD have a low-cost entry; low-frequency, high-consequence operations SHOULD have participation conditions sufficient to discern intent, object, and consequence — "higher cost" means more thorough criteria, not a more tiring motion or a longer wait; protection against consequence is carried mainly by G6's commit constraints. Substituting "zero-cost entry plus after-the-fact undo" for G6-1's commit constraint on irreversible actions is forbidden.
Design applicationa single product may have entry points at multiple tiers — a shortcut gesture reaching a common operation directly, and a full participation flow for other operations.
Verification examples
- User side: measure the total motion time from "wanting to do it" to "having done it" for a common operation, and compare it against the touch or speech path.
- Implementation side: check whether all features share the same high-cost entry point.
CounterexamplesUnder-delivery — adjusting the volume also requires completing a three-step participation flow first; over-delivery — for the sake of speed, delete is also placed behind a zero-cost shortcut gesture.
3.2 G2 Binding Between Gesture and Meaning
Custom mid-air gestures usually lack a physical label; visible objects and platform-standard interactions can supply affordance and existing convention. The gestures a user can use equal the gestures they can discover and remember — a number far smaller than designers tend to estimate. This principle governs the gesture set itself: how large it is, how it is discovered, how far apart its members are, and where its meaning comes from.
G2-1The Gesture Set Is Bounded and DiscoverableMUST
In one sentence: The number of gestures has a ceiling, and users can discover what they can do without reading a manual.
Applies toall products that define a gesture vocabulary.
Rulethe number of gestures valid at the same time within the same context MUST have an explicit ceiling, recorded as a design decision. Users MUST be able to discover every gesture needed to complete the primary task without reading external documentation; the primary path is forbidden from depending on a hidden gesture that can only be learned through documentation, tutorial videos, or word of mouth.
Design applicationprioritize mapping gestures to direct manipulation of visible objects (push, grab, drag); this kind of interaction's affordance comes from the object itself, which can lower the memory burden, though its discoverability still needs verification; reserve pose-type gestures that need to be memorized for a small number of high-value global operations.
Verification examples
- User side: give an untrained target user a task, and record how many gestures they can discover and use with no prompting.
- Implementation side: count the number of gestures valid at the same time in each context, and check whether it exceeds the declared ceiling.
CounterexamplesUnder-delivery — twelve custom poses, of which the user only remembers two, so the remaining features are effectively unreachable; over-delivery — a gesture cheat sheet permanently displayed on every screen, obscuring the content itself.
G2-2Semantic Mapping Is StableMUST
In one sentence: The same gesture has only one meaning within the same context.
Applies toall products that define a gesture vocabulary.
Rulethe same gesture form MUST be bound to only one meaning within the same context. The same form may carry different meanings in different contexts, but the difference in context MUST be perceivable to the user, and that perception MUST NOT depend solely on the user remembering which mode they are currently in. A gesture's meaning silently changing along with internal system state is forbidden.
Basis and referencesthis is the mid-air-gesture form of mode confusion. In a GUI, modes have visible visual cues; gestures have no physical input-device state to rely on, so a mode error is often not discovered until after execution.
Design applicationlet the difference in context be reflected in the object being operated on or its spatial position, rather than in an abstract mode switch.
Verification examples
- User side: have the user switch between two contexts and immediately perform the same gesture, and observe whether their expectation of the result matches what actually happens.
- Implementation side: inventory whether any same-form, multi-meaning combinations exist, and check the context-distinguishing basis for each group.
CounterexamplesUnder-delivery — the same fist gesture means pause during playback and delete in a list, and the user does not know where they are; over-delivery — to avoid reuse, every feature gets its own separate pose, exploding the vocabulary (violates G2-1).
G2-3Formal Differences Are Sufficient to DistinguishMUST
In one sentence: Similar-looking gestures do not carry functions with widely differing consequences.
Applies toall products that define a gesture vocabulary.
Rulethe difference between gestures MUST hold at two levels simultaneously: the recognition level (the system can reliably distinguish them) and the execution level (a person can reliably produce a distinguishable difference). Satisfying only one of the two does not satisfy this rule. Two actions with widely differing consequence tiers are forbidden from being bound to similar-looking gestures; the criteria for "similar" MUST be explicitly defined and measured against target users.
Rule (platform conflicts): custom and remapped gestures MUST be checked for conflicts with the target platform's system gestures, assistive-technology input, and everyday communicative motion. Intercepting a system-reserved exit or takeover operation is forbidden; related conflicts MUST be re-checked after upgrading the platform or the gesture vocabulary.
Basis and referencesApple WWDC23: Design for spatial input recommends prioritizing standard gestures, with custom gestures kept distinct from system gestures and common communicative motions. This is a platform design reference, and does not prove that a unified vocabulary exists across platforms.
Design applicationplace heavy-consequence actions on poses that are visibly distinct in form and not easily formed by accident through everyday motion (see G6-4).
Verification examples
- User side: have the user perform each of two similar gestures twenty times in a row, and tally how distinguishable their own execution is and their subjective confidence.
- Implementation side: measure the confusion matrix, and check the confusion rate between a high-consequence action and its nearest-neighbor gesture.
CounterexamplesUnder-delivery — four fingers extended means "save," five fingers extended means "discard"; recognition performs decently, but users cannot reliably perform them consistently themselves; over-delivery — requiring users to make awkward, unnatural poses purely for the sake of distinguishability.
G2-4Do Not Assume Universal IntuitionSHOULD
In one sentence: Gesture meaning is verified against target users, not against what the designer feels is natural.
Applies toproducts that define or modify a gesture-semantic mapping.
Rulethe binding between gesture and meaning SHOULD be based on empirical evidence from the target user group, and SHOULD NOT rest solely on the design team's intuition that "this gesture feels natural." The product SHOULD account for cultural differences, handedness differences, and the effect on gesture choice of prior expectations users bring from existing devices (touchscreens, remote controls, mice).
Basis and referencesdesign candidates SHOULD incorporate the expectations that come from existing interface experience — for example, users may try to "tap" or "swipe" in mid-air. Existing experience shapes user expectation, but this does not constitute a cross-device ranking of these forms as better or worse — a candidate gesture's comprehensibility, executability, recognizability, and fatigue still MUST be verified separately on the target device and with the target population. The role of empirical evidence is therefore not to directly adopt users' proposals, but to expose the gap in expectation between designer and user.
Design applicationtreat elicitation results as a constraint rather than an answer; if a gesture that users highly consistently propose is unusable, at least ensure it is not bound to the opposite meaning.
Verification examples
- User side: test candidate gestures' semantic-guessing agreement rate and first-attempt success rate among target users.
- Implementation side: record the selection basis and evidentiary source for each gesture.
CounterexamplesUnder-delivery — the team votes internally to decide the gesture set, and after launch the primary user group cannot guess any of it; over-delivery — treating elicitation results directly as a specification, and adopting a batch of gestures that are the most tiring to perform and the worst-recognized.
G2-5Customizable and Can Be Turned OffSHOULD
In one sentence: Individual gestures may be replaced or turned off, but this cannot be used to bypass consequence constraints.
Applies toproducts whose gesture set contains entries that may conflict with users' everyday motion, or products aimed at a widely varied user population.
Rulethe product SHOULD allow users to turn off or remap individual gestures. Customization MUST NOT change the action's own consequence tier, nor may it be used to bypass G6-1's requirement on the commit path for irreversible actions; a user may swap delete onto a different gesture, but MUST NOT turn it into something that no longer requires a second confirmation. After turning off an individual gesture, the corresponding feature MUST still be reachable through another path (see G7-1).
Design applicationmake "this gesture always false-triggers" a single-tap-away toggle, not something buried deep in settings.
Verification examples
- User side: have the user turn off a gesture that false-triggers frequently, and check whether the corresponding feature is still usable.
- Implementation side: check whether a custom configuration can break through the consequence-tier mapping and commit constraints.
CounterexamplesUnder-delivery — a gesture conflicts with motions from the user's occupation, and the only option is to turn off gesture input entirely; over-delivery — opening customization so far that users can bind payment to a wave.
G2-6Learning Cost Is Re-EnterableSHOULD
In one sentence: Gestures that need to be learned can be learned again at any time, not covered once and for all in first-run onboarding.
Applies toproducts that include pose-type gestures requiring learning.
Rulegestures requiring learning SHOULD have a teaching-and-practice entry point that can be re-entered at any time, and that entry point SHOULD be reachable from the point of use, not requiring the user to interrupt their task to dig through settings. Teaching SHOULD provide an immediate distinction between doing it right and doing it wrong, not merely display a diagram.
Rule (practice isolation): practice motions within teaching MUST be confined to a demonstration object or a recoverable practice environment, and producing an actual send, payment, delete, or permission change is forbidden. Entering and exiting practice MUST be perceivable, and after exiting, continuing an unfinished practice gesture as a real command is forbidden.
Verification supplement: immediately return to the task after practicing a confirmation gesture, and check whether real objects and external systems remain unchanged.
Design applicationwhen recognition fails repeatedly, offer an in-place "see how it's done" on the spot, rather than playing it only once at first launch.
Verification examples
- User side: have the user, one week into use, find the learning entry point for an infrequently used gesture again, and record the time taken.
- Implementation side: check the number of steps needed to reach the teaching entry point from the main usage scenario.
CounterexamplesUnder-delivery — a tutorial video plays on first launch and can never be found again afterward; over-delivery — the teaching is forced to replay every single time the app is opened.
3.3 G3 Physical Cost Has a Budget
In mid-air gestures, the input device is the user's body. It gets tired, its precision has a ceiling, its form varies from person to person, and none of these costs show up in any log — they show up as the user quietly no longer using the feature. This principle treats what the body can bear as a hard constraint, on equal footing with a latency budget or a memory budget.
G3-1The Primary Path Does Not Depend on Fatiguing MotionMUST
In one sentence: High-frequency operations do not require raising the arm above shoulder height or holding it aloft for a long time.
Applies toall products that use mid-air gestures as routine input.
Rulethe primary path for high-frequency operations is forbidden from requiring the hand to be raised above shoulder height, requiring the arm to hold a posture unsupported for an extended time, or requiring large-amplitude, whole-arm motion. The product MUST declare a motion budget for the primary path (amplitude, height, single-hold duration), and verify its sustainability over the target usage duration.
Cases where motion itself constitutes the activity's content are assessed separately (motion-based training, rehabilitation, exercise assessment, performance): their physical load is judged by that activity's own goals and safety requirements, and this rule's budget for "command shortcuts" does not apply to them; but the control actions that enter, pause, and exit these activities still fall under this rule, and MUST NOT require additional fatiguing motion.
Basis and referencesarm fatigue ("gorilla arm") is not a stamina problem but a design problem — an unsupported raised arm can cause fatigue and reduced precision, and its severity is affected by posture, motion load, task duration, and individual differences. The effective countermeasure is to design motions that let the arm get support (small motions close to the body, postures with elbow support), not to require the user to power through.
Design applicationdesign high-frequency operations as small motions completable in front of the body with the elbow naturally lowered; reserve gestures requiring large motion for low-frequency operations.
Verification examples
- User side: have the user operate continuously at typical usage intensity, and measure subjective fatigue and the decline in execution success rate over the second half.
- Implementation side: check whether the declared motion budget for the primary path matches the motion actually required by the interaction.
CounterexamplesUnder-delivery — turning every page requires raising the hand above the shoulder and waving, and the user gives up after ten minutes; over-delivery — compressing every motion to an extremely small amplitude, making recognition unstable and users afraid to move.
G3-2Precision Requirements Match Human CapabilityMUST
In one sentence: Do not carry mouse-level precision requirements into unsupported open air.
Applies toproducts involving target selection, value adjustment, or position control.
Ruletarget size, stability requirements, and adjustment resolution MUST be achievable under the support conditions the user actually has. The product MUST declare the precision tier required by the primary path, and using point-level precision selection as the primary path under unsupported conditions is forbidden. When precision is insufficient, it MUST be solved by enlarging the target, providing snapping, switching to relative adjustment, or tiered adjustment; solving it by requiring the user to hold steadier is forbidden.
Design applicationangular jitter in remote pointing is amplified with distance, so the same amount of hand tremor is acceptable at near range and unacceptable at far range; near-field direct manipulation and far-field pointing SHOULD use different target-size standards.
Verification examples
- User side: measure target-selection success rate and time at real distances and postures, including both standing and seated.
- Implementation side: check whether target size varies with interaction distance and input model (near-field / far-field).
CounterexamplesUnder-delivery — small desktop-scale controls are carried into mid-air unchanged, and users keep selecting the wrong adjacent item; over-delivery — every control is enlarged to a quarter of the screen, so a single screen cannot fit three features.
G3-3Completable with One HandSHOULD
In one sentence: The core path can be completed with one hand, and does not assume a dominant hand.
Applies toproducts that may be used in scenarios where the user's other hand is occupied.
Rulethe core task path SHOULD be completable with one hand, and SHOULD NOT assume the user uses a particular dominant hand. Gestures requiring two hands SHOULD be limited to operations where they are genuinely necessary (such as two-handed zoom), and SHOULD have a one-handed alternative path.
Design applicationboth the recognition model and the interaction layout need to support left-right hand symmetry; do not recognize the mirrored motion of the left hand as a different meaning (unless that semantic difference is an explicit design and visible to the user, see G2-2).
Verification examples
- User side: have the user hold an object in one hand while completing the core task; test once with the left hand and once with the right.
- Implementation side: check whether any gesture has a significantly lower recognition rate on one hand specifically.
CounterexamplesUnder-delivery — a user holding a child cannot use any feature at all; over-delivery — to guarantee one-handed usability, removing an interaction like two-handed zoom that is clearly better to use.
G3-4Continuous Use Has a Ceiling and Allows RestSHOULD
In one sentence: Long tasks offer a supportable posture or an alternative modality, and do not require sustained holding.
Applies toproducts where a single session is expected to last more than a few minutes.
Rulethe product SHOULD declare a duration ceiling for continuous gesture use, and provide a supportable posture, a segmented completion method, or an alternative modality as that ceiling is approached or exceeded. Designing an interaction that requires the user to hold a posture for the entire duration of a task is forbidden — the cost of holding a posture rises non-linearly over time, and the user cannot put their hand down partway through.
Design applicationbreak a long process into pausable segments, letting the user put their hand down without losing progress (state-continuity requirements are in G5-1).
Verification examples
- User side: have the user complete one full, typical long task, and record how often they give up partway or actively switch modality.
- Implementation side: check whether any state exists that can only be maintained by holding a posture.
CounterexamplesUnder-delivery — requiring the user to hold a pinch posture the entire time until the upload finishes; over-delivery — a "suggest taking a break" popup interrupting work every two minutes.
G3-5Bodily Differences Do Not Constitute ExclusionMUST
In one sentence: People with small hands, tremor, missing fingers, or prosthetics must also be able to complete the task.
Applies toall products that use mid-air gestures as an input channel.
Ruledifferences in recognition and execution caused by hand size, joint range of motion, tremor, missing finger joints, a prosthesis, or worn items (gloves, jewelry, bandages) MUST NOT prevent the user from completing the task. The product MUST verify usability under these conditions; where recognition cannot cover a case, feature reachability MUST be guaranteed by G7-1's non-gesture path, and that path MUST NOT be a functionally limited substitute.
Boundary conditionsthis rule does not require gesture recognition to cover every bodily condition — that is unrealistic. What it requires is that wherever recognition cannot reach, the feature remains reachable. This is also one of the reasons G7-1 exists.
Design applicationexpose adjustable parameters (gesture-amplitude tolerance, debounce strength, dwell duration) to the user, rather than offering only a single configuration calibrated to an average hand shape.
Verification examples
- User side: test core-task completion rate among users who have the relevant bodily conditions.
- Implementation side: check whether the non-gesture path is exposed automatically and perceivably when recognition fails.
CounterexamplesUnder-delivery — a user with tremor can never complete a dwell confirmation, and there is no other entry point; over-delivery — loosening every threshold until it works for everyone, letting the false-trigger rate spiral out of control (this SHOULD be solved with adjustable parameters, not a uniform loosening).
3.4 G4 State Is Perceivable
Gesture interaction has no mechanical feedback: a finger press has resistance, a mouse click has a sound — none of this exists in mid-air. Everything the user judges about system state comes from feedback the product actively provides. When feedback is missing, the user's default strategy is to repeat the motion — which simultaneously amplifies false triggering and frustration.
G4-1Each of the Three States Has Its Own FeedbackMUST
In one sentence: In-range, locked, and committed must be distinguishable from one another.
Applies toall products that use mid-air gestures as an input channel.
Rulethe system MUST let the user distinguish the three applicable feedback layers: in-range (the hand is within the product's effective interaction zone and input is available), locked (the current candidate target or global command is determined, but has not yet taken effect), and committed (the action has taken effect). Capturing a hand does not equal being in participation; participation state is expressed per G1-1. When a global gesture has no spatial target, what is locked is the command, and a target selection MUST NOT be fabricated. When a layer genuinely does not exist, record it as not applicable; a dwell or confirmation step MUST NOT be artificially inserted just to fill out the three states. The form of feedback is unconstrained, as long as target users can distinguish it reliably.
Rule (result state): the three states are feedback layers, not a complete state machine. When asynchronous execution exists, processing, failed, result-unknown, and cancelled MUST additionally be distinguished; a request being sent or a receipt being received does not equal the action having taken effect. The "committed" feedback MUST come from a real result; a pending or failed state MUST NOT be obscured by a prior-success cue. Verification and duplicate prevention when the result is unknown are covered in G6-2.
Basis and referencesa missing feedback layer produces the following foreseeable failure: the user does not know whether "it didn't see me," "it saw me but didn't select," or "it selected but didn't succeed," and can only redo the action over and over. For tasks that have these stages, the three correspond to different next actions; conflating them can induce mistaken retries. This is these guidelines' interaction model, not a unified platform standard.
Design applicationthe three states may be assigned to different channels — in-range via a cursor or hand visualization, locked via object highlighting or snapping, committed via sound plus the object's actual change.
The table below is an example task that includes a candidate stage and asynchronous commit; a simple local operation may go directly from valid input to result, without an artificial wait. Participation state and execution result are managed separately; exiting participation does not erase a result that has already occurred.
| Current stage | Entry condition and trustworthy fact | User feedback and available control | Exit, invalidation, or recovery |
|---|---|---|---|
| Not participating / input available | Capability is ready, but participation conditions are not yet met | Gesture entry point, whether input is being received; can be turned off | Commands are only interpreted once entry conditions are met; participation is not inferred from "a hand is seen" |
| Candidate | Participating; a candidate target or command exists but is not yet determined | Candidate cue; cancellable | Low confidence is not shown as locked; changing target resets to zero |
| Locked | Subject, target, or command is determined; the operation has not yet taken effect | Clear indication of the affected object; dwell or hold progress shown when applicable | Target disappearance, content change, cancellation, or deactivation invalidates the candidate |
| Continuous operation | Valid data, mapping, and control-holding conditions all hold simultaneously | The current object or value; cancellable, clutchable, or switchable | Completes upon release as specified; invalidation enters suspended, loss is not treated as release |
| Suspended / input invalid | Data confirmed invalid, system interrupted, or feedback cannot support control | Retained value, a known or unknown reason, alternative entry point | Hidden displacement and confirmation progress are not accumulated; a new baseline is established after verifying the same subject and target, or it is cancelled |
| Request processing | Commit conditions passed and the request has been sent, with no result evidence yet | Request received; only actually available cancel or query options are exposed | Acceptance is not treated as success; entering "unknown" on timeout when the result cannot be determined |
| Result unknown | Lacking a receipt or query result sufficient to determine success or failure | Pending verification; can be queried, input can be exited, non-conflicting features can be used | The original operation is verified; repeating the gesture cannot create a second instance of the same side effect |
| Took effect / failed / cancelled | Evidence of taking effect, clear evidence of not taking effect, or a cancellation receipt | The real result; a usable undo, remedy, or restart | Exiting participation does not erase the result; a new operation does not reuse old progress |
Rule (state facts and races): input participation, data validity, operation stage, and execution result MUST be judged separately. The interface MUST be able to link feedback to the current operation's subject, target, action, event order, and real result; these are runtime facts, not Tokens. When cancellation, deactivation, or data invalidation races against a not-yet-effective commit, the no-longer-qualifying commit MUST be intercepted first; if an external consequence has already occurred, the actual result MUST be reflected and a genuinely usable undo or remedy provided — claiming "cancelled" is forbidden. A late receipt from an old operation MUST NOT overwrite a new operation's state, and a confirmed failure or pending result MUST NOT be cleared by "tracking the hand again."
Verification examples
- User side: pause in each state, and have the user describe the system's current state and their own next step.
- Implementation side: check whether the three states have independently observable presentations; the same element's form, text, or contrast may change, but this MUST be verified through a discrimination test.
CounterexamplesUnder-delivery — there is only a single small dot, and the user is left guessing forever; over-delivery — each of the three states gets its own animation plus sound effect, so a single operation triggers three sounds.
G4-2Feedback Delay Has a CeilingMUST
In one sentence: When feedback is slow enough to break the sense of causality, it degrades to discrete feedback rather than no feedback.
Applies toall products that provide feedback for actions.
Rulethe product MUST declare an end-to-end latency budget for feedback (from when the action occurs to when the user can perceive the feedback). When latency exceeds the budget, it MUST degrade to explicit discrete feedback (such as a "processing" status indicator), and appearing as no feedback is forbidden. Once the latency of tracking feedback (hand visualization, cursor) exceeds the budget, continuing to present it in tracking form is forbidden — lagging tracking is more misleading than no tracking, because the user adjusts their motion based on it, causing overshoot and oscillation.
Degrading MUST NOT merely stop the display while continuing to accumulate input: if the current quantity needed for closed-loop judgment cannot be provided to the user at this point, new business updates for that continuous control MUST be paused, and the retained value, the not-yet-effective portion, and the available exit method MUST be made explicit; the control baseline is re-established on recovery. It MAY continue if a verified, reliable feedback channel intrinsic to the object still exists — one display channel failing does not equal overall feedback failing.
Design applicationmeasure tracking feedback and result feedback separately; the former is involved in correcting continuous motion, the latter is used to judge whether the action took effect, and a single average MUST NOT substitute for both budgets.
Verification examples
- User side: artificially inject latency, and observe whether the user overshoots, repeatedly corrects, or repeats the action.
- Implementation side: measure the end-to-end latency distribution for each type of feedback (not just the mean), and check whether the degradation behavior triggers when the budget is exceeded.
CounterexamplesUnder-delivery — the hand cursor lags by half a second, and the more the user corrects, the further off they get; over-delivery — sacrificing recognition quality to push latency down, so feedback is fast but frequently wrong.
G4-3Continuous Motion Has Continuous FeedbackMUST
In one sentence: Display the current value continuously during drag or zoom, not report the result only at the end.
Applies toproducts that include continuous control such as drag, zoom, rotate, or slider adjustment.
Rulecontinuous control MUST continuously feed back the current value or current position while the motion is in progress, so the user can judge before commit whether the target has been reached and adjust accordingly. Presenting the result only once, after the motion ends, is forbidden. Continuous control MUST have explicit release semantics, and the release determination MUST be perceivable to the user (start/end determination is in G1-2).
Design applicationusing the manipulated object itself as the feedback carrier is preferable to an extra numeric display — the object moves with the hand, and the user does not need to split attention between two places.
Verification examples
- User side: have the user adjust a value to a specified target, and record the number of overshoots and corrections.
- Implementation side: measure the consistency between the current value and the feedback, end-to-end latency, tail-end stutter, and the number of overshoots and corrections; "the refresh rate equals the sampling rate" is not the pass criterion — the two need not be equal; the criterion is whether the end-to-end loop can be closed.
CounterexamplesUnder-delivery — waving to adjust volume, and only finding out where it landed after releasing the hand; over-delivery — a floating numeric panel precise to two decimal places hovering next to the hand, obscuring the content being adjusted.
G4-4Feedback Is Not Exclusively VisualSHOULD
In one sentence: The primary state has at least one non-visual channel.
Applies toproducts where the user's gaze may not be on the display area.
Ruleprimary-state feedback SHOULD have at least one non-visual channel (auditory, tactile, mid-air haptics, or a perceivable change intrinsic to the controlled physical object). In scenarios where the user's gaze must be directed elsewhere (driving, cooking, surgery, far-field operation of a large display), non-visual feedback is mandatory (see G7-6).
Basis and referencesthe scenarios where mid-air gestures are most valuable are precisely the scenarios where hands cannot conveniently touch and eyes cannot conveniently look — and relying on visual feedback in such scenarios is self-contradictory. Mid-air haptics is the direct solution to this gap, but is limited by device and range; hearing is the more realistic choice in most scenarios.
Design applicationthe non-visual channel need not carry all the information; carrying the state transition is enough — "locked" and "committed" can cover most needs with two short, distinguishable sounds.
Verification examples
- User side: have the user complete the core task without looking at the screen.
- Implementation side: check whether distinguishable state feedback still exists under muted conditions, or whether the product explicitly declares that scenario not applicable.
CounterexamplesUnder-delivery — all feedback for in-vehicle gesture control is on the center console screen, and the user must look down to confirm; over-delivery — every minor motion is accompanied by a prompt tone, and the passenger asks to have the whole feature turned off.
G4-5Boundaries Are PerceivableMUST
In one sentence: About-to-exit and already-exited must be known to the user as they happen, not inferred from a lack of response.
Applies toproducts where the interaction zone has an effective spatial boundary (that is, the vast majority of products).
Rulethe user approaching the interaction-zone boundary, and having already left the interaction zone, MUST be perceivable. Feedback for having left MUST be distinguished from "system malfunction" and "action not recognized" — the three call for completely different next actions from the user. Representing having crossed the boundary with no response is forbidden.
When the cause can be determined, give a corresponding cue; when only "input is currently unavailable" can be determined and the cause cannot, the unknown cause MUST be honestly stated, along with a safe recovery or switching entry point — fabricating a definite diagnosis such as "too far" or "insufficient light" when the cause is unknown is forbidden. What this rule requires distinguishing is known fact; it does not require the sensor to have diagnostic capability it does not possess.
Design applicationgive a progressive cue when approaching the boundary (hand visualization fading, a directional indicator), rather than failing suddenly at the instant the boundary is crossed.
Verification examples
- User side: have the user actively move their hand out of the interaction zone and back, and observe whether they can state what happened and how to recover.
- Implementation side: check whether boundary crossing, tracking loss (G5-1), and recognition failure have distinguishable presentations.
CounterexamplesUnder-delivery — the user stands a bit too far away, no gesture gets any response, and they think the feature is broken; over-delivery — a warning box pops up every time the hand gets a little closer to the edge.
G4-6Feedback Does Not OverloadSHOULD
In one sentence: Feedback intensity matches the consequence of the action; not every minor movement gets a loud prompt.
Applies toall products that provide feedback for actions.
Rulethe intensity and prominence of feedback SHOULD match the consequence of the action. High-frequency, low-consequence operations SHOULD use lightweight, ignorable feedback; prominent feedback SHOULD be reserved for state transitions and high-consequence actions. The product SHOULD NOT apply a prominent cue to every minor positional change just to satisfy G4-1.
Basis and referencesthis rule is the counterweight to G4-1. The typical result of over-delivering three-state feedback is: all feedback becomes equally prominent, so all of it degrades into background noise, and the one truly important commit confirmation gets ignored — this is the same mechanism as alarm fatigue.
Verification examples
- User side: after continuous use, ask the user whether they noticed a particular key state change.
- Implementation side: count the number of feedback events per unit time and the proportion that are prominent-level.
CounterexamplesUnder-delivery — commit and movement use the same weak cue, and the user does not know they have already committed; over-delivery — every frame's position update is accompanied by a sound effect and animation.
3.5 G5 Recognition Uncertainty Is Made Explicit
Gesture recognition may output a label, a score, or a probability estimate, none of which is equivalent to the fact of user intent. The product MUST explicitly decide how to handle this uncertainty: which side to lean toward, how uncertain is uncertain enough to stop, what to do on loss, and which way to fall back when capability degrades. If these decisions are not made, a default takes over — and that default tends to be "take the top-scoring classification and execute it," which is unacceptable for high-consequence actions.
G5-1Tracking Loss Is a Normal StateMUST
In one sentence: Behavior on loss is predefined and safe; continuing to advance using the last frame is forbidden.
Applies toall products that depend on continuous tracking.
Ruletracking loss MUST be handled as a normal operating state, not an exception branch. The product MUST define the behavior on loss for every class of ongoing operation, and that behavior MUST be a safe default: freeze the current value and wait, roll back to the state before the operation began, or wait for tracking to be regained for a defined grace period. Continuing to advance the operation using the last frame's data is forbidden; automatically committing an in-progress action after loss is forbidden. Loss MUST be perceivable to the user (see G4-5), and the continuation behavior after tracking is regained MUST be explicitly defined, with silent jumps forbidden.
Basis and referencescontinuous-tracking failure destroys the positional and motion evidence continuous control depends on. If the last frame's velocity vector is extrapolated when the hand leaves the field of view, it produces a large motion the user never actually made — in drag, delete, or swipe-confirm interactions, this directly causes unpredictable consequences. Occlusion (another hand, the body, a held object), sudden lighting changes, and going out of range all produce the same phenomenon, and do so frequently in real environments.
Rule (data eligibility): the product MUST declare the data each class of operation depends on and its validity criteria: the joints or directions needed, the maximum data-freshness age, how the platform's validity and tracking flags are to be interpreted, and how partial loss is handled. Having a numeric value does not equal tracking being valid — when coordinates exist but the required data is invalid or stale, it does not constitute usable input; when the platform separately provides an active-tracking flag, the combined criterion with the validity flag MUST be declared. An API that lacks a particular flag MUST use whatever pose validity or standard input event it actually provides, neither fabricating the flag nor defaulting to treating stale coordinates as valid. Smoothing, carrying forward the old value, and extrapolation after invalidity may be used only for display; they do not restore operation eligibility, and do not constitute a basis for commit; a normal pose estimate that has already passed the platform's and the product's validity judgment is not forbidden across the board merely for being an "estimate."
Rule (regaining tracking): when continuation is permitted, it MUST be verified that the subject, target, and operation are still the same, and the control relationship between the current hand position and the object position MUST be re-established; when this cannot be verified, the candidate is cancelled or a restart is required.
Design applicationprepare a snapshot of the operation's starting point for continuous operations, making rollback an available option; set grace duration separately per operation type, not a single uniform value.
Verification examples
- User side: move the hand out of the field of view and back during a drag, and observe whether the object undergoes displacement or commit the user did not intend.
- Implementation side: inject a tracking interruption and check whether extrapolation occurs; check whether the position jumps after tracking is regained; check whether the old operation is wrongly continued after changing the input subject or target.
CounterexamplesUnder-delivery — the instant the hand is occluded, the dragged object flies off-screen and commits; over-delivery — the loss of a single frame immediately rolls back the entire operation, so normal use is constantly interrupted (a limited grace period may instead be used based on the operation's consequence, during which updates simply pause).
G5-2Bias Direction Is Explicit and TieredMUST
In one sentence: The base recognition value can be shared, but the consequence-release policy MUST be verified by tier.
Applies toall products that determine gestures based on classification or thresholds.
Rulethe product MUST explicitly declare the recognition bias direction (favoring a miss over a false trigger, or the reverse), and this declaration MUST be tiered by the action's consequence level; releasing every consequence tier based on a single unverified global threshold is forbidden. Recognizers may share a base threshold, but the release policy and false-trigger acceptance criteria for each tier MUST be defined independently; an additional confirmation MUST NOT be replaced by high confidence. Irreversible actions, actions with external effects, or actions involving funds are forbidden from using a trigger-happy setting. The choice of bias direction MUST be recorded as a design decision, and may be adjusted with the scenario (see G7-5).
Basis and referenceswith the recognizer and data distribution held fixed, adjusting the decision threshold usually trades off false triggers against missed recognition; improving the model, the data, or the participation mechanism may improve both at once, so it cannot be asserted that the two can never be optimized simultaneously. Scores are also not inherently calibrated probabilities. The scikit-learn decision-threshold tuning documentation separates statistical prediction from action decisions, and calls for avoiding tuning the threshold directly on training data; it supports the method, and does not supply thresholds for gesture products.
Design applicationbind the threshold to the consequence-tier mapping (see gesture.recognition.confidence.threshold and gesture.commitment.risk.mapping in the Design Token), rather than scattering a handful of magic numbers through the code.
Verification examples
- User side: measure the actual incidence of false triggers and missed recognitions and the user's reaction, separately for high-consequence and low-consequence actions.
- Implementation side: check whether each consequence tier has an explicit release policy and verification record, and whether a high score is used to bypass confirmation.
CounterexamplesUnder-delivery — every gesture shares one confidence threshold, and delete is just as easy to false-trigger as turning a page; over-delivery — tuning every threshold extremely high to suppress false triggers, so three out of ten normal operations get no response.
G5-3Low Confidence Does Not Pass as CertaintyMUST
In one sentence: When unsure, do not execute a high-consequence action, and do not silently guess one either.
Applies toproducts whose recognition results carry confidence information.
Rulewhen recognition confidence is below the threshold corresponding to an action, directly executing a high-consequence action is forbidden. The system MUST do one of the following: hold its current state and give a perceivable cue, present candidates for the user to choose from, or require additional confirmation. Silently executing the top-scoring candidate is forbidden, as is presenting a low-confidence result as a determined recognition result.
Boundary conditionsthis rule does not require exposing the confidence value to the user. What it requires is differential treatment in behavior — the user does not need to know whether it is 0.6 or 0.9; what they need to know is "the system isn't sure, please try again" versus "the system is certain."
Design applicationwhen a target is already bound, the current value may be held with a cue that recognition is still pending; when a command is not yet determined, show candidates or offer a choice, and this MUST NOT be called "locked." Request confirmation only when the user's judgment is actually needed.
Verification examples
- User side: produce ambiguous gesture input, and observe whether the system executes an action the user did not intend.
- Implementation side: check whether the high-consequence action path has any branch that bypasses the confidence determination.
CounterexamplesUnder-delivery — an ambiguous motion is judged as delete and executed directly; over-delivery — a confirmation box pops up at the slightest uncertainty, so confirmation boxes keep appearing during normal use (the choice among hold, candidate, or cancel SHOULD instead depend on whether a valid target is already bound, see Design application).
G5-4Recognition Conditions Can Be Known and ImprovedSHOULD
In one sentence: When recognition degrades, tell the user the reason, and make it a reason they can act on.
Applies toproducts whose recognition quality is significantly affected by environmental conditions.
Rulewhen conditions such as lighting, occlusion, distance, motion speed, or worn items cause recognition quality to drop, the product SHOULD inform the user in a way they can act on. The cue SHOULD point to a concrete improving action (move a little closer, raise your hand a little, get out of the backlight), and SHOULD NOT present only "recognition failed" or a technical error code.
Design applicationunify this cue with G4-5's boundary cue within the same feedback language, so the user does not have to learn two separate sets of error presentations.
Verification examples
- User side: under backlighting, partial occlusion, and being too far away, observe whether the user can restore usability on their own.
- Implementation side: check whether the different kinds of recognition degradation are distinguished, or all lumped into a single failure.
CounterexamplesUnder-delivery — always displaying only "gesture not recognized," and the user does not know whether to step forward or turn on a light; over-delivery — continuously displaying a recognition-quality gauge, forcing the user to constantly monitor sensor state.
G5-5Degradation Path Is PredefinedMUST
In one sentence: How to fall back when capability drops is decided in advance, in order, not improvised at runtime.
Applies toproducts whose recognition capability may degrade during operation (that is, the vast majority of products).
Rulethe product MUST predefine a degradation order for when recognition capability drops; the available tiers include lowering the precision requirement, shrinking the set of simultaneously valid gestures, switching to coarser-grained interaction, switching modality, and stopping gesture input. Degradation MUST be perceivable to the user, and the scope of features still reachable after degradation MUST be clear. Continuing to run with the full gesture set when capability is insufficient, and relying on the user to keep retrying, is forbidden.
Boundary conditionsthis rule does not require the product to implement every degradation tier; it requires that whichever tiers are adopted are predefined, ordered, and that the final tier lands on G7-1's non-gesture path.
Design applicationexplicitly bind degradation trigger conditions (consecutive failure count, continuous loss duration, environmental conditions) to degradation actions at the configuration layer (see gesture.recognition.degradation.order and gesture.fallback.auto_fallback.trigger in the Design Token).
Verification examples
- User side: progressively worsen recognition conditions, and observe whether the user can still complete the task at every tier, or clearly knows what to switch to.
- Implementation side: occlude the camera, and check whether the system enters a defined degraded state rather than continuously erroring out.
CounterexamplesUnder-delivery — after the camera is blocked, the app becomes completely unresponsive and gives no hint of what else can be done; over-delivery — the slightest fluctuation in recognition switches straight to speech, repeatedly forcing the user to change modality.
3.6 G6 Consequence Is Decoupled from Gesture
Misrecognition is the norm in this modality. What these guidelines actually need to protect, therefore, is not recognition accuracy but the scale of a misrecognition's consequence. This principle governs the strength of the coupling between a gesture and the consequence it causes: the heavier the consequence, the less that chain can consist of a single gesture alone.
G6-1Irreversible Actions Are Not Committed by a Single GestureMUST
In one sentence: Delete, send, and pay cannot be completed with a single wave.
Applies toproducts where a gesture can trigger an irreversible action, an action with external effects, or an action involving funds.
Ruleirreversible actions, external sending or publishing, payment and funds transfer, and permission changes are forbidden from being committed directly by a single gesture. Such actions MUST be confirmed through a second channel in a different modality (speech, a key, touch, or human operation), or through a second gesture confirmation explicitly bound to the object being confirmed. Being able to remedy an external result after the fact does not equal it never having had a consequence, and this MUST NOT be used to exempt confirmation. Confirmation MUST be bound to the specific object, content, current state, and consequence, and MUST NOT be a generic "are you sure"; if a key condition changes or the confirmation expires while waiting, confirmation MUST be redone. Confirmation does not substitute for platform identity verification and permission checks.
Basis and referencesunintentional motion can trigger external consequences. The second confirmation exists to let the user judge the specific object and consequence; a higher recognition score alone, or a longer or more tiring motion alone, cannot substitute for that judgment.
Design applicationa low-consequence action that is fully recoverable and has no external effect may take effect directly with undo provided; actions such as external sending and payment are confirmed first. A button during a countdown-to-send period cancels a not-yet-sent request; it does not undo an already-sent message.
Verification examples
- User side: have the user use the product for five minutes in an environment with bystander interference, and check whether any unintended irreversible action occurs.
- Implementation side: inventory every trigger path for irreversible actions, and check whether any branch reaches commit directly from a single gesture.
CounterexamplesUnder-delivery — waving deletes an email, unrecoverably; over-delivery — even switching songs requires a second confirmation.
G6-2Undo Is ReachableMUST
In one sentence: Recoverable changes have a real undo, and undo does not depend on gestures alone; unrecoverable consequences are not falsely presented as undoable.
Applies toproducts where a gesture can trigger a state change.
Rulefor recoverable state changes, the product MUST provide a genuinely effective undo, and the undo path MUST NOT depend on gesture input alone — if recognition is precisely what is failing, the user cannot use a gesture to undo. The duration of the undo window MUST be explicitly defined, and may be set separately by action category. An action that has been committed and is genuinely unundoable MUST be covered by G6-1 before commit; after commit, an undo entry point MUST NOT imply that recovery is possible.
Rule (unknown result and recovery): when an asynchronous operation times out or a receipt is lost, the actual result MUST be verified first; when failure is not confirmed and duplicate effect cannot be guaranteed not to occur, treating a repeated user gesture as a new, identical request and resending it directly is forbidden. Cancelling a not-yet-committed action, undoing an already-effective change, and remedying an external effect MUST be given separate feedback. Undo MUST state its scope, and MUST protect valid modifications made afterward by other users or entry points.
Verification supplement: simulate an action that has taken effect but whose receipt is lost, then repeat the gesture; check whether it takes effect only once. Modify the object through another entry point, then undo the gesture operation, and check whether the subsequent modification is wiped out.
Design applicationplace undo on a non-gesture channel (a physical button, speech, an on-screen control); undo remains usable even if gesture recognition fails completely.
Verification examples
- User side: under degraded recognition quality, have the user undo a mis-operation that just occurred.
- Implementation side: check whether the undo entry point depends on gestures; check whether the undo cue in the interface matches the actual undoable scope.
CounterexamplesUnder-delivery — a false trigger causes a delete, and the undo gesture cannot be recognized either, so the user can only watch it happen; over-delivery — maintaining an unlimited undo stack for every operation, letting performance and storage cost spiral out of control.
G6-3False-Trigger Cost Has a CeilingMUST
In one sentence: A single misrecognition's consequence has a ceiling, and repeated false triggers must be detectable and made to converge.
Applies toall products that use mid-air gestures as an input channel.
Rulethe scale of consequence a single misrecognition can cause MUST have an explicit ceiling, recorded as a design decision (quantity, amount, scope of effect, visibility). The product MUST declare a cumulative-impact ceiling for continuous operations, its statistical window, and the over-limit behavior, and this MUST NOT be bypassed by re-entering participation or switching modality. The product MUST have a mechanism for detecting repeated false triggers, and MUST take a converging action once a threshold is reached: raising the recognition threshold, shrinking the gesture set, prompting a modality switch, or pausing gesture input. Leaving the detection and handling of false triggers entirely to the user is forbidden.
Basis and referencesan impact acceptable once may become unacceptable once it accumulates through repetition. Sustained occlusion, interference, or everyday communicative motion can cause clustered false triggers, so both single-instance impact and cumulative impact need to be limited.
Design applicationtreat "the user has undone the same kind of operation three times in a row" as a false-trigger signal, rather than waiting for the user to go into settings and turn the feature off.
Verification examples
- User side: create conditions for sustained false triggering, and observe whether the system converges on its own before the user complains.
- Implementation side: check whether any gesture path can cause large-scale impact in a single instance; check whether the converging mechanism's trigger threshold resolves to a concrete value.
CounterexamplesUnder-delivery — a single misrecognized gesture clears an entire list; over-delivery — a single false trigger permanently disables that gesture, and the user has no idea where the feature went.
G6-4The Confirmation Gesture Does Not Share Its Form with Common GesturesMUST
In one sentence: The gesture used for confirmation must be clearly distinct in form from high-frequency gestures.
Applies toproducts that use gestures as the confirmation channel.
Rulethe gesture used to confirm a high-consequence action MUST have a significant formal difference from high-frequency operation gestures (the difference criteria are in G2-3), and MUST NOT be a pose easily formed by accident during everyday activity. The confirmation gesture is forbidden from being a continuation, repetition, or slight variant of a high-frequency gesture — a user can easily arrive at that form naturally within the motion flow of a continuous operation.
Design applicationmake the confirmation action orthogonal to common actions along the motion dimension — if common actions are horizontal, the confirmation should not also be a horizontal variant.
Verification examples
- User side: have the user rapidly perform high-frequency operations in succession, and tally whether confirmation is accidentally triggered.
- Implementation side: measure the confusion rate between the confirmation gesture and its nearest-neighbor high-frequency gesture, and its rate of accidental occurrence in recordings of natural activity.
CounterexamplesUnder-delivery — a one-finger point is select, a two-finger point is confirm-delete, and a slight tremor of the user's hand triggers a delete; over-delivery — the confirmation gesture is designed to be so rare and awkward that the user has to try three times every time.
G6-5Consequence Tier Determines Interaction FormSHOULD
In one sentence: Protection strength matches the consequence; a more tiring or slower action does not by itself prove greater safety.
Applies toproducts that include actions at multiple consequence tiers.
Rulean action's consequence tier SHOULD determine the protection strength of its commit path: the heavier the consequence, the more it SHOULD use a clear object preview, explicit confirmation, or a second channel. Increasing dwell duration or motion amplitude does not inherently increase safety, and remains subject to G3's physical budget. Unifying the commit form across all actions for the sake of design consistency is forbidden — unifying toward the low-cost side violates G6-1, and unifying toward the high-cost side makes high-frequency operations unusable.
Design applicationmodel the consequence tier explicitly as a dimension of the gesture set (see gesture.commitment.risk.mapping in the Design Token), letting the interaction form be derived from the tier, rather than decided feature by feature.
Verification examples
- User side: verify the erroneous-commit rate, scope of consequence, and recovery cost at each tier, and measure whether additional confirmation impedes normal tasks; do not use a longer time as proof of greater safety.
- Implementation side: check whether any action has its consequence tier and commit cost inverted relative to each other.
CounterexamplesUnder-delivery — every operation is "point once and it executes," including emptying the recycle bin; over-delivery — every operation applies the highest tier's three-step confirmation, making the product too slow to use.
3.7 G7 Context and Other People
Mid-air gestures happen in open physical space: there are bystanders, changing light, occupied hands, and a primary task of driving underway. These are not "edge cases" but the normal usage conditions of this modality. This principle governs the environment the interaction is situated in, and the people in that environment who are not the user.
G7-1A Non-Gesture Path MUST ExistMUST
In one sentence: Every feature has an entry point reachable without gestures.
Applies toall products that use mid-air gestures as an input channel.
Ruleevery feature reachable by gesture MUST have at least one reachable path that does not depend on gestures. That path MUST meet the needs of all three situations at once: bodily conditions make gestures unavailable (see G3-5), both hands are occupied, and recognition capability has failed (see G5-5). The non-gesture path MUST NOT be a functionally limited substitute — differing operational efficiency is allowed, missing functionality is not. Gesture input MUST be fully turnable-off by the user, and every feature MUST remain reachable after it is turned off.
Boundary conditionsthis rule's functional equivalence applies to tasks where motion issues a command. When measuring hand motion itself constitutes the essence of the activity (such as a motion assessment), faking an equivalent measurement result with a button is not required; the inapplicable condition MUST be stated, and a usable entry point MUST be retained for entering, pausing, exiting, and accessing results.
Rule (usable alternative): the alternative path MUST be actually usable in the target situation; for example, when both hands are occupied, touch buttons alone are not sufficient to cover that condition. The switching entry point MUST be discoverable and operable when recognition fails, and MUST retain still-valid objects and progress; any part that cannot be continued MUST be explained.
Basis and referencesWCAG 2.5.4 Motion Actuation explicitly covers gestures made toward a camera, requiring alternative controls and the ability to turn it off, and lists exceptions for assistive interfaces and essential activities. It applies directly to the Web; these guidelines' adoption of it for other products is a design requirement, and does not constitute WCAG compliance certification. WCAG 2.5.7 separately requires that applicable dragging functions offer a single-pointer operation that does not require dragging; "just drag with a different hand" cannot serve as the substitute.
Design applicationdesign the non-gesture path as the primary path and treat gestures as an accelerator, not the reverse.
Verification examples
- User side: turn off gesture input entirely, and have the user complete every core task.
- Implementation side: inventory the feature matrix, and check whether any feature is reachable only by gesture.
CounterexamplesUnder-delivery — a particular setting can only be opened through one specific gesture; over-delivery — to guarantee equivalence, every gesture gets a matching button on the interface, and the interface is drowned in buttons (an equivalent path does not require the same entry-point form).
G7-2Capture State Is VisibleMUST
In one sentence: Users can know when the sensor is capturing, and this indicator cannot be turned off.
Applies toproducts that use a camera, radar, depth sensor, or microphone array for gesture capture.
Rulewhile the sensor is in a capturing state, there MUST be an indication perceivable to people present, and that indication MUST NOT be turned off by product configuration or the application. The capture range, the category of content captured, and the retention policy MUST be queryable. The retention period for the raw sensory data needed for gesture recognition MUST be explicitly declared, independent of the product's other data-retention policies.
Rule (minimal capture): a feature that can be accomplished by the platform's standard input events MUST NOT additionally request raw images or a full hand skeleton just to achieve the same feature. When such data is genuinely needed, the purpose, where it is processed, the recipient, and the behavior after authorization is declined or withdrawn MUST be stated. Skeleton and derived features are not treated as anonymous merely because images are not saved; retention for diagnostics, personalization, or training MUST be declared separately, and does not inherit permission granted for "this interaction."
Basis and referencesthe privacy and security section of WebXR Hand Input treats hand data as input carrying privacy risk. The minimal-capture and purpose-distinction requirements here are a product design requirement, and do not apply this working draft's API behavior to all devices.
Boundary conditionsthis rule does not require the indication to take a specific form (an indicator light, an on-screen icon, and a physical shutter are all acceptable); what it requires is that it be perceivable to people present and unable to be turned off.
Design applicationa physical-level indication (a hardware-linked indicator light, a mechanical shutter) is preferable to a software-drawn icon — the latter's trustworthiness depends on the software itself.
Verification examples
- User side: have a non-user who is present judge whether the device is currently capturing.
- Implementation side: check whether any configuration path can turn off the indication; check whether the raw data's actual retention period matches what is declared.
CounterexamplesUnder-delivery — a camera stays on permanently with no sign whatsoever that it is capturing; over-delivery — a large privacy banner permanently displayed on screen, obscuring content, and one the user quickly learns to ignore.
G7-3Third Parties Are Not Treated as UsersMUST
In one sentence: Passersby do not trigger commands, and are not silently retained.
Applies toproducts whose capture range may cover people who are not the user.
Rulethe motion of a non-user person appearing within the capture range is forbidden from being recognized as a command (ownership determination is in G1-5), and their identifiable personal information MUST NOT be retained without explicit basis. The product MUST declare how it handles a third party entering the capture range. A product deployed in a shared or public location MUST provide, within the deployment environment, a way to make the capture range knowable, so a non-user can know whether they are within capture.
Basis and referencesthis rule's regulatory object differs from G1-5's: G1-5 governs "whose input counts" (a system determination), while this rule governs "what happens when a person who is not the user gets captured" (third-party rights). Getting the former wrong is a functional problem; getting the latter wrong is a rights problem.
Design applicationuse the detection result for a non-user to suppress false triggering (their motion does not count as input), rather than to identify who they are.
Verification examples
- User side: have a second person move around behind the user, and observe whether it affects the interaction.
- Implementation side: check whether data for a non-owning subject enters persistent storage; check whether the capture range can be known by people present in the deployment environment.
CounterexamplesUnder-delivery — someone walking by behind the user waves and switches out what is playing; over-delivery — performing facial recognition and building a profile on everyone present, just to distinguish the user from bystanders.
G7-4Social Acceptability Is Built into the DesignSHOULD
In one sentence: Gestures in public do not make the performer feel embarrassed or make bystanders misunderstand.
Applies toproducts that may be used in public or shared locations.
Rulethe amplitude and form of gestures aimed at public or shared locations SHOULD account for the social cost to the performer: users SHOULD NOT be required to make a motion that appears abnormal, conspicuous, or liable to be misunderstood by bystanders in that setting. The same feature SHOULD be allowed different gesture amplitudes in private versus public settings (scenario adaptation is in G7-5).
Basis and referencessocial acceptability is not a comfort issue but a usability issue — a user will not perform a motion that embarrasses them in public, so the feature is effectively unusable, and this will not show up in a lab test.
Design applicationdesign gestures for public settings as small motions close to the body, and reserve large motions for private settings.
Verification examples
- User side: observe, in a real public environment (not a lab), whether users actually use the gesture.
- Implementation side: check whether a smaller-amplitude alternative gesture is provided for public settings.
CounterexamplesUnder-delivery — requiring users to raise a hand above their head and wave on the subway; over-delivery — shrinking every gesture to the public-setting standard, so recognition rate actually drops in private settings.
G7-5Environmental Change Triggers AdaptationSHOULD
In one sentence: When lighting, noise, or posture changes, configuration changes with it, rather than one setup for everything.
Applies toproducts whose usage-environment conditions vary significantly.
Rulethe product SHOULD adjust recognition parameters, feedback channels, and the valid gesture set according to environmental conditions (brightness, noise, space size, user posture, whether an object is being held). The trigger conditions and content of adaptation SHOULD be predefined and perceivable to the user; changing a gesture's semantic mapping without the user's knowledge is forbidden (see G2-2) — adjusting parameters and adjusting semantics are two different things.
Design applicationenvironmental adaptation SHOULD act on thresholds, feedback channels, and the size of the gesture set, not on gesture meaning.
Verification examples
- User side: switch between light/dark and quiet/noisy conditions, and observe whether the user needs to change how they operate, and whether they are informed.
- Implementation side: check whether adaptation changes any gesture's semantic binding.
CounterexamplesUnder-delivery — usable during the day, completely unusable at night before the lights are turned on, with no notice; over-delivery — switching the entire gesture set at the slightest environmental change, so the user never knows which gestures are currently valid.
G7-6Does Not Compete for Attention with Safety-Critical TasksMUST
In one sentence: In scenarios such as driving, gestures MUST NOT require looking at a screen or disengaging from the primary task for an extended time.
Applies toproducts used in safety-critical scenarios such as driving, operating machinery, or medical procedures.
Rulethis rule protects the ongoing safety-critical primary task, and constrains the secondary gesture task that competes with it for attention. Within this scope, gesture interaction is forbidden from requiring the user to move visual attention away from the primary task, forbidden from requiring both hands to disengage from primary-task control at once, and forbidden from requiring a posture to be held beyond a brief duration. Feedback in such scenarios MUST include a non-visual channel (see G4-4). The available gesture set MUST be restricted to what can be completed without visual confirmation; "a target must be selected" does not constitute a blanket prohibition — the criterion is whether that selection diverts resources the primary task needs (in a setting such as image interpretation, where the primary task is itself visual, selecting a target may not take attention away from the primary task at all). When a gesture directly carries the control of the safety-critical primary task itself, this is not the secondary-task situation covered by this rule: it MUST instead be handled by that domain's dedicated interaction design and functional-safety assessment, and these guidelines do not use "having non-visual feedback" as proof of applicability. When recognition fails, requiring the user to keep retrying is forbidden; the retry ceiling and degradation conditions MUST be determined by the domain assessment. When it cannot be shown that retrying is acceptable, no additional retry is added; instead, fall back to an assessed, usable alternative or defer the secondary task (see G5-5).
Boundary conditionswhat this rule specifies is a necessary condition on interaction form; it does not substitute for that domain's distraction assessment, functional safety, or regulatory compliance work — those have their own measurement methods and limits, and this rule gives no specific duration threshold. Non-visual does not equal no cognitive load; the complete task and the effect of failure recovery on the primary task SHOULD be assessed. The U.S. NHTSA official guidance document catalog can locate visual-manual distraction test procedures, but this guidance is voluntary and cannot directly serve as certification for every jurisdiction or for mid-air gestures.
Design applicationas a secondary task, prioritize a small number of coarse-grained motions that do not require moving gaze away from the primary task; whether target selection is allowed is judged by the complete task's effect on primary-task attention.
Verification examples
- User side: measure the number and duration of gaze departures from the primary task, and the change in primary-task performance, under simulated primary-task load.
- Implementation side: check whether any gesture path requires visual confirmation to complete; check the failure-retry policy.
CounterexamplesUnder-delivery — a gesture menu while driving requires aiming at an option on the center console screen; over-delivery — providing a lengthy spoken explanation to replace the visual menu, which, although it does not require looking at the screen, still continuously occupies primary-task attention.
4. Terms and Definitions
| Term | Meaning in these guidelines |
|---|---|
| Mid-air gesture | An input method by which the user conveys intent to the system through hand or upper-limb posture and motion, without touching an input device. The sensing approach is not restricted |
| Participation state (engagement) | Whether the system is currently treating the user's motion as candidate input. Entering is called participating; exiting is called disengaging |
| Separator gesture (delimiter) | An explicit action, posture, or event used to mark the start or end of a gesture, letting the system segment a discrete command out of continuous motion |
| Interaction zone | The spatial volume within which gestures are effectively captured and recognized, jointly determined by sensor capability and product design; it has a boundary, and that boundary is not visible to the user |
| Three states | The three applicable feedback layers — input available, candidate locked, action in effect — which are not a mutually exclusive or exhaustive state machine (see G4-1) |
| Locked | The target or global command of the current operation has been determined; the specific binding and release points are declared by the input model |
| Result unknown | The request may have already taken effect, but no reliable result exists yet; it cannot be equated with failure or success |
| Cancel / undo / remedy | Respectively: blocking a not-yet-committed operation, reversing a recoverable change, and handling a consequence that has already occurred and cannot be fully reversed |
| Commit | The moment an action actually takes effect and produces a consequence. A commit receipt MUST reflect the fact of actually taking effect, not the fact of the request having been sent |
| Tracking loss | A state in which the system temporarily or persistently cannot obtain valid hand data. These guidelines treat it as a normal operating state (see G5-1) |
| False trigger (false positive) | The user did not intend to issue a command, but the system recognized a command and executed it |
| Missed recognition (false negative) | The user intended to issue a command, but the system did not recognize it |
| Bias direction | The direction of trade-off between false triggering and missed recognition. With a fixed model and data, adjusting the threshold typically involves a trade-off; the action policy MUST be explicitly chosen by consequence tier (see G5-2) |
| Midas touch | The failure mode in which, for lack of an input boundary, every motion the user makes is interpreted as a command. These guidelines address it with the entire G1 principle |
| Gorilla arm | The fatigue and precision decay produced by operating with the arm held aloft, unsupported. These guidelines treat it as a design constraint, not a matter of user stamina (see G3-1) |
| Near-field direct manipulation | An input model in which the user directly touches, grasps, or pushes a virtual or controlled object within hand's reach |
| Far-field pointing | An input model in which the user operates an object beyond hand's reach through a ray, cursor, or directional indicator. Angular jitter is amplified with distance (see G3-2) |
| Consequence tier | The judgment of a gesture-triggerable action's consequence, considering at minimum reversibility, scope of effect, external visibility, and financial and legal commitment (see G6-5) |
| Non-gesture path | An entry point that reaches the same feature without depending on gesture recognition. It is the accessibility floor, the degradation landing point, and the product's risk backstop (see G7-1) |
| Capture range | The spatial extent within which the sensor actually acquires data. It may be larger than the interaction zone, and so may cover non-users (see G7-2, G7-3) |
| Owning subject | The person and hand the current input is determined to come from. The establishment, holding, and transfer of ownership MUST have explicit conditions (see G1-5) |
Appendix A: Fault-Injection Verification Checklist
For rules involving recognition reliability and environmental conditions, the verification method is fault injection: create scenarios that would break the commitment, and a failed test means the corresponding commitment has failed. A candidate rule for which such a test cannot be written should not enter these guidelines. The table below is an example subset, not an exhaustive checklist. The numbers are fault-injection samples, not release thresholds; high-consequence actions are verified only in a sandbox, a simulator, or on test objects.
| Injected situation | What is primarily checked | Corresponding rule |
|---|---|---|
| The user talks with someone else within the interaction zone and gestures naturally | Whether a command is triggered | G1-4, G1-1 |
| The user turns around and stays still for two minutes after finishing an operation | Whether participation state deactivates, whether stillness is treated as continued consent | G1-3 |
| Perform the same gesture three times in a row | Whether the hand-retraction reset motion is misrecognized as a reverse command | G1-2 |
| A second person walks into the capture range and raises a hand | Whether ownership is hijacked; whether their data is retained | G1-5, G7-3 |
| Move the hand out of the field of view and back during a drag | Whether extrapolated displacement or auto-commit occurs; whether the position jumps after regaining tracking | G5-1 |
| Occlude the operating hand with the other hand or the body | Whether it degrades rather than producing an incorrect recognition | G5-1, G5-4 |
| Strong backlight, low light, and flickering light | Whether the cue points to an improving action the user can take | G5-4, G7-5 |
| The camera is fully occluded or disconnected | Whether it enters a defined degraded state and exposes the non-gesture path | G5-5, G7-1 |
| The user wears gloves, has tremor, or is missing finger joints | Whether the core task can still be completed | G3-5, G7-1 |
| A high-frequency gesture immediately precedes or follows a high-consequence gesture | Whether it gets mistakenly committed | G6-4, G6-1 |
| Complete one full operation under muted conditions | Whether the three states are still distinguishable | G4-4, G4-1 |
| Inject feedback latency approaching and exceeding the product's budget | Whether overshoot and repeated execution occur; whether it degrades to discrete feedback | G4-2 |
| Continuous operation reaches the declared duration ceiling | Decline in execution success rate and subjective fatigue over the second half | G3-1, G3-4 |
| Create conditions for sustained false triggering (such as bystanders repeatedly passing by, or communicative motion) | Whether it converges on its own before the user complains | G6-3, G5-2 |
| Turn off all gesture input | Whether every core feature is still reachable and not degraded | G7-1 |
| Observe usage in a real public location rather than a lab | Whether the user actually performs the gesture | G7-4 |
| Use under simulated primary-task load (a driving simulator, etc.) | The number of gaze departures from the primary task and the change in primary-task performance | G7-6 |
| Gaze at or point toward A, start a gesture, then move toward B | Whether the same operation still binds to the original target, or is explicitly cancelled | G1-2, G4-1 |
| Switch target or occlude the hand mid-dwell | Whether candidate progress resets to zero, whether loss is mistaken for a commit | G1-2, G5-1 |
| Pick up a controller, lose focus, or return after the system menu takes over | Whether the old gesture is re-issued, whether modality switching takes effect more than once | G1-5, G7-1 |
| Perform a confirmation gesture during teaching practice and exit | Whether a real external consequence is triggered | G2-6 |
| Discard the receipt after an action takes effect, then repeat the confirmation | Whether the result is verified and duplicate effect prevented | G6-2 |
| Exit and re-enter after continuous adjustment | Whether the cumulative impact bypasses the declared ceiling | G6-3 |
| An explicit input-off signal and commit conditions occur within the same processing cycle | The not-yet-effective operation is intercepted; a consequence that has already occurred is reported truthfully | G1-1, G4-1, G6-2 |
| Adjust the duration or relocate the coordinate anchor during a sustained dwell | Old progress does not directly satisfy the new condition; recovery does not jump | G1-2, G5-1, G7-5 |
| The same pinch produces a selection event, a grab event, and a custom recognition result | Consumed exactly once by the designated input path, not triggered repeatedly | G1-5, G6-3 |
| Only the required joint is invalid, coordinates are non-null but stale, or frames arrive out of order | Disqualified data is rejected; an unknown cause is not dressed up as a definite diagnosis | G5-1, G4-5 |
| Operation A's success receipt arrives after operation B has failed | Results are shown separately; A's receipt does not overwrite B's failure | G4-1, G6-2 |
| Clutch-reset during a long-distance operation, or losing one hand during two-handed operation | The reset displacement is not counted back in; the control model is not silently changed | G1-2, G3-2 |
| Decline or withdraw access to skeleton data, or turn off diagnostic logging | Still usable when standard input is available; no additional capture or retention | G7-1, G7-2 |
| Time the complete path for a high-frequency, low-consequence operation | Whether it is slowed down by dwell confirmation and a second confirmation | G4-6, G6-5, G1-6 |
The last row cannot be omitted: otherwise a product might pass every anti-false-trigger test and still be too slow for anyone to want to use. Besides fault injection, classification (whether different reviewers can independently arrive at a similar attribution for a specific requirement) and user value (whether false triggering actually drops, whether the task actually completes faster) SHOULD also be verified separately; the three cannot substitute for one another. Coverage SHOULD also be checked with a complete task walkthrough — running a real case through "approach, enter interaction, discover available gestures, execute, correct errors, leave," checking whether any important design requirement has nowhere to be attributed.
A.1 Metrics and Release Records
Thresholds are predefined by the target product; the table below gives the measurement basis, not universal numbers, and does not constitute a set of acceptance criteria already validated with users.
| Metric | Measurement basis | Guard against misreading |
|---|---|---|
| False triggers during natural activity | Number of mistaken executions during periods with no command intent, per valid exposure hour; report the consequence tier and sample duration alongside it | "the proportion of errors across all video frames" cannot be used to dilute a small number of harmful commands; zero events does not prove zero risk |
| Missed recognition and confusion | The unrecognized proportion among annotated intentional gestures, and the command confusion matrix including a "no command" class | Keep training, parameter-tuning, and final-verification data separate; isolate by user to avoid leakage between adjacent segments |
| Task achievement and efficiency | Success rate, total duration, number of motions, and number of recoveries from forming task intent to confirming the result | Include teaching, entry, mis-operation, retry, and switching cost; compare against the actual alternative path |
| End-to-end feedback | The distribution from the action event to perceivable feedback, its tail, and the over-budget proportion; commit-result feedback is measured separately | A high recognition frame rate does not equal low end-to-end latency, and a mean does not represent the stutter ceiling |
| Cumulative physical cost | The change in subjective fatigue, second-half success rate, and abandonment over a typical task duration | May be supplemented with posture and shoulder-load models, but a safe duration for the entire population cannot be derived from these alone |
| Recovery and accessibility | Recovery time after loss, number of duplicate commits, alternative-path completion rate, and progress-retention outcome | Cover left and right hand, seated posture, holding an object, target bodily differences, and the target environment separately |
Consumed Endurance (CHI 2014, author institution page) offers a method for estimating arm fatigue based on postural load; NICE (2023, author institution abstract) re-examines CE's applicability. Both serve as measurement-method references, and cannot substitute for target-user testing.
Each verification record includes the device, SDK, a snapshot of the actual configuration, the task and user sample, the environment, the preset threshold, the actual result, inapplicable items, and the responsible owner. After a change to the recognizer, vocabulary, input routing, or default configuration, re-verify the affected journeys; do not use overall recognition accuracy alone as the basis for release.
A.2 Acceptance Records and Pass Conditions
Each applicable obligation is recorded separately: rule clause → scenario and preconditions → injected event → expected state and consequence → user-visible feedback → measured evidence → conclusion and owner. The conclusion is pass, fail, or not applicable (with a reason attached); not executed does not count as pass. When a "SHOULD" clause is deviated from, attach the reason and alternative verification; a hard-constraint failure is not offset with an aggregate score.
| Verification layer | What it must prove | What it cannot substitute for |
|---|---|---|
| Documentation and configuration | Applicability, fields, dependencies, units, and state transitions are consistent | Does not prove the hardware or implementation has taken effect |
| Implementation and fault injection | Cancellation, freezing, duplicate prevention, data eligibility, and fallback actually take effect | Does not prove the user understood the state |
| Target users and field tasks | The user can complete, correct, and exit; physical and attentional cost is acceptable | A single demonstration cannot substitute for sustained use or the full target population |
Statistics on false triggers during natural activity MUST report exposure time, number of participants, environmental stratification, and uncertainty, and MUST NOT claim zero risk directly from zero events. Latency measurement notes the sampling event, the clock-alignment method, and the endpoint; logs retain only the facts needed to demonstrate the behavior, and do not default to recording the complete sensory stream. When the facts supporting a judgment are insufficient, a dependency is missing, or a hard constraint fails, the affected capability is restricted or disabled; evidence holds only for the devices, input models, users, and task scope actually tested.
Appendix B: Argumentation Boundaries and Scope of Applicability
B.1 Criteria for Constraint Words
The sole basis for marking something "MUST" is necessity: without this requirement, some commitment the product makes to the user will fail under foreseeable conditions. Judging a rule uses three types of argument:
| Argument type | Question it answers | What it decides |
|---|---|---|
| Necessity derivation | Without it, which commitment fails under what conditions | Whether it is included, whether it is marked "MUST" — the sole source of mandatory force |
| Failure record | Under what conditions the problem has actually occurred | Strengthens the argument, calibrates applicability conditions |
| Implementation reference | What verified practices exist | Proves feasibility, provides examples, does not determine mandatory force |
Only a rule whose necessity argument holds is marked "MUST"; a rule that satisfies only quality or efficiency is downgraded to "SHOULD" or removed from these guidelines entirely. Specific recognition algorithms, sensor selection, and performance engineering do not enter these guidelines.
B.2 Scope of Applicability and Known Weaknesses
The scope of these guidelines is: interactive products that use hand or upper-limb mid-air motion as one of their input channels, covering headsets, in-vehicle, large-display, public-terminal, home-appliance, and industrial scenarios. It does not cover: gesture-recognition algorithms and sensor engineering; standardization of gesture form itself (see the ISO/IEC 30113 series and ISO/IEC 14754); dedicated accessibility assessment; privacy and data-protection compliance; the measurement and limits of in-vehicle distraction; and functional safety and domain regulation. G7-6 specifies a necessary condition on interaction form, and gives no duration threshold — that belongs to domain-specific work.
Three weaknesses are honestly stated:
-
These guidelines give no specific numeric threshold anywhere. Dwell duration, latency budget, confidence threshold, and interaction-zone size are all written as "MUST be explicitly declared and verified," rather than given as numbers. The reason is that these values depend strongly on the sensing approach, usage distance, user posture, and scenario; existing material is insufficient to support a unified number across products, and vendor values cited are tied to specific hardware and input models (see
reference.md). This is a deliberate trade-off, at the cost that these guidelines cannot be used directly as an acceptance checklist — the values MUST be determined by each product on its own and incorporated into the Design Token. -
The failure arguments are mainly foreseeable counterexamples, platform warnings, and scenario research. No first-hand post-mortem sufficient to support attributing a project failure has been obtained; a product's withdrawal from market is not attributed to any single interaction flaw, and a simulated counterexample is not written up as an incident that actually occurred. Sources and the scope read are in
reference.md. -
These guidelines' division of principles has not been tested by outside reviewers' classification. Mutual exclusivity and exhaustiveness remain claims yet to be tested. Two known high-risk boundaries: the division between G1-5 (input ownership) and G7-3 (third-party handling), and the division between G4-5 (boundary perceivability) and G5-4 (informing about recognition conditions). If attribution disagreement recurs at these two boundaries in actual review, the division of principles SHOULD be adjusted rather than adding more cross-references.
B.3 Issues Pending Verification
The following issues still need to be checked with a complete task walkthrough, and are not treated as independent rules:
- Cross-product gesture-set consistency: existing platform conventions and conflict re-checking are already carried by G2-3 and G2-4; existing material is insufficient to support a unified gesture dictionary across all platforms.
- Simultaneous multi-user feedback: for now, carried jointly by G1-5 and G4-1. It becomes an independent obligation only in products that explicitly support simultaneous multi-person interaction.
- External visibility of a false trigger's consequence: for now, carried by G6-3's consequence ceiling. When a walkthrough finds this insufficient, upgrade it per Appendix A's classification test.
External source cross-references are in reference.md in the same directory.
Implementation Acceptance Scenarios
The scenarios below turn existing clauses into reviewable acceptance input, and set no additional universal performance threshold. Select according to the product's applicable capabilities, and supplement with real devices, users, input sequences, and evidence; record the reason when not applicable, and not executed MUST NOT be recorded as passed.
| Clause | Test input and anomaly | Expected behavior and failure criterion |
|---|---|---|
| G1-5 | After A locks a target, B's hand enters; A's hand is briefly lost. | B does not inherit control; when A is regained, the current operation is re-verified. |
| G5-1 | The last frame still points at the button, but tracking has already dropped out. | The affected operation is frozen or cancelled; commit conditions stop accumulating. |
| G3-4 | A rest, a supportable posture, and a non-gesture alternative are added to a continuous task. | Fatigue and task completion are recorded separately; short-duration recognition rate does not substitute for long-task verification. |
Each scenario separately checks the configuration's effective values, the execution record, and the user-comprehensible result. Version, target, event timestamp, failure scope, and recovery result are retained; an unknown external result is not filled in as success or failure.
Usage Notes
This dictionary writes the interaction decisions a mid-air gesture product MUST make as configurable, parseable fields that can be delivered to engineering. It accompanies the Mid-Air Gesture Interaction Design Guidelines (Design-Guidelines.md in the same directory, called "the guidelines" below): the guidelines specify the nature of the behavior, and this dictionary specifies which concrete decisions these natures are expressed as in the product.
This dictionary and a visual Design Token are two different kinds of thing. Color, font size, and spacing describe a rendering result; the fields here describe an interaction contract — what counts as input, how uncertain is uncertain enough to stop, what to do on loss, and what consequence cannot be carried by a single gesture. The DTCG Format Module has already defined basic types such as number and animation duration, but has not defined the business semantics of participation, arbitration, cancellation, and consequence release. This dictionary is a vocabulary for the interaction contract, not a ready-made DTCG-compatible schema; base numeric types can be adapted by semantics, while structures and enumerations still need the product to define its own schema, validation, and distribution method.
Overview of the Ten Categories
| Category | Prefix | Required | Optional | Total | What it is responsible for |
|---|---|---|---|---|---|
| Participation | gesture.engagement | 3 | 6 | 9 | When to start listening, when to stop listening, whom to listen to |
| Interaction zone | gesture.zone | 3 | 2 | 5 | Which space is valid, how the boundary is presented |
| Gesture set | gesture.vocabulary | 2 | 7 | 9 | What gestures exist, what each means, whether it can be changed |
| Recognition | gesture.recognition | 4 | 4 | 8 | How uncertain counts as uncertain, which way to bias, what to do on loss |
| Timing | gesture.timing | 3 | 5 | 8 | How fast counts as responsive, how long counts as confirmed, how often counts as once |
| Feedback | gesture.feedback | 3 | 4 | 7 | Which channel each of the three states uses, how fast, how loud |
| Physical effort | gesture.effort | 2 | 3 | 5 | How much physical cost the user is allowed to pay |
| Consequence | gesture.commitment | 4 | 3 | 7 | Which actions can be committed directly by a gesture, how to recover from an error |
| Fallback | gesture.fallback | 2 | 3 | 5 | What to do without gestures, when to fall back automatically |
| Context | gesture.context | 3 | 4 | 7 | Which scenarios it applies to, how bystanders are handled |
There are 70 fields in total: 29 basic required fields, and 41 selected according to capability; once an optional field is enabled, it must still satisfy its own required conditions. The count covers only the ten category field tables, and does not count structural members or runtime facts as new fields.
Required and Optional
| Level | Meaning | Configuration method |
|---|---|---|
| Required | A basic decision that an applicable product or scenario must make explicit. | May inherit a product preset, or express a limit through a legal off value, an empty range, or a single value; the user is not required to fill in every item individually. |
| Optional | A parameter adopted only for a particular capability or a differentiating requirement. | Not configured when the corresponding capability is absent; once the capability is enabled, its necessary dependencies MUST have an explicit value or an executable inheritance rule (see Section 11). |
Value Conventions
This dictionary provides no recommended values whatsoever. Dwell duration, latency budget, confidence threshold, and interaction-zone size all depend strongly on the sensing approach, usage distance, user posture, and scenario; existing evidence is insufficient to support a value common across products. What a field specifies is that "a parseable value MUST exist," along with that value's legal form and constraint relationships; the concrete number is determined and verified by each product on its own (the measurement basis is in the guidelines' Appendix A.1). A platform value MUST have its source, applicability conditions, and input model recorded, and MUST NOT be migrated directly into a default for every device.
A duration carries a unit; a distance or angle carries a unit and a reference coordinate system; a frequency carries a unit. A set does not default to selecting everything. When multiple hard limits are in effect at once, the commonly permitted range is taken; protection is not relaxed on a "later configuration overrides the earlier one" basis; when the intersection is empty, the capability MUST be explicitly disabled or switched to an alternative path, rather than arbitrarily picking a value from among the layers.
Every configuration MUST record: the applicable device/SDK/input model, the decision owner, the source or calibration record for each value, the override source, and the point at which it takes effect. A running operation is linked to the configuration snapshot actually used; a setting that was later overridden cannot be the only one retained.
The point at which a change takes effect is tiered by three categories of the change's nature: an ordinary preference takes effect on the next operation; a protective tightening (turning off gesture input, shrinking the available set, raising the confirmation requirement) takes effect immediately, and blocks not-yet-effective actions; an adjustment that changes recognition criteria or a spatial baseline (threshold, hold duration, coordinate anchor, volume) cancels the affected candidate, or explicitly requires the baseline to be re-established — old progress MUST NOT be allowed to automatically satisfy new commit conditions after the configuration changes.
Five situations are expressed separately, and do not substitute for one another: missing (a required condition not configured → refuse to enable the affected capability); explicitly off (takes the legal off value defined for that field); not applicable (evidence of applicability is given); platform-managed (references a checkable platform input contract, and declares the part this product cannot resolve independently); unknown or unverified (the corresponding capability is restricted, and is not disguised as a default value).
Decision Authority and Resolution Order
| Decision source | What it can decide | Effect and limits |
|---|---|---|
| Device and platform input contract | Data validity, reserved gestures, capability scope | Cannot be overridden by product or user preference; capability is re-verified after a change |
| Product preset | Chooses gestures, mapping, feedback, and recovery strategy by scenario | Gives the basis for the choice; does not require the user to fill in the entire dictionary |
| Deployment constraint | Available area, bystander handling, task consequence, and hard ceilings | Takes the intersection of hard limits; on conflict, the affected capability is disabled |
| User preference | Dominant hand, reachable amplitude, pace, supported feedback channels | Adjusted within a verified range; does not bypass confirmation or real consequence limits |
| The current operation | Object, input ownership, and the current scenario | These are runtime facts, evaluated according to policy; they cannot rewrite a rule |
Applicable capability and platform constraints are checked first, then inheritance and hard limits are resolved, and finally user preference is adopted within the allowed range. A reference with no target, a reference cycle, a same-layer conflict, a type error, or an unknown field MUST all be reported at the specific location and MUST refuse to enable the affected capability, rather than silently falling back to a looser default. An ordinary adjustment takes effect on the next operation; a protective tightening such as turning off input immediately intercepts not-yet-effective operations, while a consequence that has already occurred is still handled according to its actual state.
Machine Representation and Non-Numeric States
The full field name is the key; a duration uses a quantity structure such as { "value": 300, "unit": "ms" }, and a distance or angle is accompanied by a coordinate reference; numeric values MUST be finite — NaN, infinite values, and treating "300ms" as arbitrary text all fail to satisfy the quantity convention. The numbers here only illustrate the representation. Enumerations and structures need an explicit machine-value mapping established; engineering MUST NOT be left to freely guess from natural language.
Configuration records outside the fields themselves use status to distinguish resolved, not_applicable, managed (platform-managed), and unverified; these are not new Tokens. resolved carries a value; the others carry, respectively, a reason, a checkable contract, or a pending-verification item; using null to represent several of these at once is forbidden. A legal off value is still resolved — for example, "not used" for dwell.duration; being missing has no record at all, and does not equal a legal off state. A capability MUST NOT be enabled while an unverified item affecting the current task remains unresolved.
Runtime facts (the current target, hand coordinates, confidence score, accumulated dwell duration, and result receipt) are not stored as Token default values. Retention period, progress-reset rules, and result-display policy are the configurable decisions.
Consequence Tier: The Tiering Axis Running Through the Entire Dictionary
Fields in multiple categories are tiered by consequence tier, rather than taking a single global value. The product MUST define consequence tiers first, before the other tiered fields become meaningful. The minimal usable three-tier division:
| Tier | Criterion | Typical action |
|---|---|---|
| L1 Reversible, low impact | Fully recoverable within the product; affects only the user's current local operation; produces no significant effect on other people, external systems, or real-world devices | Turning a page, volume, scrolling, switching views |
| L2 Reversible, high impact | Recoverable, but recovery has a cost, or the local scope of effect is large, and L3 conditions are not met | Bulk selection, moving files, changing settings |
| L3 Irreversible or external | Not fully recoverable within the product, or submits a result to other people or an external system, changes permissions, or produces a real-world effect not easily withdrawn | Delete, send, publish, pay, change permissions |
The same feature may be tiered differently in different contexts: for example, adjusting volume on a personal player and adjusting volume on a public broadcast have different external impact; the user being able to see an object move does not itself count as an external submission, and a recoverable delete differs from a permanent delete. Tier by the specific consequence first; do not hard-code by the verb.
A product may subdivide into more tiers, but it MUST be able to map the actual action each gesture entry points to, in the current context, to some tier (see gesture.commitment.risk.mapping).
Boundaries of States and Objects
| Object | What it is responsible for | Key boundary |
|---|---|---|
| Participation state | Whether the system is currently treating the user's motion as candidate input | Not the same thing as "whether the hand is within the capture range"; participation expires (see guidelines G1-3) |
| Owning subject | Which person, which hand the current input is determined to come from | Not the same thing as "how many people are within the capture range"; a non-owning subject does not serve as an input source (see guidelines G7-3) |
| Interaction zone | The spatial volume within which gestures are valid | Usually smaller than the capture range; the boundary is not visible to the user, and so MUST be fed back (see guidelines G4-5) |
| Capture range | The spatial extent within which the sensor actually acquires data | May cover non-users; its visibility and retention policy are configured independently (see gesture.context) |
| Three states | The three applicable feedback layers of input available / target or command locked / action in effect | Not a complete state machine; a global command or an interaction with no candidate stage declares its applicability per guidelines G4-1 |
| Operation instance | The subject, target, content snapshot, stage, and result of one operation | Identifier, timestamp, raw score, and current progress are runtime data, not Tokens |
| Asynchronous result | Processing, succeeded, failed, unknown, cancelled | A request being received does not equal taking effect; when the result is unknown, verify first — duplicate prevention is in guidelines G6-2 |
Field-Reading Convention
Each section's prefix is concatenated with the field in the table to form the full name — for example, gesture.timing and dwell.duration form gesture.timing.dwell.duration. All ten categories uniformly use five columns: level, design decision, field, type and legal values, applicability condition and function.
1. Participation: When to Start Listening, When to Stop Listening, Whom to Listen To
Prefix: gesture.engagement
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Entry condition | enter.trigger | Set: explicit separator gesture / entering a designated spatial volume / attention anchor (gaze or body orientation) / cross-modal trigger (speech, key, touch) / low-consequence, exempt from explicit entry. When multiple items are used, all/any/an explicit Boolean combination MUST be declared; it does not default to "any one being satisfied is enough." When "low-consequence, exempt from explicit entry" is taken: the capability may remain continuously available, but every single command must still satisfy the defined spatial, segmentation, and subject conditions, forming operation-level participation — an always-true entry condition MUST NOT exist; in this case, if no cross-motion participation session exists, idle.timeout is recorded as "not applicable"; the actions in commitment.direct_commit.allow MUST all be judged as L1 under the current conditions. The user explicitly turning off gesture input takes precedence over any automatic entry. | Defines the conditions under which the system starts treating motion as candidate input. This is the most effective layer for suppressing false triggering, and cannot be replaced by raising the recognition threshold. |
| Required | Disengagement condition | exit.trigger | Set: explicit separator gesture / leaving the interaction zone / timeout with no valid motion / attention leaving / switching to another modality. MUST include at least one method the user can actively execute; when a cross-motion participation session exists, a timeout MUST be included; when participation is only operation-level, timing.gesture.timeout terminates the unfinished action. | Defines the conditions under which the system stops receiving input. Without a method the user can actively execute, the user can never "clock out." |
| Required | Participation timeout | idle.timeout | A positive duration, or a set of durations tiered by consequence level; recorded as "not applicable" when no cross-motion participation session exists; in all other cases, no ceiling or default value is illegal. When a participation session exists, the timeout MUST genuinely deactivate: re-entry MUST re-satisfy the defined entry conditions, and MUST NOT automatically resume on the next frame merely because the old condition still holds true; the candidate and continuous operation from before deactivation are voided together with it. | The time limit for automatically disengaging after no valid motion. Stillness does not equal continued consent (guidelines G1-3). |
| Optional | Attention-anchor requirement | attention.required | Enum: not required / required at entry / required continuously. When "required continuously" is taken, the grace duration for losing attention MUST also be declared. | Configured when gaze or body orientation is needed as a command criterion. Significantly lowers false triggering, but raises usage cost. |
| Optional | Ownership arbitration | subject.arbitration | Enum: does not support multiple people (ownership does not transfer when a second person appears) / first entrant has priority / most recent explicit entrant has priority / bound to a designated subject. Taking an implicit transfer such as "whoever is nearest automatically gets priority" is forbidden. | Configured when multiple people may appear within the capture range. Ownership transfer MUST have explicit conditions (guidelines G1-5). |
| Optional | Hand binding | hand.binding | Enum: either hand (bound to one per operation) / bound to a single hand until disengagement / both hands independently / primary hand plus assisting hand. When "bound to a single hand" is taken, the other hand's motion does not count as input during the binding. | Configured when both hands may enter the interaction zone at once. Avoids the system jumping back and forth between the two hands. |
| Optional | Re-entry grace | reenter.grace | A positive duration, or not enabled. When enabled, this duration MUST be finite and explicit. | Allows a simplified entry step within a short time, but does not omit verification of subject, target, and current authorization, and does not restore old confirmation progress. Lowers the cost of repeated participation, but extends the false-trigger exposure window. |
| Optional | Input role and arbitration | input.routing | Structure: the target-selection/operation/confirmation role each modality and platform event, or custom recognition, is responsible for; unification of events from the same physical motion; competition priority; switching conditions; and duplicate-prevention rules for the same intent. | Required when multiple modalities are available at once, or the same motion has multiple event sources; the most recent input does not automatically seize a target that is currently being operated on (guidelines G1-5). |
| Optional | Lifecycle interruption | suspend.policy | Mapping: losing focus / system takeover / sleep / permission revoked → cancel the candidate or suspend the continuous operation; includes verification of subject, target, and participation conditions before recovery. Re-issuing an old commit event is forbidden. | Required when the platform can interrupt the app; its scope includes re-entry grace, which cannot bypass re-verification. |
Boundaries: entry and disengagement determine input's boundary line; ownership and hand binding determine whom the system listens to within that line. Any "always receiving" configuration MUST be backstopped by the constraints on the gesture.commitment side.
2. Interaction Zone: Which Space Is Valid, How the Boundary Is Presented
Prefix: gesture.zone
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Effective volume | volume | Structure: origin, axes, unit, shape and its parameters, near and far distance, horizontal and vertical angle or size range, whether boundaries are inclusive, and handling when the anchor moves or is relocated, with a reference coordinate system attached. MUST be resolvable to a concrete value; a reference such as "within the sensor's field of view" is not accepted; when standard input is platform-managed and the application cannot obtain a concrete effective volume, reference "platform + standard component or input contract" and honestly declare the part that cannot be independently resolved numerically — but a sensor range MUST NOT be fabricated on this basis. | Defines the space within which gestures are valid. Not the same thing as the sensor's specification — the product may, and usually SHOULD, be smaller than the sensor's capability ceiling. |
| Required | Coordinate anchor | anchor | Enum: device anchor / body anchor (head, torso, or shoulder) / world anchor / manipulated-object anchor. | Determines what the interaction zone moves with. The behavior when the user turns or walks is determined entirely by this item; getting it wrong shows up as "sometimes it works, sometimes it doesn't." |
| Required | Edge behavior | edge.behavior | Enum: progressive cue then disengage / hard boundary, disengage immediately with a cue / edge snap-and-hold. All three MUST be accompanied by perceivable feedback; silent failure is forbidden. When "hard boundary, disengage immediately" is taken, the advance cue for approaching the boundary is carried by feedback.edge.warning, and is not exempted merely because this tier is "immediate." When "edge snap-and-hold" is taken, the snap holds only within the range where tracking remains valid, or only freezes the display; genuine tracking loss is handled first, per recognition.tracking_loss.behavior and G5-1, and the snap MUST NOT be used to continue advancing the operation on this basis. | Defines what happens when approaching and crossing the boundary. Crossing the boundary and recognition failure MUST be distinguishable (guidelines G4-5). |
| Optional | Comfort sub-zone | comfort_volume | Structure, in the same format as volume, and MUST be a subset of volume (equality is allowed). | Declares the sub-volume that high-frequency operations should fall within, used to verify that the primary path does not place common operations at the edge of the volume or in a position that requires stretching (used together with effort.primary.budget). |
| Optional | Near/far-field threshold | near_far.threshold | Structure: the measured distance, the coordinate reference, the positive distance threshold and comparator for entering near-field, and the positive distance threshold and comparator for returning to far-field; the near-field entry threshold MUST be smaller than the near-field exit threshold, and the region in between keeps the original model. References the same criterion as timing.hysteresis; two separate sets of values are not maintained. | Configured when both near-field direct manipulation and far-field pointing input models are offered. Without hysteresis, the model switches back and forth repeatedly near the threshold. |
Boundaries: volume and coordinate anchor determine "where it is valid"; edge behavior determines "how the user knows when it is no longer valid." The comfort sub-zone does not change the effective range; it is used only to verify the primary path.
3. Gesture Set: What Gestures Exist, What Each Means, Whether It Can Be Changed
Prefix: gesture.vocabulary
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Gesture entry | items | Set; each entry contains an identifier, a form description, a semantic binding, the applicable context, start/end and reset conditions, a consequence-tier reference, and a discovery method (object affordance / teaching / documentation). A primary-path gesture's discovery method MUST NOT take "documentation." | The definition of the gesture set itself. The consequence-tier reference keeps this table consistent with commitment.risk.mapping. |
| Required | Ceiling on simultaneously valid gestures | size.max | A positive integer; refers to the ceiling on the number of gestures valid at the same time within the same context, not the total number of gestures across the whole product. | The hard constraint on the memory budget. Exceeding the ceiling means the declared learning and recognition budget is not satisfied (guidelines G2-1). |
| Optional | Context reuse | context.overloading | Structure: a list of forms allowed to be reused, each entry declaring the user-perceivable basis for distinguishing context. The distinguishing basis MUST NOT be merely "the user remembers the current mode." | Configured when the same form carries different meanings in different contexts. This is the primary source of mode confusion, and MUST be explicitly registered. |
| Optional | Synonymous gestures | aliases | Mapping: multiple forms pointing to the same meaning. The consequence tier MUST be consistent across synonymous entries; each distinct form valid at the same time counts toward size.max. | Configured to offer multiple ways of performing an action for bodily-condition or habit differences. Does not reduce the count of simultaneously valid forms. |
| Optional | Customization scope | customization.scope | Enum: unmodifiable / individual gestures can be turned off / remappable / new gestures can be added. No value is permitted to lower the tier corresponding to the same real consequence, nor to bypass commitment's constraints; adding or remapping a form does not change the tier of the business action it references. | The escape valve when a gesture conflicts with the user's everyday motion. After turning it off, the feature MUST still be guaranteed reachable by fallback.alternative.path. |
| Optional | Teaching re-entry | tutorial.reentry | Enum: none / first-run onboarding only / re-enterable at any time from the point of use. A product containing pose-type gestures SHOULD NOT take the first two. | The re-learning entry point for gestures that need to be learned. Repeated recognition failure is the natural trigger moment. |
| Optional | Target binding and cancellation | target.binding | Declared by operation type: target source, binding point, release and cancellation conditions, and handling of target disappearance or change; a global command explicitly declares that it has no spatial target. | Required for object-directed operations or those with a candidate stage; the target is not silently switched mid-gesture, and dwell accumulation does not carry across targets (guidelines G1-2). |
| Optional | Platform conflict constraint | platform.conflicts | Structure: platform and input model, list of system-reserved gestures and conflicts, conflict handling, and re-check conditions. | Required when customizing or remapping; does not intercept system exit, takeover, or assistive-technology control (guidelines G2-3). |
| Optional | Continuous-control mapping | control.mapping | Declared per action: position/displacement/velocity control; coordinate reference and axis; unit; gain or curve; clamping; dead zone and snapping (must be made explicit even when unused); the point at which it takes effect; stop or inertia behavior after a valid release; clutch reset and baseline re-establishment; two-handed operation attaches roles and a single-hand-loss policy. When platform-managed, references the corresponding input contract and observable behavior. | Required when continuous control exists; shares its target with target.binding; tracking loss is still handled by recognition.tracking_loss.*, and a release-to-reposition displacement or a loss is not treated as a valid commit (guidelines G1-2). |
Boundaries: entries and the ceiling determine the scale of the gesture set; context reuse and customization determine how it changes at runtime. A change in form does not change the business action's consequence tier — the tier is resolved by Section VIII's risk.mapping according to the current action, object, and cumulative impact, and the same gesture may resolve to a different tier in different contexts.
4. Recognition: How Uncertain Counts as Uncertain, Which Way to Bias, What to Do on Loss
Prefix: gesture.recognition
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Input validity criteria | input.validity.policy | Structure: declares, by operation type, the required signal (joint, direction, or standard input event), how the platform's validity and tracking flags are to be interpreted, the maximum acceptable age of the data, handling of partial loss, and the basis and applicability conditions. Having a numeric value does not equal being valid; smoothing, the old value, and extrapolation after invalidity are used only for display, and do not restore operation or commit eligibility; a normal pose estimate that has already passed the validity determination is not forbidden merely for being an estimate. When the platform does not provide a particular flag, reference the data validity or standard event contract actually provided, without fabricating the flag. The actual flag, the sampling moment, and joint position are runtime facts, and are not values of this dictionary. | Determines "what data counts." Without this item, an implementation can only judge by whether coordinates are non-null (guidelines G5-1, G4-5). |
| Required | Confidence threshold and tiered release | confidence.threshold | References, by consequence tier, the recognizer identifier and applicability conditions, the score definition, the threshold or platform determination, the additional-confirmation policy, and the verification record. A base threshold may be shared, but every consequence must not be released based on an unverified global threshold. Behavior under low confidence is declared separately by state: an operation with a bound target may hold the current value pending recognition; a candidate whose command is not yet determined MUST NOT be presented as "locked," and may remain a candidate or switch to explicit selection. | Raw scores cannot be compared across models; a higher threshold does not equal lower business risk — L3 still requires confirmation (guidelines G5-2). |
| Required | Bias direction | bias | An enum tiered by consequence level: conservative (favor a miss) / neutral / sensitive (favor a false trigger). L3 is forbidden from taking "sensitive." | The trade-off between false triggering and missed recognition. This is a design decision, and cannot be substituted by an algorithm's default value alone (guidelines G5-2). |
| Required | Tracking-loss behavior | tracking_loss.behavior | An enum tiered by operation type: freeze the current value with a cue / roll back to the operation's starting point / wait within a grace duration for tracking to be regained. Taking "continue advancing using the last frame's data" is forbidden; automatically committing after loss is forbidden. | Loss is normal, not an exception. Extrapolating the last frame produces a large motion the user never actually made (guidelines G5-1). |
| Optional | Loss grace period | tracking_loss.grace | A positive duration, which may be tiered by operation type. Required when tracking_loss.behavior takes "wait for tracking to be regained." | The boundary between brief occlusion and genuinely leaving. Too short causes frequent interruption; too long extends the uncertain state. |
| Optional | Degradation order | degradation.order | An ordered set: lower the precision requirement / shrink the set of simultaneously valid gestures / switch to coarse-grained gestures / switch modality / stop gesture input. The final tier MUST land on fallback.alternative.path. A path containing only "stop gesture input → switch to the available alternative" is also a legal configuration; implementing every tier is not required; an existing platform degradation policy may be referenced. | MUST be configured by any product whose recognition capability may degrade (that is, the vast majority): the order MUST be predefined, not improvised at runtime; not having automatic modality switching does not mean a degradation definition is unnecessary (guidelines G5-5). |
| Optional | Recognition-condition hint | condition.hints | Set: insufficient lighting / backlight / occlusion / too close / too far / motion too fast / worn items. Each entry MUST be bound to a checkable diagnostic basis and one improving action the user can take; when the cause cannot be determined, only "input unavailable" or "cause unknown" is reported. An empty set does not cancel guidelines G5-4's requirement to inform. | Turns the reason recognition degrades into something the user can act on, rather than a bare "gesture not recognized." |
| Optional | Continuation on regained tracking | tracking_loss.resume | Enum: cancel and restart / re-establish the control baseline after verifying the same subject and target; includes handling for grace-period expiry. Continuing to use the old displacement baseline, causing a jump, is forbidden. | Required when continuation after loss is supported; regaining tracking does not automatically restore commit eligibility (guidelines G5-1). |
Boundaries: threshold and bias determine "whether to trust this recognition"; loss behavior and degradation order determine "what to do when it cannot be trusted." Decisions are made explicit by consequence or operation type, and may inherit the same base value, but applicability and consequence-tier verification cannot be omitted.
5. Timing: How Fast Counts as Responsive, How Long Counts as Confirmed, How Often Counts as Once
Prefix: gesture.timing
This category is the one most directly consumable by engineering across the entire dictionary — it is made up jointly of calibratable numeric values and time/state policies (dwell.reset, hysteresis, and gesture.timeout are structured policies, not a single number).
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Feedback latency budget | latency.budget | A positive duration tiered by feedback type: tracking feedback / state-transition feedback / commit-confirmation feedback. Defines the event start point, the feedback endpoint, and the over-budget criterion separately for each; verified per input model. | The end-to-end ceiling from when the action occurs to when the user can perceive the feedback. The behavior on exceeding the budget is defined by feedback.latency.overrun. |
| Required | Debounce window | debounce.window | A non-negative duration, which may be tiered by gesture entry; MUST declare the starting event and scope (same subject, same command category); cancellation, turning off, and a safety exit are not blocked by the cooldown. 0 is permitted, meaning no additional cooldown is set, but this does not cancel G1-2's segmentation and duplicate-prevention obligations. | The minimum interval before the same gesture is recognized again, used to suppress a single motion being split into multiple commands. A reverse hand-retraction motion belongs to a different category, handled by segmentation and reset conditions; this field makes no commitment to block it. |
| Required | Gesture timeout | gesture.timeout | Structure: candidate time limit, continuous-control duration budget, and expiry handling, with time limits all positive durations; two categories MUST be distinguished: the recognition time limit for an unfinished candidate (voided upon expiry), and the duration budget for control that has already entered effective continuous operation (handled upon expiry per the pause or cancellation policy this field declares). The same expiry event MUST NOT automatically commit a continuous operation. | The time limit after which a gesture, once started, is voided if not completed. Without this item, an unfinished motion hangs indefinitely and bleeds into subsequent motions. |
| Optional | Dwell duration | dwell.duration | A positive duration, or not used. When used, configure perceivable progress and dwell.reset; adjustable by target user, and MUST NOT bypass high-consequence confirmation. | Dwell determination MUST be bounded by participation conditions, and ordinary looking is not defaulted to a command (guidelines G1-2, G3-5). |
| Optional | Hold-confirmation duration | hold.duration | A positive duration, the time parameter for hold-confirmation only. When enabled, it MUST be bound together with: the object being confirmed, the independent intent event that enters the hold state, the timing start point, posture tolerance, the reset rule on cancellation/deactivation/tracking loss, and perceivable progress feedback. | Configured when confirming by holding; a high-consequence action is not universally required to use hold. Duration alone does not independently prove intent — a sustained posture may also come from holding an object or resting; satisfying G6-1 and G6-4 merely by extending a high-frequency posture is forbidden. |
| Optional | Repeat rate | repeat.rate | Structure: non-negative initial-trigger delay + positive repeat interval or positive frequency, a ceiling on consecutive count or cumulative impact, and end conditions; repetition stops on exit, cancellation, or invalidation, and holding to repeat is not mapped to a high-consequence confirmation. | Configured when supporting hold-to-repeat interactions (continuous scrolling, continuous adjustment). |
| Optional | State hysteresis | hysteresis | Set; each entry contains: the state pair, the measured quantity, its dimension, the reference coordinate, the comparator and threshold for entering, the comparator and threshold for exiting, the initial state, and the behavior in the intermediate region — the hysteresis band is computed from two thresholds, not given as a single difference (a difference alone cannot determine at what absolute value the switch occurs, nor whether entry happens on increase or decrease). Required only when a threshold boundary exists and hysteresis is chosen to suppress jitter; a product using another verified debouncing mechanism may reference its policy instead of forcing in a numeric difference. | Suppresses state jitter near a threshold. Without hysteresis or another stabilizing mechanism, the boundary may switch back and forth repeatedly; this involves zone.near_far.threshold, the three-state transition, and the confidence threshold. |
| Optional | Dwell reset | dwell.reset | Structure: resets to zero on leaving the target, target change, cancellation, deactivation, or tracking loss; if a brief jitter grace is allowed, it MUST be bounded to the same subject and target, with the grace defined and accumulation paused during it. | Required when dwell is enabled, to avoid progress carrying over across targets or continuing to count down during occlusion. |
Boundaries: the latency budget constrains the system's response speed; dwell, hold, and repeat constrain the time the user spends. Both need recognition quality, usability, and consequence verified together; a single number cannot be optimized in isolation.
6. Feedback: Which Channel Each of the Three States Uses, How Fast, How Loud
Prefix: gesture.feedback
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Feedback-layer channel assignment | state.channels | Assigns visual / auditory / tactile / mid-air haptic / object-change to the applicable in-range / locked / committed states; an inapplicable item carries a reason, and a dwell step is not fabricated. The form is verified by target-user discriminability, and is not restricted to distinct elements. | Input being available does not equal being in participation; asynchronous tasks additionally configure result.channels; see guidelines G4-1 for details. |
| Required | Overrun behavior | latency.overrun | A structure per feedback category: display_action (how the display side degrades: discrete status indicator / pause tracking with a cue), control_action (whether the business side continues accepting new updates), pending_delta (how displacement during the overrun is handled: discarded, or retained with its range declared), recovery_condition (the recovery criterion and whether the control baseline is re-established). Taking "no feedback" is forbidden; when tracking feedback exceeds the budget, continuing to present it in tracking form is forbidden. When the current quantity needed for closed-loop judgment cannot be provided, control_action MUST be "pause new business updates" — merely stopping the display while continuing to accumulate invisible input is forbidden; it may continue if a verified, reliable feedback channel intrinsic to the object still exists. | What to do when latency exceeds timing.latency.budget. Lagging tracking is more misleading than no tracking. |
| Required | Non-visual channel requirement | nonvisual.required | Enum: not required / at least one required / must be fully completable without vision. When the product declares that a user is allowed to complete an operation with their gaze off the display area, every state that operation actually requires MUST have a usable non-visual channel — "at least one" is not satisfied by covering only a start-tone while the target still must be looked at. When context.safety_critical.mode is "restrict the gesture set and forbid visual dependence," taking "not required" is forbidden, and the entire task MUST be separately verified as not requiring visual dependence; when gestures are fully disabled, gesture feedback is not forced to be configured. | Usability when the user's gaze is off the display area. The scenarios where mid-air gestures are most valuable are precisely those with the lowest tolerance for reliance on visual feedback. |
| Optional | Continuous-value readout | continuous.readout | Enum: none / relative quantity / absolute value / the controlled object itself; notes whether the readout represents a preview value or the actually effective value. When continuous control exists, taking "none" is forbidden. | Current-value feedback during drag, zoom, or adjustment. Its absence forces the user to approach the target purely by trial and error. |
| Optional | Boundary warning | edge.warning | Structure: lead amount (distance or duration) + channel + whether direction is indicated. | A progressive cue when approaching the interaction-zone boundary. A different thing from zone.edge.behavior for after crossing the boundary — the former is before it happens, the latter is when it happens. |
| Optional | Feedback intensity tiering | intensity | An intensity value tiered by consequence level. The proportion at the prominent level SHOULD have a verifiable ceiling. | Reserves prominent feedback for state transitions that truly matter. Making everything equally prominent means everything degrades into background noise (guidelines G4-6). |
| Optional | Result-state feedback | result.channels | Declares feedback, available controls, and priority for processing / failed / unknown / cancelled / succeeded; a pending state cannot be overwritten by an old success. | Required when asynchronous execution exists; success is based on a real result, and "unknown" is not disguised as failure to induce a retry. |
Boundaries: channel assignment and overrun behavior guarantee state perceivability; intensity tiering guarantees that being perceivable does not mean being drowned out. The two are two sides of the same principle, and MUST be viewed together when configuring.
7. Physical Effort: How Much Physical Cost the User Is Allowed to Pay
Prefix: gesture.effort
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Primary-path motion budget | primary.budget | Structure: the maximum amplitude of a single motion, the ceiling on hand-raise height (relative to the shoulder), whether above-shoulder is allowed, the ceiling on single-posture hold duration, the measurement baseline for amplitude and height, and the projected repeat frequency and usage duration. allow_above_shoulder for a high-frequency primary path MUST be false; if a low-frequency motion genuinely needs greater amplitude, its own budget is declared explicitly and separately by action category. High-frequency operations MUST NOT exceed this budget. This dictionary gives no angle or duration values. | Treats physical cost as a hard constraint on the same footing as the latency budget. Gorilla arm is a design problem, not a matter of user stamina (guidelines G3-1). |
| Required | Precision tier | precision.level | An enum tiered by input model (near-field / far-field): coarse (region-level) / medium (large target) / fine (point-level). Each tier MUST reference this product's target size, minimum spacing, allowed error, and its verification result — the tier name alone does not constitute a specification. Under unsupported conditions, taking "fine" as the primary path is forbidden. | The higher-level constraint on target size and adjustment resolution. Angular jitter in far-field pointing is amplified with distance, so the same tier means something different under the two models. |
| Optional | Completable with one hand | one_handed | Boolean. When true, the entire primary path is reachable with one hand, and is symmetrically usable with either hand. | Configured when the user's other hand may be occupied. Verify that both hands can complete it; using exactly the same underlying values for each hand is not required. |
| Optional | Continuous-use ceiling | session.max_duration | A positive duration. Exceeding it MUST trigger one of: a supportable-posture cue, segmented completion, or a modality switch. | The fatigue boundary for long tasks. A state that can only be maintained by continuously holding a posture is forbidden from existing (guidelines G3-4). |
| Optional | Supported posture | supported_posture | Enum: not supported / elbow support allowed / small motions close to the body allowed / both. | Configured when the user is allowed to operate with a less-effortful posture. Simultaneously constrains the recognition model to cover hand orientation under these postures. |
Boundaries: motion budget and precision tier constrain the per-instance cost; the continuous-use ceiling and supported posture constrain the cumulative cost. Neither can be exempted by "the user can adapt."
8. Consequence: Which Actions Can Be Committed Directly by a Gesture, How to Recover from an Error
Prefix: gesture.commitment
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Consequence-tier mapping | risk.mapping | Structure: tiering rules keyed on the business action and its consequence conditions; entries in vocabulary.items reference this rule, rather than the gesture form alone determining the tier. Before execution, the effective tier is resolved according to the current action, the current object or context, and the cumulative impact. An action with a fixed consequence may use a constant mapping; one whose consequence varies with context MUST list its criteria (personal playback versus public broadcast, recoverable delete versus permanent delete). When a rule is missing, multiple rules overlap in conflict, or it cannot be determined, direct commit at the lowest tier is forbidden; instead, switch to a defined confirmation or alternative path. Leaving it blank is forbidden; a newly added gesture MUST simultaneously provide the rule it references. Customization and remapping MUST NOT lower the tier for the same real consequence. | The tiering baseline for the entire dictionary. Recognition threshold, bias direction, feedback intensity, and commit path are all derived from it. |
| Required | Direct-commit allowlist | direct_commit.allow | Set: action identifiers or policy references allowed to be committed directly by a single gesture (L1/L2/L3 are admission conditions, not elements of this set, and are not mixed in alongside action identifiers). An action in the set MUST be judged L1 under current conditions, or judged L2 with anti-false-trigger, impact-ceiling, and recovery verification proportionate to its consequence; L2 does not default into the set merely for being undoable; an L3 action is forbidden from entering this set under any condition; an action lacking a risk.mapping rule MUST NOT enter this set. Does not substitute for platform identity verification and permission checks. | The strength of coupling between a gesture and its consequence. False triggering is the norm in this modality, so what is protected is the scale of consequence, not recognition accuracy. |
| Required | Undo window and scope | undo.window | A positive duration tiered by action, the recovery scope, and a non-gesture entry point; when genuinely unundoable, declare "not applicable," with second_channel covering pre-commit confirmation instead. | Distinguishes cancelling a not-yet-effective request from undoing an already-effective change; protects subsequent valid modifications from other entry points (guidelines G6-2). |
| Optional | Confirmation channel | second_channel | Tiered by action: none / an explicit same-modality confirmation gesture / a different-modality channel (speech, key, touch) / human operation. L3 MUST NOT take "none"; confirmation is bound to the object, content, current state, consequence, and expiry conditions. | Required when L3 capability is enabled; the formal difference between the confirmation gesture and high-frequency gestures MUST be measured, and a real undo cannot exempt confirmation for an external consequence. |
| Optional | False-trigger monitoring budget | false_positive.budget | Structure: the observed signal, the false-trigger threshold per unit exposure time, the statistical window, the converging action, and recovery conditions. A proxy signal such as consecutive online undos may be used, but MUST be distinguished from an annotated genuine false trigger. | MUST be resolved when command gestures are enabled; the hard ceiling on per-instance and cumulative impact is carried by impact.limits. |
| Required | Impact ceiling | impact.limits | Structure: the per-instance and cumulative ceiling by action, the metric's unit, the subject and resource scope, the time window, and handling upon reaching the ceiling. Re-entering participation or switching modality cannot clear the cumulative ledger. | Implements guidelines G6-3's consequence ceiling as configuration; an observed false-trigger rate cannot substitute for the impact ceiling. |
| Optional | Unknown result and repeated input | result.recovery | Structure: the verification entry point, the result-query time limit, the duplicate-effect prevention rule, and the stop-and-handoff path when verification is not possible. | Required when an asynchronous side effect exists; a request timeout cannot be judged directly as failure and resent (guidelines G6-2). |
Boundaries: the tier mapping determines the release policy; direct commit and confirmation control the boundary before taking effect, undo and result verification handle what happens after taking effect, and the impact ceiling constrains per-instance and cumulative consequence. They cannot substitute for one another.
9. Fallback: What to Do Without Gestures, When to Fall Back Automatically
Prefix: gesture.fallback
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Non-gesture path | alternative.path | Structure: the non-gesture entry point corresponding to each feature. MUST NOT be empty; a command feature MUST NOT be reachable only by gesture, and the alternative path is not a functionally limited substitute. When motion itself constitutes the essence of the activity, register the exception per guidelines G7-1, along with entry, pause, exit, and result-access points. | Combines the accessibility floor, the degradation landing point, and the product risk backstop in one. It is also the direct negation of the decision "gesture as the sole input" (guidelines G7-1). |
| Required | Can be fully turned off | disable.allowed | Boolean, always true. After command gestures are turned off, the applicable feature remains reachable; the boundary for essential motion activities is in guidelines G7-1. | This is not a switch that can be set to false; it is listed as a field so that "whether it is still usable after being turned off" enters the acceptance scope. |
| Optional | Modality fallback order | modality.order | Ordered set: gesture / speech / gaze / touch / physical control. MUST connect with the final tier of recognition.degradation.order. | Defines which channel to prioritize switching to when recognition is unavailable. The order depends on the scenario; there is no universal optimum. |
| Optional | Automatic-fallback trigger | auto_fallback.trigger | Set: consecutive recognition failures reach a threshold / sustained tracking loss reaches a duration / environmental conditions are not met / an explicit user request. A count- or duration-type condition MUST carry a concrete threshold; an explicit user request needs no numeric threshold. | When to stop letting the user retry. In safety-critical scenarios (see Section 10), the retry ceiling is determined by domain assessment, and cannot simply be configured "lower." |
| Optional | Fallback state continuity | state_continuity | Enum: retain the current object and valid progress / retain usable results and restart the affected operation; includes an explanation of any part that cannot be continued. Silently discarding valid progress or re-issuing old input is forbidden. | Required when a modality fallback occurs; both a normal switch and a switch after tracking failure need to be covered. |
Boundaries: the non-gesture path and being fully turnable-off are the floor, and no configuration may disable them; the fallback order and automatic trigger determine when that floor is activated.
10. Context: Which Scenarios It Applies to, How Bystanders Are Handled
Prefix: gesture.context
| Level | Design decision | Token field | Type and legal values | Applicability condition and function |
|---|---|---|---|---|
| Required | Applicable-scenario declaration | applicability | Structure: the product declares the scenarios where gesture input applies and the scenarios it explicitly does not apply to. An empty set is illegal; "applies to all scenarios" MUST be given supporting justification. | Mid-air gestures are not a universal input. Writing the applicability boundary into the configuration is the first constraint against treating it as an all-purpose entry point. |
| Required | Capture indicator | capture.indicator | Structure: the form of indication (a physical indicator light / mechanical shutter / on-screen element) + the visibility condition. No configuration path is allowed to turn it off. | People present know whether the sensor is capturing. A physical-level indication is more trustworthy than a software-drawn icon. |
| Required | Third-party handling | bystander.policy | Structure: the behavior when a non-user enters the capture range (does not serve as an input source + handling of identifiable information: not retained, or with an explicit retention period and purpose). | The capture range may be larger than the interaction zone and cover non-users. This is a rights issue, separate from the functional issue in engagement.subject.arbitration. |
| Optional | Environmental adaptation | environment.adaptation | Set: configuration switches triggered by brightness / noise / space size / user posture (standing, seated, driving, holding an object); each entry MUST declare the trigger condition and the field being adjusted. The adjusted field MUST NOT include the semantic binding of vocabulary.items. | Lets parameters change with the environment, while the semantic binding stays fixed. Adjusting parameters and adjusting semantics are two different things (guidelines G7-5). |
| Optional | Safety-critical mode | safety_critical.mode | Enum: not applicable / restrict the gesture set and forbid visual dependence / fully disabled. When restricted gestures are enabled, non-visual feedback, an assessed retry ceiling, and an alternative path MUST exist; full disablement does not require gesture feedback to be configured. | Non-visual feedback can also occupy cognitive resources; without usability evidence, the secondary task is deferred, and safety is not proven merely by "no need to look at the screen" (guidelines G7-6). |
| Optional | Social setting | social.setting | Enum: private / shared / public. Affects the amplitude ceiling in effort.primary.budget and the default for audio feedback. | A user will not perform a motion that embarrasses them in public. This is not a comfort issue; it means the feature is effectively unusable (guidelines G7-4). |
| Optional | Sensory-data retention | capture.retention | Distinguishes, by raw image / depth / skeleton / derived event, the necessity of capture, the purpose, where it is processed, the recipient, access scope, authorization conditions, behavior after decline or withdrawal, and a limited retention period or non-retention; declared separately for the user and for third parties. Diagnostics and training list their purposes separately; skeleton and derived features are not anonymous by default. | MUST be made explicit whenever processing or retention occurs; when platform-managed, a checkable platform policy may be referenced; disengaging from gesture participation does not equal stopping sensor capture (guidelines G7-2/G7-3). |
Boundaries: the applicable-scenario declaration bounds the effective range of the whole configuration; the capture indicator and third-party handling are an unturnable-off floor; the environmental and social setting determine the adaptation approach, and sensory-data retention states the processing and retention boundary independently.
11. Interlocking Requirements for Optional Items
A capability may be left unenabled; once enabled, its dependencies MUST be complete. The table below adds no new field or third level; the relevant values may be inherited from product rules. The common prefix gesture. is omitted within the table. "Optional" in the field tables means the capability is optional; once applicable, fields marked required MUST NOT be omitted.
| Capability or commitment | Dependencies that MUST be explicit | When not satisfied |
|---|---|---|
| Low-consequence, exempt from explicit entry | commitment.direct_commit.allow is an empty set, or every action in it is judged L1 under current conditions; commitment.false_positive.budget is valid; the bias policy for actions exempt from explicit entry is independently verified per G5-2; every command must still satisfy the defined spatial, segmentation, and subject conditions. | Fall back to explicit participation conditions; "the user will undo it" does not substitute for the commit constraint. |
| Dwell confirmation | timing.dwell.duration, timing.dwell.reset, and perceivable progress are all valid at once; target binding is defined by vocabulary.target.binding. | Do not use dwell as the commit method; dwell without a progress indicator is equivalent to a delay with no feedback. |
| Hold confirmation | timing.hold.duration and its bound items (confirmation object, independent intent event, timing start point, posture tolerance, reset rule, progress feedback) are all valid at once. | Do not use hold as the commit method; extending the duration of a high-frequency posture MUST NOT serve as a high-consequence confirmation. |
| Continuous control (drag, zoom, adjustment) | feedback.continuous.readout is not "none"; recognition.tracking_loss.behavior has an explicit value for this operation type; when continuation is allowed, recognition.tracking_loss.resume is valid; feedback.latency.overrun has declared this control's handling when no reliable current quantity is available; vocabulary.control.mapping is explicit; when a threshold-type state transition exists, it is covered by timing.hysteresis or another checkable stabilizing policy, with hysteresis not treated as the only implementation. | Do not offer continuous control; do not pass off discrete stepping as continuous control. |
| Automatic near/far-field switching | The dual thresholds of zone.near_far.threshold are valid; effort.precision.level satisfies the actual distance and support conditions; target size, spacing, and tolerance have been verified; the valid target is maintained or the candidate is cancelled at the switch, without inheriting unfinished input from the old model. | Fix on a single verified input model; it may be near-field or far-field — pure far-field is not required to be disabled just because switching configuration is absent. |
| Multiple people present at once | engagement.subject.arbitration is valid, allowing "single-person interaction, others do not take over"; context.bystander.policy is valid; current ownership is visible to those present. | Declare single-user use, and ensure that ownership transfer and misrecognition do not occur when a second person appears. |
| Gesture customization | vocabulary.customization.scope is valid; vocabulary.platform.conflicts is explicit; commitment.risk.mapping remains complete after customization; fallback.alternative.path covers a turned-off gesture. | Do not open up customization; do not substitute customization for a design fix to a conflicting gesture. |
| Automatic modality fallback | fallback.modality.order, fallback.auto_fallback.trigger (count- and duration-type conditions carry concrete thresholds), and fallback.state_continuity are all valid, and connect with the final tier of recognition.degradation.order. | Do not fall back automatically; the user switches explicitly, and the switching entry point remains reachable when recognition fails. |
| Mid-air haptics or other tactile feedback | Mid-air haptics declares the intersection of the device's range of effect with zone.volume; contact or wearable haptics declares contact, wearing, and connection conditions. Tactile feedback is promised only when the channel is actually available, with feedback.state.channels backstopping the channel under other conditions. | Do not include haptics in the three-state channel assignment; do not promise the user will perceive it throughout the entire interaction zone. |
| Use in a safety-critical scenario | context.safety_critical.mode is "restrict the gesture set and forbid visual dependence"; feedback.nonvisual.required covers every state the task needs, and the complete operation and recovery need not leave the primary task's gaze; the retry ceiling in fallback.auto_fallback.trigger has a domain-assessment basis; vocabulary.size.max is tightened accordingly. | Declare the scenario not applicable, and disable gesture input in that scenario. |
| Environmental adaptation | The trigger condition and adjusted field of each context.environment.adaptation entry are resolvable; the adjustment is perceivable to the user; the semantic binding is not among the adjusted fields. | Adopt a single fixed configuration, and step back per the degradation order when conditions are not met. |
| A gesture triggers an L3 action | commitment.second_channel for this action is not "none," bound to the current object, content, current state, and consequence; the tiered policy of recognition.confidence.threshold has a verification record; formal-difference measurement is needed only when a gesture confirmation is used. | The action is not triggered by gesture; it is instead carried by fallback.alternative.path. |
| Sensory-data processing and retention | context.capture.indicator is valid and cannot be turned off; context.bystander.policy makes explicit the handling of non-user data; context.capture.retention declares its retention policy independently for each category of data. | Capture lacking a declared purpose and processing boundary MUST NOT be enabled; retain the actually usable alternative entry point. |
| Multimodal competition and platform interruption | When multiple modalities are enabled or the same motion has multiple event sources, engagement.input.routing is explicit; when a platform interruption may occur, engagement.suspend.policy is explicit; the target, valid progress, and cancellation boundary of a continuous operation stay synchronized. | Restrict to input models that can be reliably routed; do not allow multiple entry points to compete for commit. |
| Asynchronous execution with side effects | feedback.result.channels and commitment.result.recovery are valid; cancellation, undo, and result verification are kept separate. | Do not promise reliable asynchronous gesture commit; use instead an entry point that already has verification and duplicate prevention. |
| Teaching practice | vocabulary.tutorial.reentry defines the entry point; the practice object is isolated from real side effects, and an unfinished candidate is discarded on exit. | Only show a demonstration; do not let the practice motion enter the real commit path. |
"Inherit the default" MUST resolve to an explicit value, source, and applicability condition; it cannot be merely a sentence of explanation.
12. Fixed Floor: Cannot Be Turned Off by Configuration
The boundary of input. Participation state MUST have deactivation conditions; stillness, turning around, leaving, or talking to someone else does not constitute continued consent. At any moment, input has an explicit owning subject, ownership transfer has explicit conditions, and the motion of a non-owning subject does not count as input. A gesture's start and end are judgable, and a transitional or reset motion does not constitute a command. No configuration may equate "a hand appearing within the capture range" directly with "the user wants to interact," unless that action's consequence has already been constrained by Section 8 to L1.
The handling of uncertainty. A recognition label, score, or probability estimate is not equivalent to the fact of intent. The base recognition value may be shared, but the release policy and bias direction are verified by consequence tier, and an L3 action is forbidden from taking "sensitive." Tracking loss is a normal state: on loss, continuing to advance using the last frame's data is forbidden, and automatically committing an in-progress action is forbidden. Under low confidence, a high-consequence action is not executed, and the top-scoring candidate is not silently adopted. When capability degrades, it degrades in a predefined order, with the final tier landing on the non-gesture path.
The coupling of consequence. Irreversible actions, external sending or publishing, payment and funds transfer, and permission changes are forbidden from being committed directly by a single gesture. Confirmation is bound to the current object, content, current state, and consequence, and does not substitute for identity verification and permission checks. The undo path MUST NOT depend on gesture input alone. A single misrecognition's scale of consequence has a ceiling, and repeated false triggers have a detection and converging mechanism. A confirmation gesture is significantly distinguished in form from high-frequency gestures, and is not a continuation or variant of one. Customization and contextual adaptation MUST NOT lower the tier of the same business consequence; when the actual consequence of a context changes, it is re-judged by current risk. When the result is unknown, it is verified first, not blindly resent.
The perceivability of state. Participation, data validity, and execution result are judged separately; a receipt from an old operation does not overwrite the current operation, and regaining tracking does not erase a pending result. When cancellation races against a not-yet-effective commit, the commit is intercepted first, and a consequence that has already occurred is reflected truthfully. In-range, locked, and committed are the applicable feedback layers, and a nonexistent candidate stage is not forced in; asynchronous execution additionally has processing, failed, unknown, and cancelled, and the commit receipt reflects the fact of having actually taken effect, not the fact of the request having been sent. The presentations of interaction-zone boundary, tracking loss, and recognition failure are distinguishable from one another, and representing any of them with no response is forbidden. When feedback latency exceeds the budget, it degrades to discrete feedback; no feedback is forbidden, and continuing to present it in lagging tracking form is forbidden; when no reliable current quantity exists, new business updates are paused, and the baseline is re-established on recovery.
The body and the way out. High-frequency operations do not require raising the hand above the shoulder, holding a posture unsupported for an extended time, or large whole-arm motion. Under unsupported conditions, point-level precision is not taken as the primary path. Hand size, range of motion, tremor, missing finger joints, a prosthesis, or worn items MUST NOT prevent the user from completing the task. A command feature has an actually usable non-gesture path, which is not a functionally limited substitute; gesture input can be fully turned off. When motion itself constitutes the essence of the activity, the exception is declared per guidelines G7-1, without fabricating measurement equivalence. The switching entry point retains valid progress.
Environment and other people. When standard input already suffices to accomplish the feature, raw images or a full skeleton are not additionally requested; when sensory data is genuinely needed, its necessity, purpose, processing, and retention are declared separately, and skeleton and derived features are not anonymous by default. The sensor's capture state is perceivable to people present, and this indication cannot be turned off by configuration. The motion of a non-user person is not recognized as a command, and their identifiable information is not retained without explicit basis. In safety-critical scenarios, gestures do not require visual attention, do not require both hands to disengage from the primary task at once, and do not require holding a posture for an extended time.
The above carries forward the applicability requirements of the Mid-Air Gesture Interaction Design Guidelines; this dictionary does not substitute for the full guidelines, nor does it constitute compliance certification for accessibility, privacy, distraction, or functional safety.
13. Configuration Snippets and Acceptance Cases
Task: private layout rearrangement on a large display. After the user taps to select a card, they drag it using the hand's relative displacement, and it is saved locally upon valid release; a clutch button only pauses control so the hand can be repositioned, and the baseline is re-established on the next grasp. There is no publish, share, or delete function. The candidate and preview do not change the already-saved layout; the preview freezes on loss, and an explicit cancel restores the operation's starting point; after saving, it can be undone by a non-gesture button.
13.1 From Decision to Field
| Design decision | Configuration location | Required implementation or measurement evidence |
|---|---|---|
| Each operation binds to one person, one hand, and one card | engagement.subject.arbitration, hand.binding, vocabulary.target.binding | A second person entering, switching hands, or looking at another card does not take over |
| Control the preview by displacement; clutch reset does not move the object | vocabulary.control.mapping | Axis and unit are consistent; clutching, relocating, and regaining tracking all produce no jump |
| Freeze on data invalidity; releasing the hand is not treated as completion | recognition.input.validity.policy, tracking_loss.behavior, tracking_loss.resume | Occlusion and a valid release produce different events; input is not accumulated while frozen |
| Save once locally, with undo offered after saving | commitment.risk.mapping, direct_commit.allow, undo.window | Judged L1 under current conditions; undo does not overwrite a modification made afterward through another entry point |
| Rearrangement can still be completed with gestures turned off | fallback.alternative.path, state_continuity | A "select card → move to position" button is usable, requiring no drag or sustained hold |
This table is a decision slice, not a complete preset. Before enabling, every applicable basic field, input range, feedback, physical effort, and data-handling item still needs to be resolved; a configuration MUST NOT be claimed runnable based on this table alone.
13.2 Example JSON Representation of a Quantity and Hysteresis
The following demonstrates only the machine representation of two fields. Assuming fingertip distance is used to determine a pinch, the numbers are an artificially constructed format sample, not calibrated to a device or verified with users, not a recommended value, and not something that can be enabled directly. records, basis, and validation belong to the configuration record, not the Token namespace; the structural members are made explicit by this example.
{
"purpose": "format_example_only",
"records": {
"gesture.timing.debounce.window": {
"status": "resolved",
"value": {
"duration": { "value": 0, "unit": "ms" },
"start_event": "command_accepted",
"scope": ["subject", "command"],
"exempt": ["cancel", "disable", "exit"]
},
"basis": "illustrative",
"validation": "not_tested"
},
"gesture.timing.hysteresis": {
"status": "unverified",
"candidate_value": [
{
"states": ["open", "pinching"],
"quantity": "thumb_index_tip_distance",
"reference_frame": "tracking_space",
"enter": { "operator": "<=", "value": 0.02, "unit": "m" },
"exit": { "operator": ">=", "value": 0.03, "unit": "m" },
"initial_state": "open",
"between_thresholds": "keep_previous_state"
}
],
"reason": "thresholds_require_device_and_user_validation"
}
}
}
A smaller distance enters pinch, a larger distance exits pinch, and the state in between is held; if a score where "a larger value means more pinch-like" is used instead, the comparison direction must change accordingly, and the distance threshold's size relationship cannot simply be copied over. The validity check precedes hysteresis: on loss, the operation is frozen or cancelled, and setting the distance to zero or infinity to simulate a pinch or a release is forbidden. When a standard SDK is managing this, its determination contract is referenced, without layering on a competing set of pinch events.
The expected verification result for this snippet is: the JSON syntax is legal, the non-negative cooldown is legal, and the distance-threshold relationship is self-consistent; because an unverified field exists and the complete task configuration is absent, the task capability is refused enablement. Being parseable does not equal being usable.
13.3 Configuration Verification Cases
| Input or scenario | Expected result |
|---|---|
debounce.window is 0, with the starting event, scope, and cancellation exemption complete | Legal; segmentation, duplicate prevention, and hand-retraction reset must still be verified |
Continuous control is enabled but control.mapping or current-value feedback is missing | Continuous control is refused, with the missing path pointed out |
| Platform-managed is declared but there is no input contract or observable limit | The managed declaration is refused; a value is not fabricated |
An L3 action appears in direct_commit.allow | That action's direct-commit configuration is refused |
| The near-field entry threshold is greater than or equal to the exit threshold | The dual-threshold configuration is refused |
| Duration, coordinate anchor, or target is changed mid-dwell | The affected candidate is cancelled, or the baseline is explicitly re-established; progress is not inherited to auto-complete |
| The intersection of user preference and the device's hard limit is empty | The affected capability is disabled, with an alternative entry point provided |
| Turning off gestures and a valid release arrive at the same time | The not-yet-effective action is intercepted; a result that has already taken effect is still presented truthfully |
The dictionary defines verification semantics; it does not provide a production runtime validator or a tested universal preset. Engineering delivery MUST include field resolution, constraint checking, runtime facts, and verification evidence from the guidelines' Appendix A, all together.
Configuration Delivery and Verification
The attention anchor is an input-participation condition, not identity authentication or business authorization. When "required continuously" is taken, the loss grace period and expiry behavior MUST be filled in; this example demonstrates only the "required at entry" case, and does not represent a complete, usable gesture configuration. Turning off and revoking authorization intercept the candidate first, and re-entry does not restore an old confirmation.
The accompanying executable sample covers only gesture.engagement.attention.required; the remaining fields are verified item by item against this dictionary; not being covered does not equal not applicable or already passed. The sample is a positive/negative format example for the field chosen, not a product preset that enables every capability directly. A complete product delivery additionally includes applicability, dependencies, evidence, execution mapping, and the effective boundary of in-progress operations.
When a field's name, type, or meaning changes, update its referencing parties and acceptance samples; when only the description is changed and legal behavior is unchanged, the existing field name is retained. A caller reads the resolved, effective configuration, and does not back-infer permission, measurement, or completion facts from a UI control, an animation, or model-generated text. See corresponding scenarios.
References
This document supports the Design Guidelines and Design Token in the same directory. Sources are used to explain the problem and provide method and platform-implementation references; the mandatory force in the guidelines comes from a necessity judgment about the product's commitment, not from the number of citations.
"Body text" means the relevant public sections were read, not that the experiment was replicated; "abstract" supports only the conclusions the abstract explicitly states. Device parameters found in a source MUST NOT be used directly as cross-platform default values.
1. Input, Accessibility, and Control
| Source and scope read | Supported design decision | Corresponding rule / field | Usage boundary |
|---|---|---|---|
| W3C: Motion Actuation, official explanatory body text | Camera-based motion input also needs to consider alternative controls and a turn-off entry point | G3-5, G7-1; fallback.alternative.path, disable.allowed | Applies directly to the Web; includes exceptions for assistive interfaces and essential activities, and cannot be applied unconditionally to motion measurement |
| W3C: Pointer Cancellation, official explanatory body text | Input start, cancellation, release, and undo are designed separately | G1-2, G6-2; vocabulary.target.binding | Its object is single-pointer operation; the cancellation stage for mid-air gestures is a design derivation, and does not require every action to use release-triggering |
| W3C: Dragging Movements, official explanatory body text | Dragging provides a single-pointer alternative that requires no dragging | G7-1; fallback.alternative.path | Keyboard reachability and single-pointer alternative are different check items; switching hands or switching to another form of dragging does not automatically satisfy the requirement |
| W3C: XR Accessibility User Requirements, body text on multimodality, input switching, and fine motor action | Multiple inputs are switchable, target size and spacing, avoiding requiring several simultaneous actions as the sole entry point | G1-5, G3-2/G3-5, G7-1 | A user-requirements statement (Working Group Note), not a directly certifiable test standard; it cannot be used to conclude that every product must have every modality |
| Microsoft: Instinctual interactions, relevant body text | Determine the input model first, then handle competing cues from mixed models | G1-5; engagement.input.routing | A platform-method reference; does not prescribe these guidelines' event-deduplication implementation |
| Microsoft: Point and commit with hands, relevant body text | Separate pointing feedback from operation feedback, keeping a consistent mental model across near- and far-field | G3-2, G4-1; zone.near_far.threshold | Does not supply a universal near/far-field distance or target size on this basis |
| Apple: Design for spatial input, official talk transcript | Standard input takes priority, custom gestures avoid conflicting with system and everyday communicative gestures; a supported posture lowers the burden of sustained operation | G2-3/G2-4, G3-1/G3-2 | Aimed at a specific platform; gesture, target scale, and input-privacy behavior cannot be extrapolated directly to large displays, radar, or every headset |
2. Tracking, Recognition, and Data Processing
| Source and scope read | Supported design decision | Corresponding rule / field | Usage boundary |
|---|---|---|---|
| Ultraleap: Design principles, relevant body text | Gesture discoverability, discriminable feedback, comfort, and interaction-zone constraints | G2-1, G3-1, G4-5 | Device parameters belong to its own hardware conditions, and are not a universal, all-device threshold for these guidelines |
| Ultraleap: Virtual hands, body text on tracking and display | Explicit handling of hand display on tracking loss is needed | G4-5, G5-1; recognition.tracking_loss.* | Freezing or fading the visualization does not equal the business operation being allowed to continue; business stopping and recovery are constrained separately by these guidelines |
| Ultraleap: PinchDetector, API description body text | Forming hysteresis with distinct pinch entry and exit thresholds | G1-2, G5-2; timing.hysteresis | Supports only the dual-threshold method here; does not prove any specific threshold suits every hand shape, and does not treat cooldown, dwell, and hysteresis as the same mechanism |
| W3C: WebXR Hand Input, Physical Hand Input Sources, Frame Loop, Privacy & Security sections | The same pinch may be associated with different input events; joint pose may be unavailable; hand data carries privacy risk | G1-5, G5-1, G7-2/G7-3; input.routing, input.validity.policy, capture.retention | A Working Draft. This API has its own convention for a hand's joints being unavailable, and this cannot be used to assume every SDK returns joint-by-joint data, nor can skeleton data be treated as anonymous by default. Duplicate prevention, maximum data age, and minimal capture are derivations of these guidelines |
| scikit-learn: Tuning the decision threshold, method body text | Distinguishing a predicted score from an action decision; separating parameter-tuning data from final-verification data | G5-2; recognition.confidence.threshold | A general classification method; does not supply gesture thresholds or a confidence score comparable across models; business-consequence tiering is decided by the product |
Tracking-data eligibility depends on the fields the chosen API actually provides. Readable OpenXR body text was not obtained, so its specific validity-flag semantics are not used as evidence here; when a project adopts that interface, it still needs to check the input contract it uses. Standard-event managed handling and directly processing the skeleton are different input models; a managed application is not required to fabricate data it cannot access.
3. Ergonomics, Scope, and Format
| Source and scope read | Purpose | Limitation |
|---|---|---|
| Consumed Endurance, author-institution paper entry and abstract | Provides G3-1/G3-4 and Appendix A.1 with a lead on a method for quantifying posture and arm fatigue | The experiment was not replicated; a safe usage duration for the entire population cannot be given directly |
| Revisiting consumed endurance: NICE, author-institution abstract | Reminds that the fatigue model needs to be checked against the task | Does not substitute for sustained-use testing with target users; does not assert on this basis that every posture or task has the same effect |
| ISO 9241-960, official public abstract | The scope of gesture selection, design process, parameters, and documentation | The abstract explicitly does not specify system response; the paywalled body text was not read, so it cannot be concluded that the entire field lacks a response specification |
| ISO/IEC 30113-1, official public abstract | Background framework for cross-device gesture description and function | Not mid-air-specific; the paywalled body text was not read, and the abstract is not used to argue for a specific interaction clause |
| DTCG Format Module, body text on basic types | Distinguishing a reusable quantity type from a custom behavior structure | Not a schema for the entirety of this dictionary's business semantics; using JSON does not equal DTCG compatibility, nor does it equal the configuration semantics being valid |
| NHTSA guidance document catalog and U.S. DOT publication notice, catalog and abstract | Locates visual-manual distraction assessment material for G7-6 | The guidance is voluntary; no test was performed, so it cannot certify mid-air interaction on this basis or be extrapolated to every jurisdiction and safety-critical domain |
4. What Still Needs Verification Beyond the Sources
- Product values: dwell, grace, feedback latency, zone, gain, dead zone, and threshold all need device and user measurement. Numbers in a format example provide no empirical basis.
- Necessity derivation: target binding, clutch reset, isolation of a late receipt, confirmation expiry, duplicate prevention when the result is unknown, and control of cumulative impact are behavioral requirements formulated to avoid foreseeable failure; it is not claimed that any source prescribes these rules verbatim.
- Target population: left and right hand, hand differences, tremor, prosthetics, worn items, seated/standing posture, and support conditions need to be tested within the product's scope; coverage cannot be claimed without user data.
- Field conditions: multiple people, occlusion, lighting, social acceptability, sustained use, and primary-task load need field verification or a representative simulation.
- Privacy and domain requirements: data processing should have a purpose and a boundary; this source table does not constitute a legal or functional-safety assessment.
- Compliance evidence: document consistency, mechanism taking effect, and user comprehension are verified separately. A counterexample and fault injection are test designs, not proof that an incident has actually occurred or that the product has passed testing.