diff --git a/MobiFlight/Joysticks/Winwing/WinwingFcu.cs b/MobiFlight/Joysticks/Winwing/WinwingFcu.cs index 1052d4401..551108797 100644 --- a/MobiFlight/Joysticks/Winwing/WinwingFcu.cs +++ b/MobiFlight/Joysticks/Winwing/WinwingFcu.cs @@ -38,6 +38,7 @@ private List EncoderIncDecButtons = new List { SPD_DEC, SPD_INC, HDG_DEC, HDG_INC, ALT_DEC, ALT_INC, VS_DEC, VS_INC, BAROL_DEC, BAROL_INC, BAROR_DEC, BAROR_INC }; private volatile bool DoInitialize = true; + private volatile bool DoRetrigger = false; private volatile bool DoReadHidReports = false; private WinwingFcuReport CurrentReport = new WinwingFcuReport(); private WinwingFcuReport PreviousReport = new WinwingFcuReport(); @@ -159,12 +160,17 @@ private void InputReportReceived(HidBuffer hidBuffer) if (DoInitialize) { CurrentReport.CopyTo(PreviousReport); - PreviousReport.ButtonState = ~PreviousReport.ButtonState; // to retrigger - PreviousReport.ButtonState2 = ~PreviousReport.ButtonState2; // to retrigger - PreviousReport.ButtonState3 = ~PreviousReport.ButtonState3; // to retrigger DoInitialize = false; } + if (DoRetrigger) + { + PreviousReport.ButtonState = ~CurrentReport.ButtonState; // to retrigger + PreviousReport.ButtonState2 = ~CurrentReport.ButtonState2; // to retrigger + PreviousReport.ButtonState3 = ~CurrentReport.ButtonState3; // to retrigger + DoRetrigger = false; + } + // Detect and Trigger Button Events uint pressed = CurrentReport.ButtonState & ~PreviousReport.ButtonState; // rising edges uint released = PreviousReport.ButtonState & ~CurrentReport.ButtonState; // falling edges @@ -211,7 +217,7 @@ protected void TriggerButtonPress(JoystickDevice device, MobiFlightButton.InputE public override void Retrigger() { - DoInitialize = true; + DoRetrigger = true; } diff --git a/MobiFlight/Joysticks/Winwing/WinwingPap3.cs b/MobiFlight/Joysticks/Winwing/WinwingPap3.cs index 22f31d2a9..00b634e19 100644 --- a/MobiFlight/Joysticks/Winwing/WinwingPap3.cs +++ b/MobiFlight/Joysticks/Winwing/WinwingPap3.cs @@ -33,6 +33,7 @@ private List EncoderIncDecButtons = new List { SPD_DEC, SPD_INC, HDG_DEC, HDG_INC, ALT_DEC, ALT_INC, VS_DEC, VS_INC, CRSL_DEC, CRSL_INC, CRSR_DEC, CRSR_INC }; private volatile bool DoInitialize = true; + private volatile bool DoRetrigger = false; private volatile bool DoReadHidReports = false; private WinwingPap3Report CurrentReport = new WinwingPap3Report(); private WinwingPap3Report PreviousReport = new WinwingPap3Report(); @@ -155,12 +156,17 @@ private void InputReportReceived(HidBuffer hidBuffer) if (DoInitialize) { CurrentReport.CopyTo(PreviousReport); - PreviousReport.ButtonState = ~PreviousReport.ButtonState; // to retrigger - PreviousReport.ButtonState2 = ~PreviousReport.ButtonState2; // to retrigger - PreviousReport.ButtonState3 = ~PreviousReport.ButtonState3; // to retrigger DoInitialize = false; } + if (DoRetrigger) + { + PreviousReport.ButtonState = ~CurrentReport.ButtonState; // to retrigger + PreviousReport.ButtonState2 = ~CurrentReport.ButtonState2; // to retrigger + PreviousReport.ButtonState3 = ~CurrentReport.ButtonState3; // to retrigger + DoRetrigger = false; + } + // Detect and Trigger Button Events uint pressed = CurrentReport.ButtonState & ~PreviousReport.ButtonState; // rising edges uint released = PreviousReport.ButtonState & ~CurrentReport.ButtonState; // falling edges @@ -207,7 +213,7 @@ protected void TriggerButtonPress(JoystickDevice device, MobiFlightButton.InputE public override void Retrigger() { - DoInitialize = true; + DoRetrigger = true; } public override void Update()