feat(input): v0.4.0 — was_action_released release-edge (P.3.10)
Additive, backward-compatible. Mirrors was_action_pressed dispatch pattern. Selection-Lib's prev_click_down workaround now obsolete. Engine bindings (was_released + was_mouse_released) added in sporel-engine commit covering P.3.10 Task 1. Removes was_released-edge entry from DEPRECATED-MVP list.
This commit is contained in:
25
README.md
25
README.md
@@ -1,17 +1,18 @@
|
||||
# lib-core.input
|
||||
|
||||
P.0 action-mapping lib. Decouples physical keys from logical actions.
|
||||
Polling-based (`is_action_down`) + edge-based (`was_action_pressed`).
|
||||
Polling-based (`is_action_down`) + edge-based (`was_action_pressed`, `was_action_released`).
|
||||
Direction-vector helper composes 4 actions into `{x, y}` ∈ {-1, 0, +1}².
|
||||
|
||||
- Lib-ID: `lib-core.input`
|
||||
- Version: `0.2.0` (breaking change from v0.1.0 — string-keys only, see §Migration)
|
||||
- Version: `0.4.0`
|
||||
- Spec v0.3.0 (P.3.3): `meta/docs/superpowers/specs/2026-05-12-p3-3-mouse-input-design.md`
|
||||
- Spec v0.2.0 (P.2.6): `meta/docs/superpowers/specs/2026-05-11-engine-input-symbolic-keys-design.md`
|
||||
- Spec v0.1.0 (P.0): `meta/docs/superpowers/specs/2026-05-09-p0-lib-input-design.md`
|
||||
|
||||
Forward-compat stubs (DEPRECATED-MVP) for mouse-button actions, gamepad
|
||||
bindings, action-context-stack, key-rebinding-config, modifier-combos,
|
||||
analog-axis, was_action_released edge, right-modifier-keys, function-keys,
|
||||
analog-axis, right-modifier-keys, function-keys,
|
||||
special-keys (delete/insert/home/end/pageup/pagedown).
|
||||
|
||||
## API
|
||||
@@ -19,7 +20,8 @@ special-keys (delete/insert/home/end/pageup/pagedown).
|
||||
- `input.bind(action_name, {"keyname1", "keyname2", ...})` — bind multi-key array (string-keys only, see §Key-Names)
|
||||
- `input.unbind(action_name)` — remove binding
|
||||
- `input.is_action_down(action) → bool` — any bound key currently down
|
||||
- `input.was_action_pressed(action) → bool` — any bound key just-pressed
|
||||
- `input.was_action_pressed(action) → bool` — any bound key just-pressed (press-edge; true for exactly one frame per key-down event)
|
||||
- `input.was_action_released(action) → bool` — any bound key just-released (release-edge; true for exactly one frame per key-up event; triggers once per press-release cycle)
|
||||
- `input.direction(left, right, up, down) → {x, y}` — vec in {-1,0,+1}², Y-down-positive
|
||||
- `input.action_count() → number` — bound-actions count
|
||||
|
||||
@@ -74,3 +76,18 @@ end
|
||||
| `bind("move", { engine.input.KEY_A, engine.input.KEY_LEFT })` | `bind("move", { "a", "left" })` |
|
||||
|
||||
`engine.input.KEY_*` constants remain available for direct engine-input use (e.g. `engine.input.is_key_down(engine.input.KEY_F1)` for edge-cases without bind), but `lib-core.input.bind` strict-rejects them.
|
||||
|
||||
## CHANGELOG
|
||||
|
||||
## v0.4.0 (P.3.10, 2026-05-15)
|
||||
- Added `was_action_released(action_name)` — release-edge detection per action.
|
||||
Selection-Lib's `prev_click_down` workaround promoted.
|
||||
- Engine surface: `engine.input.was_released` + `was_mouse_released`.
|
||||
|
||||
## v0.3.0 (P.3.3, 2026-05-12)
|
||||
- `bind()` now accepts unified key+mouse strings via BIND_MAP with kind-tagged entries.
|
||||
- Mixed bindings supported (e.g. `{"e", "mouse_left"}`).
|
||||
- Backward-compatible with v0.2.0 callsites.
|
||||
|
||||
## v0.2.0 (P.2.6, 2026-05-11)
|
||||
- `bind()` accepts string-key-names only. Integer `engine.input.KEY_*` args are rejected.
|
||||
|
||||
Reference in New Issue
Block a user