Skip to content

Commit 43dbbc0

Browse files
authored
Merge pull request #12 from ibigbug/handle-arrow-keys
handle arrow keys
2 parents 615903a + 6125dd6 commit 43dbbc0

3 files changed

Lines changed: 27 additions & 6 deletions

File tree

PowerSession.Cli/PowerSession.Cli.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
<Title>PowerSession</Title>
1010
<Authors>Yuwei Ba</Authors>
1111
<IsPackable>true</IsPackable>
12-
<PackageVersion>1.2.1</PackageVersion>
13-
<AssemblyVersion>1.2.1</AssemblyVersion>
14-
<FileVersion>1.2.1</FileVersion>
12+
<PackageVersion>1.4.0</PackageVersion>
13+
<AssemblyVersion>1.4.0</AssemblyVersion>
14+
<FileVersion>1.4.0</FileVersion>
1515
<PackAsTool>true</PackAsTool>
1616
<ToolCommandName>PowerSession</ToolCommandName>
1717
<RepositoryUrl>https://github.com/ibigbug/PowerSession</RepositoryUrl>
@@ -24,7 +24,7 @@
2424

2525
<ItemGroup>
2626
<PackageReference Include="Microsoft.Packaging.Tools.Trimming" Version="1.1.0-preview1-26619-01" />
27-
<PackageReference Include="System.CommandLine.Experimental" Version="0.3.0-alpha.19528.1" />
27+
<PackageReference Include="System.CommandLine.Experimental" Version="0.3.0-alpha.19573.2" />
2828
</ItemGroup>
2929

3030
</Project>

PowerSession.ConPTY/Terminal.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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
}

PowerSession.sln

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
1+
22
Microsoft Visual Studio Solution File, Format Version 12.00
33
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PowerSession.ConPTY", "PowerSession.ConPTY\PowerSession.ConPTY.csproj", "{0E1F00C7-4F6B-4A7D-9A2F-6AD18A3D2F0A}"
44
EndProject

0 commit comments

Comments
 (0)