feedback5 WAC: docs for the rebindable shortcuts — PLAYING §11 (the shortcut list and how to change it), README 操作 (Q / X added, the settings named), DESIGN §10 (design/client.md), §25.15, I18N's stale hotkey-line example

Golden unchanged (docs only).
This commit is contained in:
sganggs committed 2026-10-07 01:56:25 +08:00
1 parent f2bec76176
commit f1df0d359d
5 files changed
+53 -5

No files matched your search

+30
View File
@@ -1062,3 +1062,33 @@ fixed (W5AA's commits name every golden scenario moved); two were already fixed
bounty 使徒 whose seeds leaked sent every seed into 联防 carrying the card — 15 of 16 re-entries paid it again — which
is the report; on this tree only the 使徒's own leak carries it.
- Golden: unchanged. Pinned: `test/sim/feedback5-community-pins.test.js`.
### 25.15 Rebindable shortcuts (W5AC; the community request 「快捷键可不可以自己设置」, the owner's decision of 2026-10-07) — `ui/gameLogic/shortcuts.js`, `ui/gameLogic/settings.js sanitizeSettings`, `ui/settings.js` (`HotkeySection`, `hotkeyLabelOf`), `screens/game.js`, `ui/facingWheel.js`
- **Asked**: players wanted to choose their own keys.
- **Before**: R 刷新, F 冻结, D 升级, Q 撤退 / X 出售 the selected operator (PR #114, 0.1.4), Space 准备就绪 (in a solo battle:
pause / resume) and Esc (close) were fixed in `shortcutFor`; the shop bar, the ready / pause button and the
underframe drew them as fixed text, the facing wheel swallowed Space and `KeyR` / `KeyF` / `KeyD`. No camera, speed or
panel keys exist; the other keys are the dialogs', the guide's, 干员调配's and the facing wheel's own (Esc, Enter, the
arrows, paging), listed with the shortcuts in docs/PLAYING.md §11. Nothing official to follow: the shortcuts are the
remake's.
- **Now**: the settings (localStorage `sp.pref.settings`) hold `keys`, action → `KeyboardEvent.code`; the defaults are the
keys of 0.1.4, so nothing changes for a player who never opens the section. `sanitizeSettings` keeps each saved key
that may be a shortcut and gives any other its default; not a map, or two actions on one key, gives the defaults. One
lookup, `actionForKey` — the action of the character typed (the keycap: AZERTY, Dvorak), else of the physical key (a
Russian layout, an IME), the 0.1.4 `code === 'KeyR' || key === 'r'` match generalised and identical for the defaults —
serves `shortcutFor(e, keys)` in game.js and the facing wheel's `facingSwallows`; the modifier, text-field, repeat and
overlay guards are unchanged. The key hints read `hotkeyLabelOf`. 设置 → 快捷键 (the one SettingsModal, in a match and
on the title screen): each action with its key; a click — or Enter on the focused key — waits, the next key binds;
Esc cancels and the dialog stays open, Tab leaves; a key held with Ctrl / Alt / ⌘ or one the interface keeps (Esc,
Tab, Enter, the arrows, F1–F12) is refused and the wait goes on; a key another action has is swapped (that action takes
the old key) and the line under the list names both; 恢复默认. Bindable: A–Z, 0–9, Space, the punctuation keys, Delete,
Insert, Home, End, PageUp, PageDown; Esc stays fixed. On a touch-only device the section says the keys need a
keyboard and folds the list; under 768 px it is one column.
- [ASSUMED]: a conflict swaps rather than refuses (the request names neither, a swap never leaves an action without a
key); Esc and the dialogs' own keys stay fixed; the bindable set; no modifier combinations (no shortcut used one).
- Golden: unchanged (client UI only). Tests: `test/ui/feedback5-hotkeys.test.js` (the map, sanitising, conflicts, the
lookup equal to 0.1.4 for the defaults on four layouts, capture, handlers and hints with a rebound key),
`test/ui/gameLogic.test.js` (sanitizeSettings), `test/ui/hotkeys.e2e.test.js` (SP_E2E=1: 撤退 rebound to W with the
keyboard only in the mock match — Q then does nothing, W retreats, the choice survives a reload; phone width). Docs:
docs/PLAYING.md §11, README 操作, DESIGN §10 (design/client.md).