Как прочитать значение Esc[#;#R программно?

Рейтинг: 0Ответов: 1Опубликовано: 10.04.2011

На консоли Linux широко используются команды, записываемые в виде Esc-последовательностей. Подать подобную команду из консольного приложения очень просто, достаточно написать что-то вроде print(screen,"E[6n") и команда "Выдать текущее положение курсора" поступит именно туда, куда надо, а консоль тут же ответит, выведя на экран сообщение - ^[[20;30R - которое начинается как раз в текущей позиции курсора и означает "строка 20, колонка 30".

Но мне нужно перехватить этот доклад консоли так, чтобы на экран он не попал, а осел в какой-либо переменной в моём консольном приложении, чтобы использовать эти данные для организации дальнейшего вывода текста в окне консоли.

Проблема возникла потому, что, если выводить на консоль русский текст в кодировке utf-8, обычные функции вроде get_cursor_position() на двухбайтовой кодировке сбиваются и выводят неверное значение позиции курсора, а Esc-команда выдаёт именно то, что мне надо.

Спасибо!

Ответы

Ответов пока нет.