Browse Source

Preparing NetDriver to handle ansi response on demand.

BDisp 9 months ago
parent
commit
d963941522

+ 32 - 39
Terminal.Gui/ConsoleDrivers/EscSeqUtils/EscSeqReq.cs

@@ -1,4 +1,6 @@
-namespace Terminal.Gui;
+#nullable enable
+
+namespace Terminal.Gui;
 
 
 /// <summary>
 /// <summary>
 ///     Represents the status of an ANSI escape sequence request made to the terminal using
 ///     Represents the status of an ANSI escape sequence request made to the terminal using
@@ -8,22 +10,21 @@
 public class EscSeqReqStatus
 public class EscSeqReqStatus
 {
 {
     /// <summary>Creates a new state of escape sequence request.</summary>
     /// <summary>Creates a new state of escape sequence request.</summary>
-    /// <param name="terminator">The terminator.</param>
-    /// <param name="numReq">The number of requests.</param>
-    public EscSeqReqStatus (string terminator, int numReq)
+    /// <param name="ansiRequest">The <see cref="AnsiEscapeSequenceRequest"/> object.</param>
+    public EscSeqReqStatus (AnsiEscapeSequenceRequest ansiRequest)
     {
     {
-        Terminator = terminator;
-        NumRequests = NumOutstanding = numReq;
+        AnsiRequest = ansiRequest;
+        NumRequests = NumOutstanding = 1;
     }
     }
 
 
     /// <summary>Gets the number of unfinished requests.</summary>
     /// <summary>Gets the number of unfinished requests.</summary>
     public int NumOutstanding { get; set; }
     public int NumOutstanding { get; set; }
 
 
     /// <summary>Gets the number of requests.</summary>
     /// <summary>Gets the number of requests.</summary>
-    public int NumRequests { get; }
+    public int NumRequests { get; set; }
 
 
     /// <summary>Gets the Escape Sequence Terminator (e.g. ESC[8t ... t is the terminator).</summary>
     /// <summary>Gets the Escape Sequence Terminator (e.g. ESC[8t ... t is the terminator).</summary>
-    public string Terminator { get; }
+    public AnsiEscapeSequenceRequest AnsiRequest { get; }
 }
 }
 
 
 // TODO: This class is a singleton. It should use the singleton pattern.
 // TODO: This class is a singleton. It should use the singleton pattern.
@@ -37,24 +38,28 @@ public class EscSeqRequests
     public List<EscSeqReqStatus> Statuses { get; } = new ();
     public List<EscSeqReqStatus> Statuses { get; } = new ();
 
 
     /// <summary>
     /// <summary>
-    ///     Adds a new request for the ANSI Escape Sequence defined by <paramref name="terminator"/>. Adds a
+    ///     Adds a new request for the ANSI Escape Sequence defined by <paramref name="ansiRequest"/>. Adds a
     ///     <see cref="EscSeqReqStatus"/> instance to <see cref="Statuses"/> list.
     ///     <see cref="EscSeqReqStatus"/> instance to <see cref="Statuses"/> list.
     /// </summary>
     /// </summary>
-    /// <param name="terminator">The terminator.</param>
-    /// <param name="numReq">The number of requests.</param>
-    public void Add (string terminator, int numReq = 1)
+    /// <param name="ansiRequest">The <see cref="AnsiEscapeSequenceRequest"/> object.</param>
+    public void Add (AnsiEscapeSequenceRequest ansiRequest)
     {
     {
         lock (Statuses)
         lock (Statuses)
         {
         {
-            EscSeqReqStatus found = Statuses.Find (x => x.Terminator == terminator);
+            EscSeqReqStatus? found = Statuses.Find (x => x.AnsiRequest.Terminator == ansiRequest.Terminator);
 
 
             if (found is null)
             if (found is null)
             {
             {
-                Statuses.Add (new EscSeqReqStatus (terminator, numReq));
+                Statuses.Add (new (ansiRequest));
+            }
+            else if (found.NumOutstanding < found.NumRequests)
+            {
+                found.NumOutstanding = Math.Min (found.NumOutstanding + 1, found.NumRequests);
             }
             }
-            else if (found is { } && found.NumOutstanding < found.NumRequests)
+            else
             {
             {
-                found.NumOutstanding = Math.Min (found.NumOutstanding + numReq, found.NumRequests);
+                found.NumRequests++;
+                found.NumOutstanding++;
             }
             }
         }
         }
     }
     }
@@ -64,54 +69,42 @@ public class EscSeqRequests
     ///     <see cref="Statuses"/> list.
     ///     <see cref="Statuses"/> list.
     /// </summary>
     /// </summary>
     /// <param name="terminator"></param>
     /// <param name="terminator"></param>
+    /// <param name="seqReqStatus"></param>
     /// <returns><see langword="true"/> if exist, <see langword="false"/> otherwise.</returns>
     /// <returns><see langword="true"/> if exist, <see langword="false"/> otherwise.</returns>
-    public bool HasResponse (string terminator)
+    public bool HasResponse (string terminator, out EscSeqReqStatus? seqReqStatus)
     {
     {
         lock (Statuses)
         lock (Statuses)
         {
         {
-            EscSeqReqStatus found = Statuses.Find (x => x.Terminator == terminator);
-
-            if (found is null)
-            {
-                return false;
-            }
-
-            if (found is { NumOutstanding: > 0 })
-            {
-                return true;
-            }
-
-            // BUGBUG: Why does an API that returns a bool remove the entry from the list?
-            // NetDriver and Unit tests never exercise this line of code. Maybe Curses does?
-            Statuses.Remove (found);
+            EscSeqReqStatus? found = Statuses.Find (x => x.AnsiRequest.Terminator == terminator);
+            seqReqStatus = found;
 
 
-            return false;
+            return found is { NumOutstanding: > 0 };
         }
         }
     }
     }
 
 
     /// <summary>
     /// <summary>
-    ///     Removes a request defined by <paramref name="terminator"/>. If a matching <see cref="EscSeqReqStatus"/> is
+    ///     Removes a request defined by <paramref name="seqReqStatus"/>. If a matching <see cref="EscSeqReqStatus"/> is
     ///     found and the number of outstanding requests is greater than 0, the number of outstanding requests is decremented.
     ///     found and the number of outstanding requests is greater than 0, the number of outstanding requests is decremented.
     ///     If the number of outstanding requests is 0, the <see cref="EscSeqReqStatus"/> is removed from
     ///     If the number of outstanding requests is 0, the <see cref="EscSeqReqStatus"/> is removed from
     ///     <see cref="Statuses"/>.
     ///     <see cref="Statuses"/>.
     /// </summary>
     /// </summary>
-    /// <param name="terminator">The terminating string.</param>
-    public void Remove (string terminator)
+    /// <param name="seqReqStatus">The <see cref="EscSeqReqStatus"/> object.</param>
+    public void Remove (EscSeqReqStatus? seqReqStatus)
     {
     {
         lock (Statuses)
         lock (Statuses)
         {
         {
-            EscSeqReqStatus found = Statuses.Find (x => x.Terminator == terminator);
+            EscSeqReqStatus? found = Statuses.Find (x => x == seqReqStatus);
 
 
             if (found is null)
             if (found is null)
             {
             {
                 return;
                 return;
             }
             }
 
 
-            if (found is { } && found.NumOutstanding == 0)
+            if (found is { NumOutstanding: 0 })
             {
             {
                 Statuses.Remove (found);
                 Statuses.Remove (found);
             }
             }
-            else if (found is { } && found.NumOutstanding > 0)
+            else if (found is { NumOutstanding: > 0 })
             {
             {
                 found.NumOutstanding--;
                 found.NumOutstanding--;
 
 

+ 6 - 6
Terminal.Gui/ConsoleDrivers/EscSeqUtils/EscSeqUtils.cs

@@ -1,3 +1,4 @@
+#nullable enable
 namespace Terminal.Gui;
 namespace Terminal.Gui;
 
 
 /// <summary>
 /// <summary>
@@ -170,7 +171,7 @@ public static class EscSeqUtils
     /// <param name="isMouse">Indicates if the escape sequence is a mouse event.</param>
     /// <param name="isMouse">Indicates if the escape sequence is a mouse event.</param>
     /// <param name="buttonState">The <see cref="MouseFlags"/> button state.</param>
     /// <param name="buttonState">The <see cref="MouseFlags"/> button state.</param>
     /// <param name="pos">The <see cref="MouseFlags"/> position.</param>
     /// <param name="pos">The <see cref="MouseFlags"/> position.</param>
-    /// <param name="isResponse">Indicates if the escape sequence is a response to a request.</param>
+    /// <param name="seqReqStatus">The <see cref="EscSeqReqStatus"/> object.</param>
     /// <param name="continuousButtonPressedHandler">The handler that will process the event.</param>
     /// <param name="continuousButtonPressedHandler">The handler that will process the event.</param>
     public static void DecodeEscSeq (
     public static void DecodeEscSeq (
         EscSeqRequests escSeqRequests,
         EscSeqRequests escSeqRequests,
@@ -185,7 +186,7 @@ public static class EscSeqUtils
         out bool isMouse,
         out bool isMouse,
         out List<MouseFlags> buttonState,
         out List<MouseFlags> buttonState,
         out Point pos,
         out Point pos,
-        out bool isResponse,
+        out EscSeqReqStatus? seqReqStatus,
         Action<MouseFlags, Point> continuousButtonPressedHandler
         Action<MouseFlags, Point> continuousButtonPressedHandler
     )
     )
     {
     {
@@ -194,7 +195,7 @@ public static class EscSeqUtils
         isMouse = false;
         isMouse = false;
         buttonState = new List<MouseFlags> { 0 };
         buttonState = new List<MouseFlags> { 0 };
         pos = default (Point);
         pos = default (Point);
-        isResponse = false;
+        seqReqStatus = null;
         char keyChar = '\0';
         char keyChar = '\0';
 
 
         switch (c1Control)
         switch (c1Control)
@@ -262,10 +263,9 @@ public static class EscSeqUtils
                     return;
                     return;
                 }
                 }
 
 
-                if (escSeqRequests is { } && escSeqRequests.HasResponse (terminator))
+                if (escSeqRequests is { } && escSeqRequests.HasResponse (terminator, out seqReqStatus))
                 {
                 {
-                    isResponse = true;
-                    escSeqRequests.Remove (terminator);
+                    escSeqRequests.Remove (seqReqStatus);
 
 
                     return;
                     return;
                 }
                 }

+ 5 - 7
Terminal.Gui/ConsoleDrivers/NetDriver.cs

@@ -2,7 +2,6 @@
 // NetDriver.cs: The System.Console-based .NET driver, works on Windows and Unix, but is not particularly efficient.
 // NetDriver.cs: The System.Console-based .NET driver, works on Windows and Unix, but is not particularly efficient.
 //
 //
 
 
-using System.Diagnostics;
 using System.Diagnostics.CodeAnalysis;
 using System.Diagnostics.CodeAnalysis;
 using System.Runtime.InteropServices;
 using System.Runtime.InteropServices;
 using static Terminal.Gui.ConsoleDrivers.ConsoleKeyMapping;
 using static Terminal.Gui.ConsoleDrivers.ConsoleKeyMapping;
@@ -202,7 +201,7 @@ internal class NetEvents : IDisposable
     {
     {
         // if there is a key available, return it without waiting
         // if there is a key available, return it without waiting
         //  (or dispatching work to the thread queue)
         //  (or dispatching work to the thread queue)
-        if (Console.KeyAvailable && !_suspendRead)
+        if (Console.KeyAvailable)
         {
         {
             return Console.ReadKey (intercept);
             return Console.ReadKey (intercept);
         }
         }
@@ -211,7 +210,7 @@ internal class NetEvents : IDisposable
         {
         {
             Task.Delay (100, cancellationToken).Wait (cancellationToken);
             Task.Delay (100, cancellationToken).Wait (cancellationToken);
 
 
-            if (Console.KeyAvailable && !_suspendRead)
+            if (Console.KeyAvailable)
             {
             {
                 return Console.ReadKey (intercept);
                 return Console.ReadKey (intercept);
             }
             }
@@ -223,7 +222,6 @@ internal class NetEvents : IDisposable
     }
     }
 
 
     internal bool _forceRead;
     internal bool _forceRead;
-    internal static bool _suspendRead;
 
 
     private void ProcessInputQueue ()
     private void ProcessInputQueue ()
     {
     {
@@ -432,7 +430,7 @@ internal class NetEvents : IDisposable
                                   out bool isMouse,
                                   out bool isMouse,
                                   out List<MouseFlags> mouseFlags,
                                   out List<MouseFlags> mouseFlags,
                                   out Point pos,
                                   out Point pos,
-                                  out bool isReq,
+                                  out EscSeqReqStatus seqReqStatus,
                                   (f, p) => HandleMouseEvent (MapMouseFlags (f), p)
                                   (f, p) => HandleMouseEvent (MapMouseFlags (f), p)
                                  );
                                  );
 
 
@@ -446,7 +444,7 @@ internal class NetEvents : IDisposable
             return;
             return;
         }
         }
 
 
-        if (isReq)
+        if (seqReqStatus is { })
         {
         {
             HandleRequestResponseEvent (c1Control, code, values, terminating);
             HandleRequestResponseEvent (c1Control, code, values, terminating);
 
 
@@ -1383,7 +1381,7 @@ internal class NetDriver : ConsoleDriver
     public override bool IsSuspendRead
     public override bool IsSuspendRead
     {
     {
         get => _isSuspendRead;
         get => _isSuspendRead;
-        internal set => _isSuspendRead = _suspendRead = value;
+        internal set => _isSuspendRead = value;
     }
     }
 
 
     public override void StartReportingMouseMoves ()
     public override void StartReportingMouseMoves ()

+ 31 - 23
UnitTests/Input/EscSeqReqTests.cs

@@ -6,30 +6,31 @@ public class EscSeqReqTests
     public void Add_Tests ()
     public void Add_Tests ()
     {
     {
         var escSeqReq = new EscSeqRequests ();
         var escSeqReq = new EscSeqRequests ();
-        escSeqReq.Add ("t");
+        escSeqReq.Add (new () { Request = "", Terminator = "t" });
         Assert.Single (escSeqReq.Statuses);
         Assert.Single (escSeqReq.Statuses);
-        Assert.Equal ("t", escSeqReq.Statuses [^1].Terminator);
+        Assert.Equal ("t", escSeqReq.Statuses [^1].AnsiRequest.Terminator);
         Assert.Equal (1, escSeqReq.Statuses [^1].NumRequests);
         Assert.Equal (1, escSeqReq.Statuses [^1].NumRequests);
         Assert.Equal (1, escSeqReq.Statuses [^1].NumOutstanding);
         Assert.Equal (1, escSeqReq.Statuses [^1].NumOutstanding);
 
 
-        escSeqReq.Add ("t", 2);
+        escSeqReq.Add (new () { Request = "", Terminator = "t" });
         Assert.Single (escSeqReq.Statuses);
         Assert.Single (escSeqReq.Statuses);
-        Assert.Equal ("t", escSeqReq.Statuses [^1].Terminator);
-        Assert.Equal (1, escSeqReq.Statuses [^1].NumRequests);
-        Assert.Equal (1, escSeqReq.Statuses [^1].NumOutstanding);
-
-        escSeqReq = new EscSeqRequests ();
-        escSeqReq.Add ("t", 2);
-        Assert.Single (escSeqReq.Statuses);
-        Assert.Equal ("t", escSeqReq.Statuses [^1].Terminator);
+        Assert.Equal ("t", escSeqReq.Statuses [^1].AnsiRequest.Terminator);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumRequests);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumRequests);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumOutstanding);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumOutstanding);
 
 
-        escSeqReq.Add ("t", 3);
+        escSeqReq = new ();
+        escSeqReq.Add (new () { Request = "", Terminator = "t" });
+        escSeqReq.Add (new () { Request = "", Terminator = "t" });
         Assert.Single (escSeqReq.Statuses);
         Assert.Single (escSeqReq.Statuses);
-        Assert.Equal ("t", escSeqReq.Statuses [^1].Terminator);
+        Assert.Equal ("t", escSeqReq.Statuses [^1].AnsiRequest.Terminator);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumRequests);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumRequests);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumOutstanding);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumOutstanding);
+
+        escSeqReq.Add (new () { Request = "", Terminator = "t" });
+        Assert.Single (escSeqReq.Statuses);
+        Assert.Equal ("t", escSeqReq.Statuses [^1].AnsiRequest.Terminator);
+        Assert.Equal (3, escSeqReq.Statuses [^1].NumRequests);
+        Assert.Equal (3, escSeqReq.Statuses [^1].NumOutstanding);
     }
     }
 
 
     [Fact]
     [Fact]
