diff --git a/context/glass-cockpit.md b/context/glass-cockpit.md index 59edf58..0384914 100644 --- a/context/glass-cockpit.md +++ b/context/glass-cockpit.md @@ -289,7 +289,12 @@ Ported from RP412 (itself vRIO's `KeyboardLampMirror`). Keys bound to a lamp add map's side columns (0x10-0x1F), red for the rest — flashing in step with the on-screen buttons (its `LampLevel` copy matches the FIXED `BTLampBrightnessOf`). Per-key boards light each bound key; zone-lit boards mirror the strongest lamp board-wide. All WinRT runs on a private worker -thread. Gate: `BT_KEYLIGHT=0` opts out; no Dynamic Lighting = one log line, then dormant. +thread. Gate: **OPT-IN since 2026-07-26** -- `BT_KEYLIGHT=1` enables (operator decision: the +player base is not on Windows 11, so the feature was unshipped -- removed from README/ +CONTROLS.* -- rather than promised); default is OFF and produces zero log lines. Also note +the CMakeLists BUILD gate: an SDK older than 10.0.22000 compiles a dormant five-function +stub (this build machine does), so shipping the real mirror requires a newer-SDK build. +No Dynamic Lighting at runtime = one log line, then dormant. ⚠ **RP412's packing hazard does NOT apply here.** It compiles that file with forced default struct packing because *its* engine is `/Zp1`, which would break the WinRT ABI. BT411's `BT_OPTS` is diff --git a/docs/CONTROLS.html b/docs/CONTROLS.html index d22d10c..d20f935 100644 --- a/docs/CONTROLS.html +++ b/docs/CONTROLS.html @@ -814,7 +814,6 @@ BattleTech 4.11 gitea.mysticmachines.com/VWE/BT411 docs/CONTROLS.md · CONTROLS.txt ships with the game - RGB keyboards mirror the pod lamps · BT_KEYLIGHT=0 to disable diff --git a/docs/CONTROLS.md b/docs/CONTROLS.md index 558ee02..14a769e 100644 --- a/docs/CONTROLS.md +++ b/docs/CONTROLS.md @@ -96,10 +96,6 @@ key MOUSE4 button 0x40 # side button = main trigger key MOUSE5 button 0x46 # side button = middle thumb ``` -**RGB keyboards** with Windows Dynamic Lighting mirror the panel: any key you have bound to a -lamp button glows in the panel's own colours and flashes in step with the on-screen buttons. Turn -it off with `BT_KEYLIGHT=0` in `environ.ini`. - --- ## Cockpit layout diff --git a/engine/MUNGA_L4/L4PADRIO.cpp b/engine/MUNGA_L4/L4PADRIO.cpp index 51f23bf..345deb9 100644 --- a/engine/MUNGA_L4/L4PADRIO.cpp +++ b/engine/MUNGA_L4/L4PADRIO.cpp @@ -206,13 +206,17 @@ PadRIO::PadRIO(): // yellow for the Secondary/Screen columns (0x10-0x1F), red for the rest, // exactly like the on-screen buttons. Keypad binds have no lamp, so // they are skipped; a key bound twice takes its FIRST binding. - // BT_KEYLIGHT=0 opts out; a machine without Dynamic Lighting logs once - // and stays dormant. + // OPT-IN since 2026-07-26 (operator decision: the player base is not on + // Windows 11, so the feature is unshipped rather than promised) -- + // BT_KEYLIGHT=1 enables it; default is OFF and it appears in no + // player-facing documentation. The full mirror is intact behind the + // gate for whoever wants it, on a build whose SDK compiled the real + // thing (see the CMakeLists stub gate). // keyLightActive = False; { const char *gate = getenv("BT_KEYLIGHT"); - if (gate == NULL || atoi(gate) != 0) + if (gate != NULL && atoi(gate) != 0) { static int lightKeys[192]; static int lightAddresses[192]; diff --git a/game/btl4main.cpp b/game/btl4main.cpp index 85820b9..a83f599 100644 --- a/game/btl4main.cpp +++ b/game/btl4main.cpp @@ -334,13 +334,11 @@ static const char *kEnvironIniDefault = "\n" "# ---- Optional ---------------------------------------------------------------\n" "\n" -"# RGB keyboard lamp mirror (Windows Dynamic Lighting): keys bound to a lamp\n" -"# button in bindings.txt glow with the panel -- yellow for the map's side\n" -"# columns, red for the rest -- and flash in step with the on-screen buttons.\n" -"# Per-key keyboards light each bound key; zone-lit boards mirror the\n" -"# strongest lamp board-wide. Unset or nonzero = on; 0 = off. A machine\n" -"# without Dynamic Lighting logs once and stays dormant.\n" -"#BT_KEYLIGHT=0\n" +"# RGB keyboard lamp mirror (Windows Dynamic Lighting, Windows 11 22H2+):\n" +"# keys bound to a lamp button glow with the panel and flash in step with the\n" +"# on-screen buttons. OFF unless you set 1 (unshipped: the player base is\n" +"# not on Windows 11, and some builds carry only a dormant stub).\n" +"#BT_KEYLIGHT=1\n" "\n" "# ---- Multiplayer ------------------------------------------------------------\n" "\n" diff --git a/players/README.txt b/players/README.txt index 58e79b9..5f1b0c0 100644 --- a/players/README.txt +++ b/players/README.txt @@ -129,9 +129,6 @@ of the middle of the road, or breaks each display into its own window. The cockpit now scales to ANY window shape without distorting -- drag it, maximise it, or launch with -fit for borderless full screen. -RGB KEYBOARDS: if yours supports Windows Dynamic Lighting, the keys you have -bound to cockpit buttons glow in the panel's colours and flash along with it. - This build: {VERSION}. Private -- do not redistribute. {EXPIRE}Test builds STOP WORKING 14 days after they are made -- if the game {EXPIRE}says it has expired, just grab the operator's newest zip. diff --git a/tools/mkdist.py b/tools/mkdist.py index 356c5db..6417092 100644 --- a/tools/mkdist.py +++ b/tools/mkdist.py @@ -76,21 +76,6 @@ def main(): exes = ["build/Release/btl4.exe"] - # HONESTY CHECK (2026-07-26): the RGB keylight compiles to a dormant stub - # on machines whose Windows SDK is too old (< 10.0.22000 -- see - # CMakeLists), and the README promises the feature. Say so at cut time, - # so nobody ships a stub build believing the promise. - try: - with open(exes[0], "rb") as f: - if b"built without Dynamic Lighting support" in f.read(): - print(" *** NOTE: this exe carries the KEYLIGHT STUB (build " - "machine's SDK too old). The README's RGB-keyboard " - "feature will be dormant in this zip -- build on a " - "machine with SDK >= 10.0.22000 to ship the real " - "mirror. ***") - except OSError: - pass - bats = ["players/play_solo.bat", "players/join.bat", "players/join_lan.bat", "players/joyconfig.bat"] if steam_on: