Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Позиция курсора в терминале  (Прочитано 8061 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн egorchik007

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Позиция курсора в терминале
« : 20 Февраля 2012, 23:41:43 »
Под виндой для сего есть windows.h, а именно SetConsoleCursorPosition.
Что есть в UNIXовом терминале, чтобы получить размеры окна консоли и устанавливать позицию курсора?
Пытался смотреть исходники nano - "ниасилил:  ;D
Заранее благодарю.

Пользователь решил продолжить мысль 20 Февраля 2012, 23:48:04:
глупо конечно, но так получилось, что я уже нашел. не ругайте :)
//--------------------------------Управление положением курсора--------->
 
    //    \033[#A передвинуть курсор вверх на # строк
    //    \033[#B передвинуть курсор вниз на # строк
    //    \033[#С передвинуть курсор вправо на # столбцов
    //    \033[#D передвинуть курсор влево на # столбцов
    //    \033[#E передвинуть курсор вниз на # строк и поставить в начало строки
    //    \033[#F передвинуть курсор вверх на # строк и поставить в начало строки
    //    \033[#G переместить курсор в указанный столбец текущей строки
    //    \033[#;#H задает абсолютные координаты курсора (строка, столбец)
    //    \033]2;BLA_BLA\007   Заголовок окна xterm...

Пользователь решил продолжить мысль 20 Февраля 2012, 23:54:29:
если что, это escape-последовательности, их можно просто вывести
« Последнее редактирование: 20 Февраля 2012, 23:54:29 от egorchik007 »

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Позиция курсора в терминале
« Ответ #1 : 21 Февраля 2012, 17:17:11 »
ncurses жирно будет, для изменения положения курсора вполне хватит termios.h.

Оффлайн egorchik007

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Re: Позиция курсора в терминале
« Ответ #2 : 23 Февраля 2012, 20:24:50 »
Под виндой для сего есть windows.h, а именно SetConsoleCursorPosition.
Что есть в UNIXовом терминале, чтобы получить размеры окна консоли и устанавливать позицию курсора?

1. пакет (проект) ncursers

2. управляющие esc-последовательности в bash

3. есть такой сигнал SIGWINCH, который посылается при изменении размера окна терминала:
http://ru.wikipedia.org/wiki/SIGWINCH

4. посмотрите: Инструменты Linux для Windows-программистов (там есть ссылка на полный текст) - там в конце, в главе "канонический-неканоничесний режим терминала" есть пример move.c прямого управления курсором... по аналогии можно разобраться.

P.S. а вот вам пример от У.Р.Стивенса использования сигнала SIGWINCH при изменениях окна терминала.

спасибо!
ncurses жирно будет, для изменения положения курсора вполне хватит termios.h.
можно подробнее? когда-то заимел реализацию getch () с помощью этой же библиотеки.

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Позиция курсора в терминале
« Ответ #3 : 24 Февраля 2012, 01:08:35 »
ncurses жирно будет, для изменения положения курсора вполне хватит termios.h.
можно подробнее? когда-то заимел реализацию getch () с помощью этой же библиотеки.

ncurses - давно развиваемый UNIX пакет (задолго до Linux), консольный, построения в текстовом режиме экранных форм, пример тому, чтоб долго не объяснять - mc, ещё всякие turbo* менюшные системы в разных ОС.
Широко используется (можете увидеть) в средствах конфигурировани перед сборкой пакетов, то, что делается:
$ make menuconfig
- например, в подсистеме драйверов-интерфейсов zaptel/DAHDI для телефонных станций IP-телефонии (Asterisk, FreeSWITCH).
Хорошо описан в книге Р.Стивенса (там вообще всё хорошо описано), вот в этой:
http://www.books.ru/books/unix-professionalnoe-programmirovanie-503720/?show=1


жирно будет - это сказано, я думаю, к тому, что ncurses слишком мощный пакет для той простой задачи, которая была поставлена.

« Последнее редактирование: 24 Февраля 2012, 01:10:16 от Olej »

Оффлайн egorchik007

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Re: Позиция курсора в терминале
« Ответ #4 : 03 Марта 2012, 01:31:12 »
думаю что да, чересчур жирно для этой задачи.
а за то, что нормально растолковали что такое ncurses - отдельное спасибо!

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Позиция курсора в терминале
« Ответ #5 : 03 Марта 2012, 04:26:16 »
а за то, что нормально растолковали что такое ncurses - отдельное спасибо!
вот ещё про ncurses, может кому интересно, недавно на глаза попало:
http://symmetrica.net/uploads/linapi/linapi11.pdf
http://symmetrica.net/uploads/linapi/linapi12.pdf
а). понятно и б). по-русски.

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Позиция курсора в терминале
« Ответ #6 : 06 Марта 2012, 00:28:41 »
Хорошо описан в книге Р.Стивенса (там вообще всё хорошо описано), вот в этой:
http://www.books.ru/books/unix-professionalnoe-programmirovanie-503720/?show=1


Если вы собираетесь хоть что-то минимально программировать в UNIX/Linux - эту книгу Стивенса советую всем поспешить и скачать. Её одной достаточно иметь в качестве справочника примеров по POSIX, чтобы не пользоваться вообще больше никакой общей литературой (кроме специальных частных вопросов).
 
Дописал я это по случаю, т.к. мне понадобилось обновить этот файл, и попались URL, напр.:
http://www.bookslit.com/programmirovanie/4142-541789.html
Цитировать
Страниц: 1040
Год издания: 2007
Язык текста: русский
Формат/Размер: DOC/7.28 Мб
Да и вообще, она уже представлена массово...
Скачивайте пока есть ;)




 

Страница сгенерирована за 0.058 секунд. Запросов: 25.