浏览代码

Fix a bug where a esc key was ignored.

BDisp 8 月之前
父节点
当前提交
cc21bd461d
共有 1 个文件被更改,包括 12 次插入1 次删除
  1. 12 1
      Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceRequestUtils.cs

+ 12 - 1
Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceRequestUtils.cs

@@ -1078,7 +1078,18 @@ public static class AnsiEscapeSequenceRequestUtils
 
 
                 break;
                 break;
             case uint n when n is > 0 and <= KeyEsc:
             case uint n when n is > 0 and <= KeyEsc:
-                if (consoleKeyInfo is { Key: 0, KeyChar: '\t' })
+                if (consoleKeyInfo is { Key: 0, KeyChar: '\u001B' })
+                {
+                    key = ConsoleKey.Escape;
+
+                    newConsoleKeyInfo = new (
+                                             consoleKeyInfo.KeyChar,
+                                             key,
+                                             (consoleKeyInfo.Modifiers & ConsoleModifiers.Shift) != 0,
+                                             (consoleKeyInfo.Modifiers & ConsoleModifiers.Alt) != 0,
+                                             (consoleKeyInfo.Modifiers & ConsoleModifiers.Control) != 0);
+                }
+                else if (consoleKeyInfo is { Key: 0, KeyChar: '\t' })
                 {
                 {
                     key = ConsoleKey.Tab;
                     key = ConsoleKey.Tab;