diff --git a/src/BizHawk.Client.Common/input/InputCoalescerControllers.cs b/src/BizHawk.Client.Common/input/InputCoalescerControllers.cs index 905ff583a6..9537d0f011 100644 --- a/src/BizHawk.Client.Common/input/InputCoalescerControllers.cs +++ b/src/BizHawk.Client.Common/input/InputCoalescerControllers.cs @@ -1,7 +1,6 @@ #nullable enable using System.Linq; -using BizHawk.Common.StringExtensions; using BizHawk.Emulation.Common; namespace BizHawk.Client.Common @@ -32,13 +31,6 @@ namespace BizHawk.Client.Common { protected override void ProcessSubsets(string button, bool state) { - // we don't want a release of e.g. "Ctrl+E" to release Ctrl as well - if (!state) - { - Buttons[button.SubstringAfterLast('+')] = state; - return; - } - // For controller input, we want Shift+X to register as both Shift and X (for Keyboard controllers) foreach (var s in button.Split('+')) Buttons[s] = state; } diff --git a/src/BizHawk.Client.EmuHawk/Input/Input.cs b/src/BizHawk.Client.EmuHawk/Input/Input.cs index 4c9367a8be..51092cc766 100644 --- a/src/BizHawk.Client.EmuHawk/Input/Input.cs +++ b/src/BizHawk.Client.EmuHawk/Input/Input.cs @@ -117,7 +117,9 @@ namespace BizHawk.Client.EmuHawk // don't generate events for things like Ctrl+LeftControl var mods = _modifiers; - if (currentModifier is not 0U) + if (!newState) + mods = 0; // don't set mods for release events, handle releasing all corresponding buttons later in InputCoalescer.Receive() + else if (currentModifier is not 0U) mods &= ~currentModifier; var ie = new InputEvent