-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Description
Description
We got a report in PowerShell repo about "arrow keys not functioning properly in PowerShell 7.2 with rxvt terminals", see PowerShell/PowerShell#16606.
It turns out Console.ReadKey behaves differently in .NET 6 comparing to .NET 5 when TERM is set to rxvt.
In .NET 5, the ConsoleKeyInfo returned for LeftArrow doesn't has any modifiers, as shown below:
However, in .NET 6, the the ConsoleKeyInfo returned for LeftArrow has Control and Shift modifiers specified, as shown below:
It's not like Console.ReadKey always work properly in .NET 5 with rxvt terminals, for example, Home returns Escape+H (it returns OH in .NET 6), and End returns Escape+F (it returns OF in .NET 6), instead of Home and End as expected.
But it's been reported that setting TERM=xterm would make Console.ReadKey work as expected with regard to arrow keys with rxvt terminals -- see PowerShell/PowerShell#16606 (comment).
So, are rxvt terminals really supported by .NET 5/6? If so, what configurations should be done to make it work properly with Console.ReadKey?
Reproduction Steps
- Run
export TERM=rxvt - Start PowerShell 7.2.0 or 7.2.1
- Try using arrow keys to navigate the cursor position
Expected behavior
LeftArrow and RightArrow should move the cursor left and right;
LeftArrow and RightArrow should go through history commands.
Actual behavior
Arrow keys are not working as expected.
Home and End prints OH and OF respectively.
Regression?
Yes.
Known Workarounds
Setting TERM=xterm would make Console.ReadKey work as expected with rxvt terminals.
Configuration
No response
Other information
No response

