psmux 3.3.4

Terminal multiplexer for Windows - tmux alternative for PowerShell and Windows Terminal
#!/usr/bin/env pwsh
# Test: Does ConPTY pass through mouse tracking sequences?
# Run this inside psmux to verify the VT mouse path.

Write-Host "=== ConPTY Mouse Diagnostic Test ===" -ForegroundColor Cyan
Write-Host ""

# Test 1: Check if DECSET 1000 arrives in the output
Write-Host "Test 1: Sending DECSET 1000 (enable mouse tracking) to console..."
Write-Host "If psmux's vt100 parser sees this, mouse_protocol_mode should become non-None."
# Send DECSET 1000h (enable mouse tracking - press/release)
[System.Console]::Write("`e[?1000h")
Start-Sleep -Milliseconds 500

# Test 2: Also enable SGR 1006 encoding
Write-Host "Test 2: Sending DECSET 1006 (SGR mouse encoding)..."
[System.Console]::Write("`e[?1006h")
Start-Sleep -Milliseconds 500

Write-Host ""
Write-Host "If you see this text, DECSET sequences were sent." -ForegroundColor Green
Write-Host "Check psmux list-panes output to see if mouse protocol mode changed." -ForegroundColor Yellow
Write-Host ""
Write-Host "Now testing: click anywhere in this pane with the mouse."
Write-Host "If mouse tracking works, you should see escape sequences printed below."
Write-Host "Press Ctrl+C to exit."
Write-Host ""

# Read raw console input to see if mouse events arrive
try {
    $origMode = [System.Console]::TreatControlCAsInput
    [System.Console]::TreatControlCAsInput = $true
    
    while ($true) {
        if ([System.Console]::KeyAvailable) {
            $key = [System.Console]::ReadKey($true)
            $char = $key.KeyChar
            $code = [int]$char
            if ($code -eq 3) { break }  # Ctrl+C
            if ($code -eq 27) {
                # Escape sequence - read more
                $seq = "`e"
                Start-Sleep -Milliseconds 50
                while ([System.Console]::KeyAvailable) {
                    $next = [System.Console]::ReadKey($true)
                    $seq += $next.KeyChar
                }
                $escaped = $seq -replace "`e", "ESC"
                Write-Host "Got escape sequence: $escaped (length=$($seq.Length))" -ForegroundColor Magenta
            } else {
                Write-Host "Got key: '$char' (code=$code)" -ForegroundColor Gray
            }
        }
        Start-Sleep -Milliseconds 10
    }
} finally {
    [System.Console]::TreatControlCAsInput = $origMode
    # Disable mouse tracking
    [System.Console]::Write("`e[?1000l")
    [System.Console]::Write("`e[?1006l")
    Write-Host ""
    Write-Host "Mouse tracking disabled. Test complete." -ForegroundColor Cyan
}