tapwithus/tap-ios-sdk/tapkit-dpad
Claude Code and agent skill by tapwithus/tap-ios-sdk
- community
Checking that the SKILL.md file is still in the repository.
Build a D-Pad style controller on TapXR or TapBand. Swipes move, short clicks select, a pinch-hold locks into rotate or drag, and a fist hides. Use for menus, select and move, drag, rotate, or game controls.
Install
npx vskill@latest install tapwithus/tap-ios-sdk/tapkit-dpadSKILL.md
D-Pad (swipe, pinch, hold to rotate or drag)
TapXR (current developer firmware) and TapBand. It needs tapXRAirGestured and IMU motion. Same interaction as the D-Pad page in the TAP_EV sandbox (https://tapwithus.github.io/TAP_EV/). TapBand is coming soon, same BLE API: https://www.tapwithus.com/tapband-waitlist/
The iOS SDK already collapses the raw gesture stream into edges. Drop is the release and FistEnd is the show, so this controller does not count a run of "none" packets. It still ignores a second copy of the same edge within 40 ms. See tapkit-air-gestures for raw class indexes vs the processed layer.
Interaction
| User does | TAPXRAirGesture | Event | |
|---|---|---|---|
| Swipe left / right / up / down | SwipeLeft 17, SwipeRight 18, SwipeUp 19, SwipeDown 20 | .direction("left") and so on | |
| Short pinch thumb + index / middle / ring / pinky | ClickIndex…ClickPinky (1–4) | .pinch(0...3), only when nothing is held | |
| Hold a pinch | DragIndex…DragPinky (5–8) | .hold(i), mode "pending" | |
| …and twist 25° or more within 1 s | roll from tapDidChangeOrientation | .mode("rotate"), then .rotate(degrees) | |
| …and do not twist | — | after 1 s .mode("drag"), then .drag | |
| Relax the hand | Drop (9) | .release(i) | |
| Make a fist / relax the fist | FistBegin 14 / FistEnd 15 | .hide / .show |
A repeat of the same swipe, click, drag, or fist-begin within 40 ms is ignored.
Use the template
Copy scripts/DpadController.swift. It has no Bluetooth in it. TAPKit-Example compiles that same file into the Knob / D-Pad screen (GestureSampleViewController). The example target is Swift 4, and the script stays on that syntax.
onGesture(rawValue, now:)takesgesture.rawValueandProcessInfo.processInfo.systemUptime(or any monotonic seconds).onMotion(dx:dy:roll:now:)takesmouseddeltas and orientation roll.tick(now:)locks drag if motion packets stop before the window ends.held,mode("pending","rotate","drag", or nil), andhiddenare the state to draw.
Required device setup, after start() and tapConnected. Same as the knob: controller mode, model detection, IMU motion, air-gesture model, stream op mode. On TapXR and TapBand, setTAPXRState(.airMouse()) covers the vision model.
move, select, rotate, drag, snapBack, hideControls, and showControls are the app's own functions. Orientation has no device identifier; keep a single active Tap.
Tuning
| Argument | Default | Effect | |
|---|---|---|---|
rotateLockDegrees | 25 | Roll travel that chooses rotate. Raise it if drag is chosen too rarely. | |
lockWindow | 1.0 | Seconds to decide between rotate and drag. | |
debounce | 0.040 | Ignore a repeat of the same edge inside this window. |
- Drag deltas are raw device units. Multiply by a gain (TAP_EV uses about 0.45 points per unit) and clamp to the screen.
- Rotate degrees are relative to the start of the hold. TAP_EV multiplies by about 1.8 for a stronger visual turn.
- If a drag should not stay after release, snap the item back on
.release.
PotentialDragOrClick* (raw 10–13) is ignored. Wait for the click, drag, or drop.
Ideas
- Four shapes, each selected by its pinch. Hold to rotate or move one of them.
- Menu: swipes move a highlight,
ClickIndexconfirms,ClickMiddlegoes back, fist closes. - Photo viewer: swipes change the photo, hold and twist rotates, hold and drag pans.
See also tapkit-knob and tapkit-air-gestures.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/tapkit-ios-sdk/skills/tapkit-dpad/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tapwithus/tap-ios-sdk/tapkit-dpad)