Whether the keystroke is one a caret owns: deletion or caret motion — Delete, Backspace,
Insert, Home/End, PageUp/PageDown, the arrows — in every modifier variant, since
ctrl+Backspace deletes a word and shift+ArrowLeft extends a selection.
The shared definition of what a focused text widget consumes with stopPropagation
(useEditCommit's handleTextKeys; the grid's useEditorKeymap consumes the same set per mode).
Two deliberate exclusions:
Enter / Tab / Escape and the function keys — commit/traverse keys the command tree must keep
seeing, even from inside an editor;
the native text chords (mod + a/c/x/v/z/y) — those SHOULD reach the dispatcher, where
the input-clipboard injector answers them for an editable origin with a leaf contribution that
acts on the focused element. Consuming them at the widget would route copy through the browser
clipboard instead of the app's, so the grid and an input would no longer share one.
There is no dispatcher-side counterpart on purpose: a widget consuming its OWN caret keys is
unambiguous, whereas the dispatcher second-guessing the target's TYPE is the banned defer (Core law,
consequence 1). What keeps a grid command off a key born in a task pane is origin containment,
not this — see CommandScope.contains.
Whether the keystroke is one a caret owns: deletion or caret motion —
Delete,Backspace,Insert,Home/End,PageUp/PageDown, the arrows — in every modifier variant, sincectrl+Backspacedeletes a word andshift+ArrowLeftextends a selection.The shared definition of what a focused text widget consumes with
stopPropagation(useEditCommit'shandleTextKeys; the grid'suseEditorKeymapconsumes the same set per mode).Two deliberate exclusions:
Enter/Tab/Escapeand the function keys — commit/traverse keys the command tree must keep seeing, even from inside an editor;mod+a/c/x/v/z/y) — those SHOULD reach the dispatcher, where the input-clipboard injector answers them for an editable origin with a leaf contribution that acts on the focused element. Consuming them at the widget would route copy through the browser clipboard instead of the app's, so the grid and an input would no longer share one.There is no dispatcher-side counterpart on purpose: a widget consuming its OWN caret keys is unambiguous, whereas the dispatcher second-guessing the target's TYPE is the banned defer (Core law, consequence 1). What keeps a grid command off a key born in a task pane is origin containment, not this — see CommandScope.contains.