supportsCursorResponse method

Future<bool> supportsCursorResponse({
  1. Duration timeout = const Duration(milliseconds: 200),
})

Checks asynchronously if the terminal supports cursor position reporting, with a configurable timeout.

Sends a cursor position request and completes with true if a response is received within timeout, else completes false.

Implementation

Future<bool> supportsCursorResponse({
  Duration timeout = const Duration(milliseconds: 200),
}) {
  final completer = Completer<bool>();
  getCursorPosition((x, y) {
    if (!completer.isCompleted) {
      completer.complete(true);
    }
  });

  Future.delayed(timeout, () {
    if (!completer.isCompleted) {
      _expectingCursorResponse = false;
      _cursorInputBuffer.clear();
      completer.complete(false);
    }
  });

  return completer.future;
}