Skip to content

Let plugins receive raw touch input and multi-finger taps on UI nodes - #1004

Merged
manuelmayer-dev merged 2 commits into
mainfrom
feature/ui-pointer-events
Sep 25, 2026
Merged

manuelmayer-dev merged 2 commits into
mainfrom
feature/ui-pointer-events

Conversation

@manuelmayer-dev

@manuelmayer-dev manuelmayer-dev commented Sep 25, 2026 •

Copy link
Copy Markdown
Member

Requested by the maintainer (no issue).

Summary

UI nodes can now declare pointer-down, pointer-move, pointer-up and tap to receive raw per-finger positions every 16 ms and multi-finger taps, so plugins can build a touchpad. A pointer-move still waiting for a slow plugin is replaced by the newer one in the host and the plugin runtime instead of queuing without bound.

Testing

Full Release build and test suites pass, plus runtime, web client and legacy touch shim specs. Verified end to end with a scratch plugin on a disposable host, driven from Chrome and a real tablet over the LAN, including moving and clicking the macOS cursor from the widget.

Plugin SDK / API compatibility

Added UiComponentEvents.PointerDown, PointerMove, PointerUp and Tap, three UiComponentModifiers constants, the UiPointerSample, UiPointerDown and UiPointerUp structs, and four readers on UiEventData.

  • No public, non-obsolete SDK or plugin protocol contract was removed or changed
  • Contracts were only extended additively (new members with defaults, new optional fields, new message types)
  • Anything being retired carries [Obsolete] and [MacroDeckDeprecated], is in the deprecation registry, and still works
  • A plugin compiled against the previous SDK still loads and behaves identically (source and binary compatible)
  • The conformance suite passes and the sample plugin builds and runs unchanged
  • Any intentional break was explicitly agreed beforehand and is described below

Notes

A plugin that already declared its own event named tap or pointer-* now claims the pointer on its tile, the same as when drag was added. The Companion App needs a matching change.

Checklist

  • Tests were added or updated where needed
  • The change was verified manually where appropriate
  • Documentation was updated if the change affects documented behaviour
  • I reviewed and understand every submitted change

@manuelmayer-dev manuelmayer-dev added feature New feature or request area:host Host: Domain, Application, Infrastructure area:sdk Public plugin SDK, analyzers, hosting, testing area:ui-model Shared UI model contracts area:web-client The framework-free web client area:runtime Shared UI runtime consumed by both clients area:docs The published developer documentation site compat:plugin-api Affects a public plugin-facing contract; needs a compatibility review labels Sep 25, 2026
@manuelmayer-dev
manuelmayer-dev merged commit 5a13400 into main Sep 25, 2026
19 of 20 checks passed
@manuelmayer-dev
manuelmayer-dev deleted the feature/ui-pointer-events branch September 25, 2026 17:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:docs The published developer documentation site area:host Host: Domain, Application, Infrastructure area:runtime Shared UI runtime consumed by both clients area:sdk Public plugin SDK, analyzers, hosting, testing area:ui-model Shared UI model contracts area:web-client The framework-free web client compat:plugin-api Affects a public plugin-facing contract; needs a compatibility review feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant