Glass 'keymap regression' triage: stale build-glass exe, not code — rebuild + full re-verify
The live-reported glass regressions (arrows dead / lever+detent missing / V+J/K/L+N inert / weapons into the ground) were build-glass/Release/btl4.exe built at 07:47 running the pre-5dd3536 image: no suppression tables, no V/J/K/L keys, unpinned RIO ids. content\bindings.txt already carried the merged map (arrows = W/S lever + A/D pedals) and parsed clean. Clean rebuild closed every symptom; SendInput re-verification: lever holds on release + stops at zero, LEFT/RIGHT turn in MID (wire-sign correct), V toggles with BT_SHOT pair, level boresight at spawn, R/F elevation drive; pod build rebuilt + smoked un-regressed. Code delta: BT_MPPR_TRACE [mppr-c] line enriched with mode/pedals/stick/turn/elev so one env-gated line proves the whole control surface. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
80c9394131
commit
1535e3e48d
@@ -84,7 +84,16 @@ copied from them.
|
||||
pattern — ended the glass double-dispatch: 'w'=pilot-select, numpad/F-key key-up aliases);
|
||||
unbound keys keep their authentic meanings (5/z presets, t-o pilot select, +/- zoom).
|
||||
In BAS control mode the pod turns with the STICK (Q/E) and pedals are inactive — authentic;
|
||||
A/D turn in MID/ADV. Full audit + census: `docs/GLASS_COCKPIT.md` §2026-07-20.
|
||||
A/D turn in MID/ADV. Arrow keys mirror the drive cluster (UP/DOWN = the W/S throttle lever,
|
||||
LEFT/RIGHT = the A/D pedals). Full audit + census: `docs/GLASS_COCKPIT.md` §2026-07-20.
|
||||
- **2026-07-20 live "keymap regression" report: STALE EXE [T2].** The human-reported glass
|
||||
regressions (arrows/lever/detent dead, V/J/K/L/N inert, ground-fire) were a
|
||||
`build-glass/Release/btl4.exe` built BEFORE 5dd3536 landed — relaunched without rebuilding.
|
||||
No input-code change was needed; a clean rebuild + full SendInput re-verification (lever
|
||||
holds + zero stop, MID turns, V toggle shot-pair, level boresight, pod smoke) closed every
|
||||
symptom, and V's edge is now [T2]. `BT_MPPR_TRACE` now prints mode/pedals/stick/turn/elev.
|
||||
Procedural rule: rebuild every live build dir after landing an input/engine commit.
|
||||
Detail: `docs/GLASS_COCKPIT.md` §2026-07-20 (later).
|
||||
|
||||
## Key Relationships
|
||||
- Extends: [[pod-hardware]] (RIO input path) · Uses: [[gauges-hud]] dev-gauge modes ·
|
||||
|
||||
@@ -243,6 +243,41 @@ pre-btinput double-dispatch, back on the glass side.
|
||||
- Un-regression: build-pod (gates OFF) compiles 0 errors; forced-walk run drives
|
||||
(speedDemand=61.501, 32 subsystems, streamed ids 3→+0xdc / 4→+0xe4 unchanged).
|
||||
|
||||
### 2026-07-20 (later) — the "keymap regression" live report: STALE EXE, not code [T2]
|
||||
|
||||
**Report (human, live glass session):** arrows dead/half-dead (UP accelerated, no detent;
|
||||
LEFT/RIGHT no turn), throttle not a lever, V no view toggle, J/K/L/N inert, weapons firing into
|
||||
the ground. **Root cause: `build-glass/Release/btl4.exe` was built 07:47 — BEFORE commit
|
||||
`5dd3536` (08:35) landed the whole audit fix set** (SuppressKey tables, V/J/K/L hardcoded keys,
|
||||
the RIO-id pinning that makes 0x15/N work) — the session was relaunched without rebuilding, and
|
||||
kept running the pre-audit image. `content\bindings.txt` (08:23) already WAS the merged map and
|
||||
the loader parsed it fine (`[padrio] bindings loaded: 40 keys, 10 pad buttons, 5 pad axes`), so
|
||||
every bindings-file symptom analysis was a red herring; the binary was simply old. The
|
||||
ground-fire symptom is the same session: with the R/F/X semantic chaos of the unsuppressed typed
|
||||
channel, the torso elevation had been driven down and nothing recentered it.
|
||||
|
||||
**Fix:** `rm build-glass/Release/btl4.exe && cmake --build build-glass --config Release` (0
|
||||
`error C`). No input-code change was needed — arrows/lever/detent/V were all already correct at
|
||||
HEAD. One diagnostic enrichment landed: the `BT_MPPR_TRACE` `[mppr-c]` line now also prints
|
||||
`mode/pedals/stick/turn/elev`, so one env-gated line proves the whole control surface.
|
||||
|
||||
**Re-verification (build-glass, DEV.EGG solo, SendInput-injected keys, own PID only):**
|
||||
- UP hold 0.9 s → thr 0→0.63, dmd 38.70; released → **holds** 0.63 for 3 s (persistent lever).
|
||||
- DOWN hold 2.5 s → thr 0.36→0.0028→0, rev=0 throughout — **stops at zero, no reverse
|
||||
crash-through** (the wire throttle is the authentic 0..1 lever; reverse is the 0x3F button).
|
||||
- M → `[mode] control mode -> 1`; LEFT → pedals +1 / turnDemand +1 (CCW=left, the wire sign);
|
||||
RIGHT → pedals −1 / turnDemand −1; both auto-center on release. (In BAS the pedals are
|
||||
authentically inactive — turns are the stick, Q/E.)
|
||||
- R/F → stick.y ±1, torso elev 0→+0.349→−0.195, holds where released (positional torso,
|
||||
matches the btinput path); **boresight level at spawn (elev=0)**.
|
||||
- V → `[view] COCKPIT eyepoint` ↔ `[view] external chase`, BT_SHOT pair confirms
|
||||
(chase mech ↔ canopy + reticle). Closes the audit's one T3 (V edge) as [T2].
|
||||
- SPACE → `[emitter] FIRED #1`. Pod build rebuilt + smoked: BT_AUTODRIVE=0.8 →
|
||||
dmd=49.2008, clean log, no cross-contamination.
|
||||
|
||||
**Lesson (procedural):** after landing an engine/input commit, REBUILD every live build dir
|
||||
before relaunching — a stale `build-glass` exe reproduces "the whole keymap is broken" exactly.
|
||||
|
||||
## 2026-07-18 — Merge origin/master (commit f889e24): btinput meets PadRIO
|
||||
|
||||
Master's 33-commit run landed (D1 relay/operator-console line, CONTROLS.MAP+XInput binding
|
||||
|
||||
@@ -886,7 +886,19 @@ void
|
||||
DEBUG_STREAM << "[mppr-c] thr=" << throttlePosition << " rev=" << reverseThrust
|
||||
<< " topSpd=" << mech->reverseStrideLength
|
||||
<< " fScale=" << mech->forwardThrottleScale
|
||||
<< " -> dmd=" << speedDemand << "\n" << std::flush; }
|
||||
<< " -> dmd=" << speedDemand
|
||||
// glass-regression verification 2026-07-20: the same trace
|
||||
// carries the turn/aim scalars so one gated line proves the
|
||||
// whole control surface (mode, pedals->turnDemand, stick,
|
||||
// torso elevation). turnDemand prints the value computed
|
||||
// BELOW this block last frame (member state) -- adequate for
|
||||
// a 0.5 s cadence trace.
|
||||
<< " mode=" << controlMode
|
||||
<< " pedals=" << pedalsPosition
|
||||
<< " stick=(" << stickPosition.x << "," << stickPosition.y << ")"
|
||||
<< " turn=" << turnDemand
|
||||
<< " elev=" << (torso ? torso->CurrentElevation() : 0.0f)
|
||||
<< "\n" << std::flush; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user