Keyboard controls
Built-in bindings
GridCanvas (through useGridInteraction) handles these keys when the canvas has focus and an item is selected:
During a pointer drag, Shift locks movement to the dominant axis and Ctrl / Cmd bypasses alignment snapping.
The canvas gets tabIndex={0} unless you pass your own. Selection happens on pointer down; to select from the keyboard, give items focusable content and call actions.select on focus. keyboardStep is a provider prop; the canvas reads it from context.
Extending the bindings
GridCanvas omits onKeyDown from its props because the hook owns it. To add keys, render your own canvas element with useGridInteraction and compose the handler:
A custom canvas must also feed its measured size to the provider; see custom rendering.
On the core
There is nothing keyboard-specific in the core: a nudge is moveItem with the current position plus a delta, and snap: false so the item moves by exactly the step.
See accessibility for focus order, announcements, and reduced motion.