我想創建一個PowerShell會話中輸入的任何開括號的匹配的結束括號的ConsoleKeyInfo
實例(我使用PSReadline做重點處理)。爲了您的方便,這裏有所有鍵的屬性涉及如何知道只有ConsoleKey枚舉和修飾符的按鍵字符?
PS> while($true){ [System.Console]::ReadKey($true) }
KeyChar Key Modifiers
------- --- ---------
[ Oem4 0
] Oem6 0
{ Oem4 Shift
} Oem6 Shift
在按鍵處理程序,我給出的ConsoleKeyInfo
的按下(和PSReadline不過濾的「弦」,所以我已經知道我只接收Oem4
或Shift+Oem4
)。我想生成匹配的ConsoleKeyInfo
,這樣我就可以將打印對發送到控制檯。
- 一個
char
- 一個
System.ConsoleKey
- 每一個
bool
的Shift鍵,Alt和控制
我可以通過它轉換成一得到正確的ConsoleKey
int
並向上移動兩個...
PS> [System.ConsoleKey]([int]$key.Key + 2)
Oem6
我可以從被按下的按鍵的Modifiers
通過測試它按位地圖...
PS> ($key.Modifiers -band [System.ConsoleModifiers]::Shift) -ne 0
False
但是,我不知道如何得到這個控制檯鍵值的文本char
。控制檯如何從鍵盤鍵獲取字符?這隻能用現場控制檯/鍵盤完成嗎?
我寧願不保持地圖的密鑰對,也不拆分處理,每一個「和絃」,並進行硬編碼匹配的關鍵字符。 :(
看我的例子爲「InsertPairedBraces」這裏https://github.com /lzybkr/PSReadLine/blob/master/PSReadLine/SamplePSReadlineProfile.ps1 –