Repository navigation
feat: drags with modifier keys and multi-point paths - #64
Merged
Merged
Conversation
iamnbutler
force-pushed
the
feat/drag-path
branch
from
October 17, 2026 04:06
3e83c51 to
248573c
Compare
desktop_drag takes modifiers, held system-wide for the whole drag, and a path of up to 16 points within one window. A drag with modifiers uses the foreground route even within one window, since held keys are global, and reports unknown. The new peekaboo-drag-path.patch adds waypoints to the exact-window and foreground drag requests.
iamnbutler
force-pushed
the
feat/drag-path
branch
from
October 17, 2026 04:20
248573c to
cd25744
Compare
This was referenced Oct 17, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds modifier keys and multi-point paths to
desktop_drag, from the "Not supported" bullet in docs/tools.md.peekaboo-drag-path.patchgoes last in the stack, afterpeekaboo-sck-quarantine.patch.Tool
modifiers(command,control,option,shift, each at most once) are held for the whole drag: Option-drag to copy or Command-drag to move in Finder, or Shift to constrain.unknown.path: 1–16 normalized points in the same screenshot, visited in order in straight segments.to_snapshot.tomay equalfrom(a closed loop).desktop_dragrow, the pointer paragraph and the "Not supported" bullet are updated.Patch (
peekaboo-drag-path.patch)DragPolyline.samplesgives each segment at least one sample, shares the rest by segment length, and lands exactly on each waypoint. A straight drag samples the same points as before.ExactWindowDragRequestgetswaypoints; a missing key decodes as empty. Validation refuses more than 16 waypoints, points outside the window, or fewer samples than segments. Its sample count and dispatched unit count are unchanged.DragOperationRequestandPeekabooBridgeDragRequestgetwaypoints.GestureService.dragfollows the samples instead of its movement profile when waypoints are given.max(20, segments × 4), capped at 96, for the background route, and addssegments × 4as a floor for the foreground one.Tests
ExactWindowHeldPointerLifecycleTests: 33 pass, 5 of them new (waypoint samples and unit count, refusals, closed loop, decoding withoutwaypoints, polyline sampling). Run in the foreground with a temporary coordination root.npm run checkand the native build pass.Live check: pending (screen locked). Two things need a live check: