poco_key.ps1
function New-PocoKeymaps { @{ 'Escape' = 'Cancel' 'Control+C' = 'Cancel' 'Enter' = 'Finish' 'Alt+B' = 'BackwardChar' 'Alt+F' = 'ForwardChar' 'Alt+A' = 'BeginningOfLine' 'Alt+E' = 'EndOfLine' 'Alt+D8' = 'DeleteBackwardChar' 'Backspace' = 'DeleteBackwardChar' 'Alt+D' = 'DeleteForwardChar' 'Delete' = 'DeleteForwardChar' 'Alt+U' = 'KillBeginningOfLine' 'Alt+K' = 'KillEndOfLine' 'Alt+R' = 'RotateMatcher' 'Alt+C' = 'ToggleCaseSensitive' 'Alt+I' = 'ToggleInvertFilter' 'Alt+W' = 'DeleteBackwardWord' 'Alt+N' = 'SelectUp' 'Alt+P' = 'SelectDown' 'Control+Spacebar' = 'ToggleSelectionAndSelectNext' 'UpArrow' = 'SelectUp' 'DownArrow' = 'SelectDown' 'RightArrow' = 'ScrollPageUp' 'LeftArrow' = 'ScrollPageDown' 'Tab' = 'TabExpansion' } } function Get-PocoKey { $flag = [console]::TreatControlCAsInput [console]::TreatControlCAsInput = $true $Key = [console]::ReadKey($true) [console]::TreatControlCAsInput = $flag $KeyString = $Key.Key.ToString() if ($Key.Modifiers -ne 0) { $m = $Key.Modifiers.ToString() -replace ', ','+' $KeyString = "${m}+${KeyString}" } return $Key, $KeyString } function Get-Action ($config, $keystr) { if ($config.Keymaps.Contains($keystr)) { return $config.Keymaps[$keystr] } if ($keystr -notmatch 'Alt|Control') { 'AddChar' } } |