Browse Source

AnsiParser working with CursesDriver and WindowsDriver

tznind 9 months ago
parent
commit
ac90ed9de6
1 changed files with 12 additions and 1 deletions
  1. 12 1
      Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs

+ 12 - 1
Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs

@@ -583,10 +583,11 @@ internal class CursesDriver : ConsoleDriver
         return new MainLoop (_mainLoopDriver);
     }
 
-    private AnsiResponseParser<KeyCode> Parser { get; set; } = new ();
+    private AnsiResponseParser Parser { get; set; } = new ();
     /// <inheritdoc />
     public override IAnsiResponseParser GetParser () => Parser;
 
+    private List<int> seen = new List<int> ();
     internal void ProcessInput ()
     {
         int wch;
@@ -600,6 +601,8 @@ internal class CursesDriver : ConsoleDriver
 
         var k = KeyCode.Null;
 
+        seen.Add (wch);
+
         if (code == Curses.KEY_CODE_YES)
         {
             while (code == Curses.KEY_CODE_YES && wch == Curses.KeyResize)
@@ -885,6 +888,14 @@ internal class CursesDriver : ConsoleDriver
                 }
                 else
                 {
+                    if (cki != null)
+                    {
+                        foreach (var c in cki)
+                        {
+                            Parser.ProcessInput (c.KeyChar.ToString());
+                        }
+                    }
+
                     k = ConsoleKeyMapping.MapConsoleKeyInfoToKeyCode (consoleKeyInfo);
                     keyEventArgs = new Key (k);
                     OnKeyDown (keyEventArgs);