@@ -44,18 +45,22 @@ public class EscSeqReqTests
     public void Remove_Tests ()
     public void Remove_Tests ()
     {
     {
         var escSeqReq = new EscSeqRequests ();
         var escSeqReq = new EscSeqRequests ();
-        escSeqReq.Add ("t");
-        escSeqReq.Remove ("t");
+        escSeqReq.Add (new () { Request = "", Terminator = "t" });
+        escSeqReq.HasResponse ("t", out EscSeqReqStatus seqReqStatus);
+        escSeqReq.Remove (seqReqStatus);
         Assert.Empty (escSeqReq.Statuses);
         Assert.Empty (escSeqReq.Statuses);
 
 
-        escSeqReq.Add ("t", 2);
-        escSeqReq.Remove ("t");
+        escSeqReq.Add (new () { Request = "", Terminator = "t" });
+        escSeqReq.Add (new () { Request = "", Terminator = "t" });
+        escSeqReq.HasResponse ("t", out seqReqStatus);
+        escSeqReq.Remove (seqReqStatus);
         Assert.Single (escSeqReq.Statuses);
         Assert.Single (escSeqReq.Statuses);
-        Assert.Equal ("t", escSeqReq.Statuses [^1].Terminator);
+        Assert.Equal ("t", escSeqReq.Statuses [^1].AnsiRequest.Terminator);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumRequests);
         Assert.Equal (2, escSeqReq.Statuses [^1].NumRequests);
         Assert.Equal (1, escSeqReq.Statuses [^1].NumOutstanding);
         Assert.Equal (1, escSeqReq.Statuses [^1].NumOutstanding);
 
 
-        escSeqReq.Remove ("t");
+        escSeqReq.HasResponse ("t", out seqReqStatus);
+        escSeqReq.Remove (seqReqStatus);
         Assert.Empty (escSeqReq.Statuses);
         Assert.Empty (escSeqReq.Statuses);
     }
     }
 
 
