diff --git a/game/reconstructed/mech4.cpp b/game/reconstructed/mech4.cpp index 65a5597..0c7f560 100644 --- a/game/reconstructed/mech4.cpp +++ b/game/reconstructed/mech4.cpp @@ -2760,8 +2760,18 @@ void // task #12: Generator1-4 actions assign the selected weapon // to Generator A..D; Reconnect toggles Manual/Auto. gBTGenSelKey = gBTInput.genSel; - // issue #26: -/= step the master volume (edge-detected; - // VK_OEM_MINUS/VK_OEM_PLUS, focus-guarded like all polls). + // issue #26: master volume keys (edge-detected, focus-guarded + // like all polls). MOVED -/= -> PgDn/PgUp (2026-07-26): the + // old VK_OEM_MINUS/VK_OEM_PLUS poll shared its physical keys + // with the authentic 1995 typed-character target-zoom hotkeys + // ('+'/'-'), so one press zoomed AND stepped the volume -- a + // long-standing double-fire the operator had noticed. PgUp/ + // PgDn produce NO WM_CHAR, so they cannot collide with any + // typed hotkey, they are unbound in every bindings layout + // (including the glass-cockpit-refit keyboard board, which + // consumes -/= as Comm-bank buttons), and they exist on + // tenkeyless keyboards. Numpad +/- were rejected for the + // same reason -/= failed: their typed chars feed the zoom. { extern void BTAudioMasterVolumeStep(int direction); static int sVolDn = 0, sVolUp = 0; @@ -2770,9 +2780,9 @@ void GetWindowThreadProcessId(GetForegroundWindow(), &fgpid); int focused_vol = (fgpid == GetCurrentProcessId()); int dn = focused_vol - && (GetAsyncKeyState(VK_OEM_MINUS) & 0x8000) != 0; + && (GetAsyncKeyState(VK_NEXT) & 0x8000) != 0; int up = focused_vol - && (GetAsyncKeyState(VK_OEM_PLUS) & 0x8000) != 0; + && (GetAsyncKeyState(VK_PRIOR) & 0x8000) != 0; if (dn && !sVolDn) BTAudioMasterVolumeStep(-1); if (up && !sVolUp) BTAudioMasterVolumeStep(+1); sVolDn = dn;