Private/Interactive/Test-TBArrowKeySupport.ps1
|
function Test-TBArrowKeySupport { <# .SYNOPSIS Checks if the current host supports arrow-key interactive menus. .DESCRIPTION Returns $true on PowerShell 7+ with an interactive console host that supports RawUI key reading. Returns $false on unsupported hosts such as ISE, CI runners, Pester test hosts, and non-interactive sessions. #> [CmdletBinding()] [OutputType([bool])] param() # Require PS 7+ if ($PSVersionTable.PSVersion.Major -lt 7) { return $false } # Non-interactive session if (-not [Environment]::UserInteractive) { return $false } # Check for ConsoleHost (excludes ISE, VS Code output pane, Pester hosts) if ($Host.Name -ne 'ConsoleHost') { return $false } # Verify RawUI is available and functional try { $null = $Host.UI.RawUI.KeyAvailable return $true } catch { return $false } } |