@@ -63,10 +68,13 @@ public class EscSeqReqTests
     public void Requested_Tests ()
     public void Requested_Tests ()
     {
     {
         var escSeqReq = new EscSeqRequests ();
         var escSeqReq = new EscSeqRequests ();
-        Assert.False (escSeqReq.HasResponse ("t"));
+        Assert.False (escSeqReq.HasResponse ("t", out EscSeqReqStatus seqReqStatus));
+        Assert.Null (seqReqStatus);
 
 
-        escSeqReq.Add ("t");
-        Assert.False (escSeqReq.HasResponse ("r"));
-        Assert.True (escSeqReq.HasResponse ("t"));
+        escSeqReq.Add (new () { Request = "", Terminator = "t" });
+        Assert.False (escSeqReq.HasResponse ("r", out seqReqStatus));
+        Assert.Null (seqReqStatus);
+        Assert.True (escSeqReq.HasResponse ("t", out seqReqStatus));
+        Assert.NotNull (seqReqStatus);
     }
     }
 }
 }

+ 67 - 64
UnitTests/Input/EscSeqUtilsTests.cs

@@ -1,4 +1,6 @@
-namespace Terminal.Gui.InputTests;
+using JetBrains.Annotations;
+
+namespace Terminal.Gui.InputTests;
 
 
 public class EscSeqUtilsTests
 public class EscSeqUtilsTests
 {
 {
@@ -9,7 +11,8 @@ public class EscSeqUtilsTests
     private ConsoleKeyInfo [] _cki;
     private ConsoleKeyInfo [] _cki;
     private EscSeqRequests _escSeqReqProc;
     private EscSeqRequests _escSeqReqProc;
     private bool _isKeyMouse;
     private bool _isKeyMouse;
-    private bool _isReq;
+    [CanBeNull]
+    private EscSeqReqStatus _seqReqStatus;
     private ConsoleKey _key;
     private ConsoleKey _key;
     private ConsoleModifiers _mod;
     private ConsoleModifiers _mod;
     private List<MouseFlags> _mouseFlags;
     private List<MouseFlags> _mouseFlags;
@@ -38,7 +41,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -50,9 +53,9 @@ public class EscSeqUtilsTests
         Assert.Null (_values);
         Assert.Null (_values);
         Assert.Null (_terminating);
         Assert.Null (_terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -73,7 +76,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -85,9 +88,9 @@ public class EscSeqUtilsTests
         Assert.Null (_values);
         Assert.Null (_values);
         Assert.Equal ("\u0012", _terminating);
         Assert.Equal ("\u0012", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -108,7 +111,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -120,9 +123,9 @@ public class EscSeqUtilsTests
         Assert.Null (_values);
         Assert.Null (_values);
         Assert.Equal ("r", _terminating);
         Assert.Equal ("r", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -148,7 +151,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -161,9 +164,9 @@ public class EscSeqUtilsTests
         Assert.Null (_values [0]);
         Assert.Null (_values [0]);
         Assert.Equal ("R", _terminating);
         Assert.Equal ("R", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -194,7 +197,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -208,9 +211,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("2", _values [^1]);
         Assert.Equal ("2", _values [^1]);
         Assert.Equal ("R", _terminating);
         Assert.Equal ("R", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -240,7 +243,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -254,9 +257,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("R", _terminating);
         Assert.Equal ("R", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -286,7 +289,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -300,9 +303,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("4", _values [^1]);
         Assert.Equal ("4", _values [^1]);
         Assert.Equal ("R", _terminating);
         Assert.Equal ("R", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -332,7 +335,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -346,9 +349,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("5", _values [^1]);
         Assert.Equal ("5", _values [^1]);
         Assert.Equal ("R", _terminating);
         Assert.Equal ("R", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -378,7 +381,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -392,9 +395,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("6", _values [^1]);
         Assert.Equal ("6", _values [^1]);
         Assert.Equal ("R", _terminating);
         Assert.Equal ("R", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -424,7 +427,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -438,9 +441,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("7", _values [^1]);
         Assert.Equal ("7", _values [^1]);
         Assert.Equal ("R", _terminating);
         Assert.Equal ("R", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -470,7 +473,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -484,9 +487,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("8", _values [^1]);
         Assert.Equal ("8", _values [^1]);
         Assert.Equal ("R", _terminating);
         Assert.Equal ("R", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -519,7 +522,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -534,9 +537,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("M", _terminating);
         Assert.Equal ("M", _terminating);
         Assert.True (_isKeyMouse);
         Assert.True (_isKeyMouse);
-        Assert.Equal (new() { MouseFlags.Button1Pressed }, _mouseFlags);
+        Assert.Equal (new () { MouseFlags.Button1Pressed }, _mouseFlags);
         Assert.Equal (new (1, 2), _pos);
         Assert.Equal (new (1, 2), _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -569,7 +572,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -587,11 +590,11 @@ public class EscSeqUtilsTests
         Assert.Equal (2, _mouseFlags.Count);
         Assert.Equal (2, _mouseFlags.Count);
 
 
         Assert.Equal (
         Assert.Equal (
-                      new() { MouseFlags.Button1Released, MouseFlags.Button1Clicked },
+                      new () { MouseFlags.Button1Released, MouseFlags.Button1Clicked },
                       _mouseFlags
                       _mouseFlags
                      );
                      );
         Assert.Equal (new (1, 2), _pos);
         Assert.Equal (new (1, 2), _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -624,7 +627,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -639,9 +642,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("M", _terminating);
         Assert.Equal ("M", _terminating);
         Assert.True (_isKeyMouse);
         Assert.True (_isKeyMouse);
-        Assert.Equal (new() { MouseFlags.Button1DoubleClicked }, _mouseFlags);
+        Assert.Equal (new () { MouseFlags.Button1DoubleClicked }, _mouseFlags);
         Assert.Equal (new (1, 2), _pos);
         Assert.Equal (new (1, 2), _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
 
 
         ClearAll ();
         ClearAll ();
 
 
@@ -672,7 +675,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -687,9 +690,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("M", _terminating);
         Assert.Equal ("M", _terminating);
         Assert.True (_isKeyMouse);
         Assert.True (_isKeyMouse);
-        Assert.Equal (new() { MouseFlags.Button1TripleClicked }, _mouseFlags);
+        Assert.Equal (new () { MouseFlags.Button1TripleClicked }, _mouseFlags);
         Assert.Equal (new (1, 2), _pos);
         Assert.Equal (new (1, 2), _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
 
 
         var view = new View { Width = Dim.Fill (), Height = Dim.Fill (), WantContinuousButtonPressed = true };
         var view = new View { Width = Dim.Fill (), Height = Dim.Fill (), WantContinuousButtonPressed = true };
         var top = new Toplevel ();
         var top = new Toplevel ();
@@ -727,7 +730,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -742,9 +745,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("M", _terminating);
         Assert.Equal ("M", _terminating);
         Assert.True (_isKeyMouse);
         Assert.True (_isKeyMouse);
-        Assert.Equal (new() { MouseFlags.Button1Pressed }, _mouseFlags);
+        Assert.Equal (new () { MouseFlags.Button1Pressed }, _mouseFlags);
         Assert.Equal (new (1, 2), _pos);
         Assert.Equal (new (1, 2), _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
 
 
         Application.Iteration += (s, a) =>
         Application.Iteration += (s, a) =>
                                  {
                                  {
@@ -796,7 +799,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
@@ -811,9 +814,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("3", _values [^1]);
         Assert.Equal ("m", _terminating);
         Assert.Equal ("m", _terminating);
         Assert.True (_isKeyMouse);
         Assert.True (_isKeyMouse);
-        Assert.Equal (new() { MouseFlags.Button1Released }, _mouseFlags);
+        Assert.Equal (new () { MouseFlags.Button1Released }, _mouseFlags);
         Assert.Equal (new (1, 2), _pos);
         Assert.Equal (new (1, 2), _pos);
-        Assert.False (_isReq);
+        Assert.Null (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
 
 
@@ -821,7 +824,7 @@ public class EscSeqUtilsTests
 
 
         Assert.Null (_escSeqReqProc);
         Assert.Null (_escSeqReqProc);
         _escSeqReqProc = new ();
         _escSeqReqProc = new ();
-        _escSeqReqProc.Add ("t");
+        _escSeqReqProc.Add (new () { Request = "", Terminator = "t" });
 
 
         _cki = new ConsoleKeyInfo []
         _cki = new ConsoleKeyInfo []
         {
         {
@@ -838,7 +841,7 @@ public class EscSeqUtilsTests
         };
         };
         expectedCki = default (ConsoleKeyInfo);
         expectedCki = default (ConsoleKeyInfo);
         Assert.Single (_escSeqReqProc.Statuses);
         Assert.Single (_escSeqReqProc.Statuses);
-        Assert.Equal ("t", _escSeqReqProc.Statuses [^1].Terminator);
+        Assert.Equal ("t", _escSeqReqProc.Statuses [^1].AnsiRequest.Terminator);
 
 
         EscSeqUtils.DecodeEscSeq (
         EscSeqUtils.DecodeEscSeq (
                                   _escSeqReqProc,
                                   _escSeqReqProc,
@@ -853,7 +856,7 @@ public class EscSeqUtilsTests
                                   out _isKeyMouse,
                                   out _isKeyMouse,
                                   out _mouseFlags,
                                   out _mouseFlags,
                                   out _pos,
                                   out _pos,
-                                  out _isReq,
+                                  out _seqReqStatus,
                                   ProcessContinuousButtonPressed
                                   ProcessContinuousButtonPressed
                                  );
                                  );
         Assert.Empty (_escSeqReqProc.Statuses);
         Assert.Empty (_escSeqReqProc.Statuses);
@@ -868,9 +871,9 @@ public class EscSeqUtilsTests
         Assert.Equal ("20", _values [^1]);
         Assert.Equal ("20", _values [^1]);
         Assert.Equal ("t", _terminating);
         Assert.Equal ("t", _terminating);
         Assert.False (_isKeyMouse);
         Assert.False (_isKeyMouse);
-        Assert.Equal (new() { 0 }, _mouseFlags);
+        Assert.Equal (new () { 0 }, _mouseFlags);
         Assert.Equal (Point.Empty, _pos);
         Assert.Equal (Point.Empty, _pos);
-        Assert.True (_isReq);
+        Assert.NotNull (_seqReqStatus);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (0, (int)_arg1);
         Assert.Equal (Point.Empty, _arg2);
         Assert.Equal (Point.Empty, _arg2);
     }
     }
@@ -1073,7 +1076,7 @@ public class EscSeqUtilsTests
             new ('M', 0, false, false, false)
             new ('M', 0, false, false, false)
         };
         };
         EscSeqUtils.GetMouse (cki, out List<MouseFlags> mouseFlags, out Point pos, ProcessContinuousButtonPressed);
         EscSeqUtils.GetMouse (cki, out List<MouseFlags> mouseFlags, out Point pos, ProcessContinuousButtonPressed);
-        Assert.Equal (new() { MouseFlags.Button1Pressed }, mouseFlags);
+        Assert.Equal (new () { MouseFlags.Button1Pressed }, mouseFlags);
         Assert.Equal (new (1, 2), pos);
         Assert.Equal (new (1, 2), pos);
 
 
         cki = new ConsoleKeyInfo []
         cki = new ConsoleKeyInfo []
@@ -1092,7 +1095,7 @@ public class EscSeqUtilsTests
         Assert.Equal (2, mouseFlags.Count);
         Assert.Equal (2, mouseFlags.Count);
 
 
         Assert.Equal (
         Assert.Equal (
-                      new() { MouseFlags.Button1Released, MouseFlags.Button1Clicked },
+                      new () { MouseFlags.Button1Released, MouseFlags.Button1Clicked },
                       mouseFlags
                       mouseFlags
                      );
                      );
         Assert.Equal (new (1, 2), pos);
         Assert.Equal (new (1, 2), pos);
@@ -1110,7 +1113,7 @@ public class EscSeqUtilsTests
             new ('M', 0, false, false, false)
             new ('M', 0, false, false, false)
         };
         };
         EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
         EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
-        Assert.Equal (new() { MouseFlags.Button1DoubleClicked }, mouseFlags);
+        Assert.Equal (new () { MouseFlags.Button1DoubleClicked }, mouseFlags);
         Assert.Equal (new (1, 2), pos);
         Assert.Equal (new (1, 2), pos);
 
 
         cki = new ConsoleKeyInfo []
         cki = new ConsoleKeyInfo []
@@ -1126,7 +1129,7 @@ public class EscSeqUtilsTests
             new ('M', 0, false, false, false)
             new ('M', 0, false, false, false)
         };
         };
         EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
         EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
-        Assert.Equal (new() { MouseFlags.Button1TripleClicked }, mouseFlags);
+        Assert.Equal (new () { MouseFlags.Button1TripleClicked }, mouseFlags);
         Assert.Equal (new (1, 2), pos);
         Assert.Equal (new (1, 2), pos);
 
 
         cki = new ConsoleKeyInfo []
         cki = new ConsoleKeyInfo []
@@ -1142,7 +1145,7 @@ public class EscSeqUtilsTests
             new ('m', 0, false, false, false)
             new ('m', 0, false, false, false)
         };
         };
         EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
         EscSeqUtils.GetMouse (cki, out mouseFlags, out pos, ProcessContinuousButtonPressed);
-        Assert.Equal (new() { MouseFlags.Button1Released }, mouseFlags);
+        Assert.Equal (new () { MouseFlags.Button1Released }, mouseFlags);
         Assert.Equal (new (1, 2), pos);
         Assert.Equal (new (1, 2), pos);
     }
     }
 
 
@@ -1168,7 +1171,7 @@ public class EscSeqUtilsTests
         _terminating = default (string);
         _terminating = default (string);
         _values = default (string []);
         _values = default (string []);
         _isKeyMouse = default (bool);
         _isKeyMouse = default (bool);
-        _isReq = default (bool);
+        _seqReqStatus = null;
         _mouseFlags = default (List<MouseFlags>);
         _mouseFlags = default (List<MouseFlags>);
         _pos = default (Point);
         _pos = default (Point);
         _arg1 = default (MouseFlags);
         _arg1 = default (MouseFlags);