get_cursor_position method

DCCursorPosition get_cursor_position()

Implementation

DCCursorPosition get_cursor_position() {
  final lm = raw_console.line_mode;
  final em = raw_console.echo_mode;
  raw_console.line_mode = false;
  raw_console.echo_mode = false;
  write_ansi('6n');
  final bytes = <int>[];
  for (;;) {
    final byte = raw_console.read_byte();
    bytes.add(byte);
    if (byte == 82) {
      break;
    }
  }
  raw_console.line_mode = lm;
  raw_console.echo_mode = em;
  String str = String.fromCharCodes(bytes);
  str = str.substring(
    str.lastIndexOf("[") + 1,
    str.length - 1,
  );
  final parts = List<int>.from(
    str.split(';').map<int>(
          (final it) => int.parse(it),
        ),
  ).toList();
  return DCCursorPosition(
    parts[1],
    parts[0],
  );
}