Repository navigation
feat: hold modifier keys during clicks, and press key sequences against one snapshot - #77
Merged
Merged
Conversation
iamnbutler
force-pushed
the
feat/modifier-keys
branch
2 times, most recently
from
October 17, 2026 06:02
ad7bde4 to
68ac96d
Compare
iamnbutler
force-pushed
the
feat/modifier-keys
branch
2 times, most recently
from
October 17, 2026 06:16
d132c87 to
7c03fea
Compare
iamnbutler
force-pushed
the
feat/modifier-keys
branch
from
October 17, 2026 06:27
7c03fea to
efe92a2
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.
Covers gaps 1 and 4 from #75.
Modifier clicks (
desktop_clickmodifiers)modifierstakes any ofcommand,optionandshift, for single, double or triple clicks. Instead of adding a new route, this uses upstream Peekaboo's existingforegroundModifierClickBridge operation, now allowed in the runtime. The host:The result reports
cursor_restorationandfocus_restoration.unknownonce dispatched, with a message naming the held keys. Nothing reads back the selection.kind: "right". Right and middle clicks with modifiers are also refused.Key sequences (
desktop_keykeys/repeat)keystakes 1 to 16 chords, each with its own modifiers.repeattakes 1 to 32 presses of onekey. Either way, the whole sequence runs against one snapshot under one lease.expectedWindowIdentityand bounds), since focus moves as Tab runs. Before each event, the host checks that the app's focused element is still in this window and that it is still the app's key window. There is a 30 ms gap between keys.keys_sentandkeys_requested.unknown.refused.unknown, withkeys_sent.keywithoutrepeatbehaves exactly as before.Checks
npm run checkandnpm testpass (11, including a newtest/input.test.mjscovering the validation refusals). Native and the signed dev app build.