Параметр terminfo u6

Глядя на terminfo и параметризованные строки .

Некоторые примеры из infocmp -1 xterm :

  • cud=\E[%p1%dB , данный аргумент 13 :

    • \E => <ESC>
    • [ => [
    • %p1 PUSH параметр 1 (13) на стек
    • %d POP и печать из стека как подписанная десятичная => 13
      • Результат: <ESC>[13B
  • csr=\E[%i%p1%d;%p2%dr , данные аргументы 13, 16 :

    • \E => <ESC>
    • [ => [
    • %i Приращение параметра 1 и 2: ++ 13, ++ 16 дает 14, 17
    • %p1 PUSH параметр 1 (14) на стек.
    • %d POP и печать из стека в виде десятичного знака. => 14
    • ; => ;
    • %p2 PUSH параметр 2 (17) на стек.
    • %d POP и печать из стека в виде десятичного знака. => 17
    • r => r
      • Результат: <ESC>14;17r

Но … как читать этот?

  • u6=\E[%i%d;%dR

После обработки \E[%i мы имеем <ESC>[ и увеличиваем параметры 1 и 2 (если они есть)). Но стек пуст. Должны ли два %d поп и печатать два номера из стека?

  • OpenBSD 5.6 / fvwm2 / xterm отсутствует поддержка UTF-8
  • Запустить xterm с помощью оболочки входа или нет?
  • .Xresources именование имен и подстановочные знаки
  • После обновления кнопка X в заголовке больше не закрывает xterm
  • Вкладка в xterm под KDE всегда вызывает диалог инструмента доступности
  • Xterm: работа с несколькими вкладками
  • keybinding в xterm, чтобы сдвинуть одну строку вверх, используя shift + up
  • Открытие доступного xterm-окна через скрипт bash
  • 2 Solutions collect form web for “Параметр terminfo u6”

    Возможности u6-u9 – это раннее расширение, задокументированное в базе данных терминалов ncurses:

     # INTERPRETATION OF USER CAPABILITIES # # The System V Release 4 and XPG4 terminfo format defines ten string # capabilities for use by applications, <u0>...<u9>. In this file, we use # certain of these capabilities to describe functions which are not covered # by terminfo. The mapping is as follows: # # u9 terminal enquire string (equiv. to ANSI/ECMA-48 DA) # u8 terminal answerback description # u7 cursor position request (equiv. to VT100/ANSI/ECMA-48 DSR 6) # u6 cursor position report (equiv. to ANSI/ECMA-48 CPR) # # The terminal enquire string <u9> should elicit an answerback response # from the terminal. Common values for <u9> will be ^E (on older ASCII # terminals) or \E[c (on newer VT100/ANSI/ECMA-48-compatible terminals). # # The cursor position request (<u7>) string should elicit a cursor position # report. A typical value (for VT100 terminals) is \E[6n. # # The terminal answerback description (u8) must consist of an expected # answerback string. The string may contain the following scanf(3)-like # escapes: # # %c Accept any character # %[...] Accept any number of characters in the given set # # The cursor position report (<u6>) string must contain two scanf(3)-style # %d format elements. The first of these must correspond to the Y coordinate # and the second to the %d. If the string contains the sequence %i, it is # taken as an instruction to decrement each value after reading it (this is # the inverse sense from the cup string). The typical CPR value is # \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals). # # These capabilities are used by tack(1m), the terminfo action checker # (distributed with ncurses 5.0). 

    Проверяя этот последний комментарий, u8 упражнения u8 и u9 но ничего не делает с u6 и u7 .

    Расширение было добавлено в начале 1995 года :

     # 9.3.4 (Wed Feb 22 19:27:34 EST 1995): # * Added correct acsc/smacs/rmacs strings for vt100 and xterm. # * Added u6/u7/u8/u9 capabilities. # * Added PCVT entry. 

    и хотя он включен в несколько записей для полноты (не так много: в 18 699 строк terminfo.src имеется 16 вхождений), нет известных пользователей этой функции. Фактически, есть одно место в ncurses, где его можно было записать для его использования (некоторый код отладки tty_update.c файле tty_update.c ), но он использует жестко кодированные escape-последовательности (помеченные как «ANSI-совместимые»).

    Причиной отсутствия пользователей было бы:

    • инвертирование произвольного выражения terminfo сложнее, чем может показаться
    • xterm и аналогичные терминалы интерпретируют эти управляющие последовательности

    В ECMA-48 это (u7) DSR (отчет о состоянии устройства) и (u6) CPR (отчет о активной позиции).

    Ahha.

    Это специальная запись в базе данных. Он дает формат ответа u7 .

    Ответ: <ESC>[Y;XR как в Y = строка и X = столбец.

    Если u6 имеет %i , следует уменьшить принятые значения.

    Пример:

    • u6=\E[%i%d;%dR
    • u7=\E[6n

    Отправить u7 .

    • Например, ответ: \E[48;13R .
    • Результат:
      • Y = 48 - 1 = 47
      • X = 13 - 1 = 12 .
    Linux и Unix - лучшая ОС в мире.