The array the entry was pushed into
(ScreenKeyboardLayer.bindings or
focus‑target bindings).
The corresponding action‑keys map.
The enclosing screen keyboard layer.
The binding entry just created.
Original handler (function or action‑ID string).
Normalized key names.
Optionaloptions: BoundKeyboardOptions
Original BoundKeyboardOptions.
OptionalonRelease: () => void
Runs after the entry is removed, on every unbind path
— including the once/times self-unbind that
bypasses the returned closure. Must be idempotent,
since both paths can fire for one binding.
An unbind function that reverses the registration.
Finalize a bound keyboard entry: register action-key mappings (when the handler is a string action ID), create an unbind closure that cleans up the binding and global-key overrides, and optionally wrap the handler with times/once lifecycle.
Extracted from KeyboardEngine.boundKeyboard to eliminate the duplicate block that previously appeared identically in both the focus‑target and layer‑level branches.