A gesture turns direct manipulation into a number: how far a layer was dragged, how far it was rotated like a dial, how much it is hovered or pressed. The layer itself doesn't move on its own — you bind that number to any property, on this layer or any other. One input, any output, no code.
01Quick tour
- Select a layer. In Sentences, open + Interaction › ✋ Gestures and pick Rotate (dial, 0–270°).
- Press Preview (or turn on Simulate) and rotate the layer around its center.
- Back in Sentences, open the row Rotation follows dial angle. Turn on Snap — the dial now stops every 90°. Turn on Spring — it settles with a little bounce.
02Gesture presets
| Preset | What it sets up |
|---|---|
| Drag to rotate (360° view) | Horizontal drag → Rotation Y, 800 px = one full turn, with Momentum and Auto-rotate. The product-viewer pattern |
| Draggable | Drag on both axes → Position. Stops on release |
| Slider (drag along X, 0–300 px) | Horizontal drag between Min / Max constraints → Position X |
| Draggable with momentum | Like Draggable, but it keeps moving after release and slows down |
| Rotate (dial, 0–270°) | Rotate around the layer's center → Rotation |
| Hover parallax | The layer shifts slightly toward the cursor and scales up a touch while hovered |
A preset adds the Gesture capability (when it needs one) and its binding in one step; Ctrl+Z undoes both.
03The Gesture capability
Properties › + Add capability › Gesture. The section starts with one sentence that says what it does — Drags horizontally, 0–300 px, keeps momentum on release.
| Setting | Options |
|---|---|
| Type | Drag — the drag offset is the input · Rotate — rotation around the layer's center, like a dial |
| Axis | X · Y · Both (Drag only) |
| Constraints | None · Min / Max — the value stops at the limits (px for Drag, ° for Rotate). Dragging back from past a limit moves immediately — there is no dead zone |
| On release | Stop · Momentum — keeps the release velocity and slows down · Snap back — returns to its start |
| Auto-rotate | Keeps drifting slowly while nobody touches it (px/s or °/s) — showroom products |
Live shows the current input while you drag in Preview or Simulate.
Pressing a child of a layer drives that layer's gesture too, so a group with a Gesture can be grabbed anywhere on it. A transparent rectangle on top of a 3D scene can carry the gesture and drive the 3D model's rotation.
04Gesture inputs
In any binding's Input picker, under Gestures · drag · rotate · hover:
| Input | Value | Needs |
|---|---|---|
| Drag X / Y | Drag offset in px | A Gesture (Drag) on that layer |
| Dial angle | Rotation in degrees | A Gesture (Rotate) |
| Gesture progress (0→1) | Position between Min and Max | A Gesture with Min / Max constraints |
| Hover (0→1) | Eases to 1 while hovered, back to 0 on leave | Nothing — every layer has it |
| Press (0→1) | Eases to 1 while pressed | Nothing |
| Cursor X / Y over layer (−1…1) | Where the cursor is on the layer; eases to 0 on leave | Nothing — made for hover parallax / tilt |
Each input can read this layer or another one by name — drag a knob, rotate a needle somewhere else.
If a binding reads a drag or dial from a layer that has no Gesture, Sentences flags it (Dial has no Rotate gesture) with an Add Gesture fix.
05The binding card: Input → Map → Output
Open a binding row in Sentences:
- Input — where the number comes from (a gesture, scroll, the cursor, a variable…).
- Map — the steps that shape it. The quick options under it are one click each:
- Map range — Input range → Output range, e.g. 0–800 px → 0–360°
- Clamp — keep the output inside its range
- Snap — snap to steps (90° steps for angles)
- Spring — follow with a spring
- Invert — swap the output range
- Output — the property that is written. Change it to send the same input somewhere else.
The row's sentence reads the result back in words — Rotation Y follows drag X, Scale X reacts to hover.
06Preview needs an artboard
Gestures and all other interactions run in Simulate anywhere on the canvas, but Preview and Share play an artboard. If the scene has none, Preview tells you so and offers Wrap in artboard, which puts every top-level layer into a new artboard without moving anything.