diff --git a/BizHawk.MultiClient/Input/Input.cs b/BizHawk.MultiClient/Input/Input.cs index c5f8ac7715..5a695bd377 100644 --- a/BizHawk.MultiClient/Input/Input.cs +++ b/BizHawk.MultiClient/Input/Input.cs @@ -201,8 +201,23 @@ namespace BizHawk.MultiClient _NewEvents.Clear(); //analyze keys - foreach (var key in KeyInput.State.PressedKeys) HandleButton(key.ToString(), true); - foreach (var key in KeyInput.State.ReleasedKeys) HandleButton(key.ToString(), false); + var bleh = new HashSet(); + foreach(var k in KeyInput.State.PressedKeys) + bleh.Add(k.ToString()); + var unpress = new List(); + foreach (var kvp in LastState) + { + if (!kvp.Value) continue; + if (!bleh.Contains(kvp.Key)) + unpress.Add(kvp.Key); + } + + foreach(var k in unpress) + HandleButton(k, false); + + foreach (var k in KeyInput.State.PressedKeys) + HandleButton(k.ToString(), true); + //analyze joysticks for (int i = 0; i < GamePad.Devices.Count; i++)