Guide: Gesture & Haptic Events
Subscribe to ring events and route them into your app or agent tooling.
Subscribe
ring.addEventListener("tap", () => console.log("tap"));
ring.addEventListener("doubletap", () => runCommand());
ring.addEventListener("gesture", (e) =>
console.log(e.detail.type, "→", e.detail.action));Event Reference
tap,doubletap— PAD tapsholdstart/holdend— sustained press, on the PAD areaswipeleft/swiperight— directional slide on the top PAD archrotatecw/rotateccw— tilt rotationgesture— fires alongside the specific event above, with a mappedactionine.detailsensorframe— raw IMU samples (opt-in, bonded-gated on the device side)battery— battery level updatesack— acknowledgement for a sent haptic or waveform command
Raw Sensor Stream
await ring.enableSensorStream(true);
ring.addEventListener("sensorframe", (e) => {
for (const s of e.detail.samples) applyImu(s.ax_mg, s.ay_mg, s.az_mg, s.gx_ddps);
});Route Events to Tools
For MCP integrations, forward specific gestures to tool calls rather than subscribing your agent directly to the raw event stream — it keeps the mapping between "what the user did" and "what the agent should do" explicit and testable.
Recover
Config uses clobber-free read-modify-write (readable-then-compare) — safe to retry a failed sendHapticor sendWaveform call without risking a corrupted device state.
FAQ
Can I replay events? The SDK doesn't buffer past events — log what you need on your own side if you want replay/audit capability.