getCursorPosition static method

CursorPosition getCursorPosition()

Implementation

static CursorPosition getCursorPosition() {
  var lm = _adapter.lineMode;
  var em = _adapter.echoMode;

  _adapter.lineMode = false;
  _adapter.echoMode = false;

  writeANSI('6n');
  var bytes = <int>[];

  while (true) {
    var byte = _adapter.readByte();
    bytes.add(byte);
    if (byte == 82) {
      break;
    }
  }

  _adapter.lineMode = lm;
  _adapter.echoMode = em;

  var str = String.fromCharCodes(bytes);
  str = str.substring(str.lastIndexOf('[') + 1, str.length - 1);

  final parts =
      List<int>.from(str.split(';').map((it) => int.parse(it))).toList();

  return CursorPosition(parts[1], parts[0]);
}