start method
Starts the probe.
Implementations can write escape sequences here, then complete later via handleMsg events (UV events, etc).
Implementation
@override
Future<void> start(StartupProbeContext ctx) async {
if (_active) return;
if (!ctx.terminal.supportsAnsi || !ctx.terminal.isTerminal) return;
_active = true;
_done = Completer<void>();
_sawSecondaryAttributes = false;
_sawKeyboardEnhancements = false;
final term = ctx.terminal;
term.write(Ansi.requestSecondaryDeviceAttributes);
term.write(Ansi.requestKittyKeyboard);
await term.flush();
try {
await _done.future.timeout(timeout);
} on TimeoutException {
// Best-effort only: keep startup moving when the terminal does not
// answer some or all capability queries.
} finally {
_active = false;
}
}