How Tap works
Same idea as “how apps run on Frame”: Tap is a BLE peripheral. Your host app owns the logic. Tap streams input events after you put it in the right mode.
- Host app is the brain
- Text vs Controller
- Tap combination bitmask
- Mouse
- Air gestures
- Raw sensors
- Pairing (no scan)
Host app is the brain
Tap does not run your application. The phone, tablet, PC, or Python process is the host. It connects over BLE, configures input mode, and reacts to callbacks (tap, mouse, air gesture, raw sensors). That is why the SDKs live on the host platforms — iOS, Android, Python, and Web — not as installable “apps” on the wearable.
Text vs Controller
When you turn Tap on, it boots into Text mode: a Bluetooth HID keyboard (and mouse behavior for pointing). Recognized taps become characters via the OS keyboard stack. In Text mode the SDK receives nothing.
To get finger combinations in your app, switch to Controller mode after connect. When your app backgrounds, switch back to Text so the user keeps a working keyboard. Android and several other SDKs automate this if you hook the app lifecycle (pause / resume, etc.).
Additional modes (platform naming varies slightly):
- Controller + Mouse HID — controller events plus system cursor
- Raw Sensor — finger accelerometers + thumb IMU stream
Tap combination bitmask
A tap arrives as an unsigned 8-bit value in the range 1–31. Binary bits map to fingers:
| Bit | Finger |
|---|---|
| 0 (LSB) | Thumb |
| 1 | Index |
| 2 | Middle |
| 3 | Ring |
| 4 | Pinky |
Example: combination 5 = 0b00101 = thumb + middle. Helpers decode to five booleans:
let fingers = TAPCombination.toFingers(combination)
// fingers[0]=thumb … fingers[4]=pinkyFull 1–31 table: API reference.
Mouse
In controller-related modes, mouse motion arrives as velocity on X/Y (scaling = sensitivity) plus a boolean that marks real vs false detection — see each SDK’s moused / OnMoused / onMouseInputReceived.
Air gestures
Tap v2 / TapXR expose air gestures (one/two finger up, down, left, right, thumb-to-index / thumb-to-middle touches). Enum integer values are shared across SDKs — listed in the API reference. Extended Spatial Control states (100–102) are qualified developers only.
Raw sensors
Raw mode streams five 3-axis finger accelerometers, plus thumb IMU (accelerometer + gyro) on Tap Strap 2. Typical stream rate on iOS is described as ~200 callbacks per minute. Payload types split Device (fingers) vs IMU (thumb unit).
Pairing (no scan)
Official SDKs attach to devices the OS already paired. They do not perform a general Tap scan. Pair in system Bluetooth settings beforestart() / connect().