Команда dscreen позволяет подключить один физический терминал одновременно к нескольким виртуальным сеансам (экранам). В основном эта утилита предназначена для терминалов с памятью на две и более страниц (например, IBM 3151 модель 310 и 410 с дополнительной кассетой). Для таких терминалов переключение между виртуальными окнами означает переключение между страницами окна физического терминала, что позволяет сохранить, а затем восстановить содержимое каждого виртуального окна. Если терминал не поддерживает память на несколько страниц, то команда dscreen также применяется для переключения между виртуальными окнами, хотя при этом состояние содержимого окна не сохраняется.
Примечание: Для полной поддержки утилиты dscreen в терминале должна быть предусмотрена функция переключения между внутренними страницами окна и запоминания позиции курсора на каждой странице. Команда dscreen может применяться как для программируемых, так и для непрограммируемых терминалов. Однако на непрограммируемых терминалах не поддерживается сохранение состояния содержимого окна при переключении с одного окна на другое.
В файле конфигурации терминала dscreen (или dsinfo) определяются различные комбинации клавиш, применяемые при работе с программой dscreen. Например, это необходимо, если стандартные клавиши, определенные для команды dscreen, конфликтуют с управляющими клавишами работающего приложения.
Предполагается, что типы терминалов, задаваемые в файле dsinfo, поддерживают только одностраничную память. Если терминал поддерживает многостраничную память, то в файле dsinfo нужно указать функциональные клавиши для управления страничной памятью. Информацию о конкретных управляющих последовательностях вы можете найти в руководстве по работе с терминалом.
По умолчанию в качестве файла dsinfo применяется файл /usr/lbin/tty/dsinfo. Для того чтобы задать другой файл dsinfo, укажите флаг -i. Далее в этом разделе будет описываться работа с файлом по умолчанию. Однако вся приведенная ниже информация также относится и к любому другому файлу dsinfo.
Дополнительная информация о файле dsinfo приведена в разделе "Присвоение динамических экранов" .
При запуске команды
dscreen появляется виртуальное окно. При нажатии некоторых
клавиш клавиатуры сигнал не передается виртуальному окну, а перехватывается
программой dscreen, которая выполняет некоторые действия.
Вот несколько примеров этих действий:
Выбрать | Выбирает указанный экран. |
Блокировать | Блокирует ввод и вывод. |
Создать | Открывает новое окно. |
Завершить | Завершает работу dscreen. |
Выход | Закрывает окно dscreen. |
Предыдущий | Переходит к предыдущему окну. |
Список | Показывает список функциональных клавиш dscreen и выполняемых ими действий. |
Функция каждой клавиши зависит от терминала и описания терминала в файле /usr/lbin/tty/dsinfo.
При создании нового виртуального окна ему присваивается клавиша выбора. При нажатии клавиши выбора выполняются следующие действия:
Допустимое число виртуальных окон ограничено числом клавиш выбора, определенных в файле dsinfo. Сеанс для каждого окна завершается одновременно с завершением работы процесса исходной оболочки. При этом связанная с окном клавиша выбора освобождается и может быть присвоена другому виртуальному окну. Работа утилиты dscreen завершается, если нет ни одного активного окна.
Клавиши блокировки применяются для приостановки вывода, их действие аналогично действию клавиш Ctrl-S управления потоком IXON. Эти клавиши предназначены для прозрачной настройки сеансов терминалов двух компьютеров, взаимодействующих с помощью терминала с двумя последовательными портами.
При нажатии клавиши нового окна создается новое логическое окно, которому присваивается одна из клавиш выбора. Для каждого нового окна требуется:
Если какой-либо из перечисленных выше ресурсов недоступен, то новое окно создано не будет, и будет отправлено сообщение с указанием причины ошибки.
При нажатии клавиши завершения будут выполнены следующие действия:
При нажатии клавиши выхода будут выполнены те же действия, но код возврата будет равен 1.
Клавиша предыдущего окна предназначена для перехода к окну, которое просматривалось последним.
Примечания:
- Во время вывода информации в текущее окно переключаться между окнами нельзя; escape-последовательность может быть усечена, что приведет к переходу терминала в неопределенное состояние.
- Некоторые терминалы сохраняют положение курсора в отдельных окнах, но не сохраняют другие параметры состояния окна, например, режим вставки, инверсного изображения, и т.д. Использовать такие режимы при переключении окон не рекомендуется.
Клавиша списка предназначена для просмотра списка функциональных клавиш терминала и связанных с ними действий. В списке будут показаны только те клавиши, которые распознаются программой dscreen. При создании каждого нового экрана командой dscreen появляется сообщение Нажмите клавишу для получения справки, где вместо слова клавиша стоит имя клавиши списка. Обратите внимание, что это сообщение появляется только в том случае, если клавиша списка определена.
Число клавиш выбора окна, задаваемое в записи определения терминала в файле /usr/lbin/tty/dsinfo, соответствует числу страниц терминала. Если будет задано большее число клавиш выбора, то программа dscreen будет динамически выделять виртуальным окнам страницы физического окна.
При выборе виртуального окна, с которым не связана никакая страница физического окна, dscreen выделяет виртуальному окну страницу, которая использовалась позже всех. В зависимости от спецификаций, указанных в файле описания /usr/lbin/tty/dsinfo, при подключении физического окна к другому виртуальному окну могут выполняться некоторые действия, например, очистка экрана.
Файл dsinfo представляет собой базу данных описаний терминалов, используемую утилитой dscreen. В файле содержится следующая информация:
Записи типов терминалов в файле по умолчанию dsinfo аналогичны следующим записям для терминала ASCII 3151:
# Для данной записи необходима кассета расширения (pn: 64F9314) ibm3151|3151|IBM 3151, dsks=\E!a^M|Shift-F1|, # Выбор первого окна dsks=\E!b^M|Shift-F2|, # Выбор второго окна dsks=\E!c^M|Shift-F3|, # Выбор третьего окна dsks=\E!d^M|Shift-F4|, # Выбор четвертого окна dskc=\E!e^M|Shift-F5|, # Создание нового окна dske=\E!f^M|Shift-F6|\E pA\EH\EJ, # Переход к окну 1 и завершение работы dskl=\E!g^M|Shift-F7|, # Просмотр списка функциональных клавиш (справка) dskp=\E!h^M|Shift-F8|, # Переход к предыдущему окну dskq=\E!i^M|Shift-F9|\E pA\EH\EJ, # Переход к окну 1 и выход из программы dsp=\E pA|\EH\EJ, # Терминальная последовательность для окна 1 dsp=\E pB|\EH\EJ, # Терминальная последовательность для окна 2 dsp=\E pC|\EH\EJ, # Терминальная последовательность для окна 3 dsp=\E pD|\EH\EJ, # Терминальная последовательность для окна 4 dst=10, # Разрешить буферизацию в течение 1-секундного тайм-аута
Записи файла dsinfo
состоят из полей, отделенных друг от друга запятыми. В первом поле
задается список альтернативных имен терминала, которые отделяются друг от
друга символом конвейера ( | ). Любой текст, указанный после символа
фунта (#), рассматривается как комментарий и игнорируется программой
dscreen. Остальные поля представляют собой строки,
описывающие возможности терминала утилиты dscreen. В этих
строках могут быть указаны следующие escape-последовательности:
Escape-последовательность | Описание |
\E,\e | escape-символ |
\n,\l | символ перехода на новою строку (или переноса строки) |
\r | возврат каретки |
\t | символ табуляции |
\b | символ возврата |
\f | символ перевода страницы |
\s | символ пробела |
\nnn | символ с восьмеричным значением nnn |
^x | Ctrl-x для любого допустимого символа x |
Все остальные символы, перед которыми указана обратная косая черта, будут интерпретироваться как сами символы. Строки описания задаются в формате тип=строка, где тип - один из перечисленных ниже типов строк, а строка - строковое значение.
Поля записей в файле dsinfo обязательно должны отделяться друг от друга запятыми. Если запятая пропущена или отброшена в конце записи файла dsinfo, то этот файл становится нечитаемым для утилиты dscreen, а на экране появляется сообщение об ошибке.
Существуют следующие типы
строк:
Ниже приведен пример записи файла /usr/lbin/tty/dsinfo для терминала Wyse-60 с тремя оконными сеансами:
wy60|wyse60|wyse model 60, dsks=^A`^M|Shift-F1|, dsks=^Aa^M|Shift-F2|, dsks=^Ab^M|Shift-F3|, dskc=\200|Ctrl-F1|, dske=\201|Ctrl-F2|\Ew0\E+, dskl=\202|Ctrl-F3|, dsp=\Ew0|\E+, dsp=\Ew1|\E+, dsp=\Ew2|\E+,
В этой записи задана следующая конфигурация:
Каждый раз, когда с новым окном связывается определенное физическое окно, терминалу отправляется последовательность Esc +, в результате чего экран очищается.
Это пример для Wyse-60 с тремя оконными сеансами, но одно из окон расположено на втором компьютере, который обменивается данными с терминалом через второй последовательный порт:
wy60-1|wyse60-1|wyse model 60 - первый последовательный порт dsks=^A`^M|Shift-F1|, dsks=^Aa^M|Shift-F2|, dsks=^Ab^M|Shift-F3|\Ed#^Ab\r^T\Ee9, dskc=\200|Ctrl-F1|, dske=\201|Ctrl-F2|\Ed#\201^T\Ew0\E+, dskl=\202|Ctrl-F3|, dsp=\Ew0|\E+,dsp=\Ew1|\E+, wy60-2|wyse60-2|wyse model 60 - второй последовательный порт dsks=^A`^M|Shift-F1|\Ed#^A`\r^T\Ee8, dsks=^Aa^M|Shift-F2|\Ed#^Aa\r^T\Ee8, dsks=^Ab^M|Shift-F3|, dskc=\200|Ctrl-F1|, dske=\201|Ctrl-F2|\Ed#\201^T\Ew0\E+, dskl=\202|Ctrl-F3|, dsp=\Ew2|\E+,
Программа dscreen должна быть запущена на обоих компьютерах, причем на первом в качестве типа терминала должно быть указано значение wy60-1, а на втором - значение wy60-2 (с помощью опции -t команды dscreen). Первой будет просматриваться запись wy60-1.
Первые два описания функциональных клавиш не отличаются от исходной записи wy60. Однако для третьей клавиши задан тип dskb, то есть это клавиша блокировки ввода и вывода. При нажатии этой клавиши на терминал будет отправлена последовательность:
Esc d # Ctrl-A b CR Ctrl-T Esc e 9
После этого весь вывод блокируется, а программа dscreen просматривает ввод, выполняя поиск последовательности символов, соответствующей функциональной клавише. Все остальные данные игнорируются.
Последовательность Esc d # переводит терминал в режим прямой печати, в котором все символы передаются через второй последовательный порт, пока не встретится последовательность Ctrl-T.
Через второй последовательный порт отправляется последовательность символов Ctrl-A b CR, получив которую, процесс dscreen на втором компьютере активизирует окно, связанное с клавишей Shift-F3.
Клавиши Ctrl-T предназначены для отмены режима прямой печати. Клавиши Esc 9 предназначены для изменения последовательного порта AIX, через который терминал обменивается данными.
После того как второй компьютер получает такую последовательность символов, он отправляет последовательность Esc w 2 для перехода к третьему физическому окну, а затем возобновляет обычную работу.
В записи wy60-2 для клавиш Shift-F1 и Shift-F2 установлена следующая последовательность действий:
Клавиша завершения работы, Ctrl-F2, выполняет одинаковые действия на обоих компьютерах: с помощью механизма прямой печати отправляет на другой компьютер последовательность символов, соответствующих клавише завершения, активизирует окно 0, очищает экран, а затем завершает работу программы.