public static void Main(string[] args) { AppDomain.CurrentDomain.ProcessExit += On_ProcessExit; Console.OutputEncoding = Encoding.UTF8; //unicode not supported by mono correctly Console.InputEncoding = Encoding.UTF8; //new Thread(Listener).Start(); var platform = Environment.OSVersion.Platform; var winNt = platform == PlatformID.Win32NT; con = new NativeConsole(winNt && !Console.IsOutputRedirected ? (IAnsiConsole) new ConhostAnsiConsole() : new GenericAnsiConsole()); con.Init(); Console.WriteLine(Console.OutputEncoding); TestRendering(); return; var ansi = new AnsiInputConverter(); while (true) { // if (!Console.KeyAvailable) { // Thread.Sleep(new TimeSpan(20000)); // continue; // } char c = ansi.Read(false); Console.Write(c); var ev = ansi.DequeueEvent(); Console.Write(ev?.ToString()); } //// bool last = false; //// var sw = new Stopwatch(); // while (true) { //// if (!Console.KeyAvailable) { //// if (!last) { //// sw.Start(); //// last = true; //// } //// Thread.Sleep(new TimeSpan(10000)); //// Console.Write('.'); //// continue; //// } //// if (last) { //// Console.WriteLine($"{sw.ElapsedMilliseconds}"); //// sw.Reset(); //// last = false; //// } // var c = Console.ReadKey(true); // var shift = (c.Modifiers & ConsoleModifiers.Shift) != 0 ? "Shift" : "NoShift"; // var control = (c.Modifiers & ConsoleModifiers.Control) != 0 ? "Control" : "NoControl"; // var alt = (c.Modifiers & ConsoleModifiers.Alt) != 0 ? "Alt" : "NoAlt"; // Console.Write($"'{c.KeyChar}' {(int)c.KeyChar}, {c.Key}, {shift}, {control}, {alt} \n"); // } }