@@ -14,6 +14,10 @@ namespace PowerSession.Main.ConPTY
1414 public sealed class Terminal
1515 {
1616 private const string CtrlC_Command = "\x3" ;
17+ private char [ ] UpArrow = new [ ] { ( char ) 0x1b , ( char ) 0x5b , 'A' } ;
18+ private char [ ] DownArrow = new [ ] { ( char ) 0x1b , ( char ) 0x5b , 'B' } ;
19+ private char [ ] RightArrow = new [ ] { ( char ) 0x1b , ( char ) 0x5b , 'C' } ;
20+ private char [ ] LeftArrow = new [ ] { ( char ) 0x1b , ( char ) 0x5b , 'D' } ;
1721
1822 private readonly Stream _inputReader ;
1923 private readonly Stream _outputWriter ;
@@ -92,7 +96,24 @@ private void AttachStdin()
9296 while ( ! _token . IsCancellationRequested )
9397 {
9498 var key = Console . ReadKey ( true ) ;
95- _consoleInputWriter . Write ( key . KeyChar ) ;
99+ switch ( key . Key )
100+ {
101+ case ConsoleKey . UpArrow :
102+ _consoleInputWriter . Write ( UpArrow ) ;
103+ break ;
104+ case ConsoleKey . DownArrow :
105+ _consoleInputWriter . Write ( DownArrow ) ;
106+ break ;
107+ case ConsoleKey . RightArrow :
108+ _consoleInputWriter . Write ( RightArrow ) ;
109+ break ;
110+ case ConsoleKey . LeftArrow :
111+ _consoleInputWriter . Write ( LeftArrow ) ;
112+ break ;
113+ default :
114+ _consoleInputWriter . Write ( key . KeyChar ) ;
115+ break ;
116+ }
96117 }
97118 } , TaskCreationOptions . LongRunning ) ;
98119 }
0 commit comments