Skip to content

Vibe coding a plugin? 😎 Teach your agent Modlumi first. Works with Claude Code, Codex, Cursor and more.

ToolEvent

What happened, handed to a tool’s handlers.

readonly alt: boolean


readonly ctrl: boolean

Ctrl, or Cmd on macOS.


readonly key: string | null

For key events: a letter, "enter", "backspace", "escape", "space", an arrow such as "left", or a modifier.


readonly picked: { entity: AnyEntity; path: readonly (ComponentInstance | Group)[]; } | null

The deepest entity under the pointer, such as a face inside a group, and the groups and instances above it, from the model root down. The Select tool would pick the first of path below Model.activePath, or entity when there is none.


readonly point: ToolPoint | null

The snapped point under the pointer, or null over empty space.


readonly reason: "escape" | "reselected" | "history" | "focusLost" | null

For "cancel": why the gesture ended.


readonly repeat: boolean


readonly shift: boolean


readonly text: string | null

For "value": what the user typed in the measurement box.


readonly type: "value" | "activate" | "deactivate" | "suspend" | "resume" | "move" | "down" | "up" | "doubleClick" | "keyDown" | "keyUp" | "cancel"


readonly x: number

Pointer position in logical viewport pixels.


readonly y: number