我想要创建一个
在键处理程序中,我会收到按下的“和弦”的
但是,我不知道如何获取此控制台键的文字
ConsoleKeyInfo
实例,以匹配 PowerShell 会话中键入的任何开放大括号的相应闭合大括号(我正在使用 PSReadline 进行键处理)。为了方便起见,这里列出了所有涉及到的按键属性。PS> while($true){ [System.Console]::ReadKey($true) }
KeyChar Key Modifiers
------- --- ---------
[ Oem4 0
] Oem6 0
{ Oem4 Shift
} Oem6 Shift
在键处理程序中,我会收到按下的“和弦”的
ConsoleKeyInfo
(并且PSReadline进行过滤,因此我已经知道我只接收到Oem4
或Shift+Oem4
)。我想生成匹配的ConsoleKeyInfo
,以便将成对打印发送到控制台。
ConsoleKeyInfo
构造函数需要以下参数:
- 一个
char
- 一个
System.ConsoleKey
- 每个Shift、Alt和Control的
bool
值
int
并向上移动两个来获取正确的ConsoleKey
...PS> [System.ConsoleKey]([int]$key.Key + 2)
Oem6
我可以通过按下的键的Modifiers
进行位测试来进行映射...
PS> ($key.Modifiers -band [System.ConsoleModifiers]::Shift) -ne 0
False
但是,我不知道如何获取此控制台键的文字
char
。控制台如何从键盘键获取字符?这只能使用实时控制台/键盘完成吗? 我不想维护键对映射表,也不想拆分处理程序,每个“和弦”都要硬编码匹配键字符。:(