Разобрать terminfo u6 string

dpkg для Arch существует. Необходимо смочь установить .deb пакеты на дуге, но Вы не должны также использовать его вместо pacman, поэтому просто используйте его для выбранных немногих пакетов.

Команда по умолчанию похожа:

# dpkg -i package.deb

6
24.12.2017, 18:55
2 ответа

Ахха.

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

Ответ будет [Y;XR как Y=строка и X=колонка.

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

Example:

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

Send u7.

  • Ответ, например: \E[48;13R.
  • Результат:
    • Y = 48 - 1 = 47
    • X = 13 - 1 = 12.
2
27.01.2020, 20:27

Отсутствие маркера % p является причудой ncurses: компилятор terminfo ( tic ) распознает либо terminfo (который использует % p1 до mark parameters) или termcap (который полагается на соглашение для параметров). Это было бы допустимое выражение termcap . Поскольку tic знает, как обрабатывать выражение termcap, показанная строка является «достаточно близкой», чтобы не было необходимости переводить ее дальше.

Вы можете увидеть, что делает ncurses, используя tput , например,

tput u6 40 50

дает (обратите внимание на изменение параметров)

^[[51;41R

Если бы выражение было задано как

u6=\E[%i%p2%d;%p1%dR

, результат был бы тот же.

Возможности 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).

Проверка последнего комментария, tack упражнения 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 строках встречается 16 ] terminfo.src ), известных пользователей этой функции нет. Фактически, есть одно место в ncurses, где он мог быть написан для его использования (некоторый отладочный код ifdef в файле tty_update.c ), но для этого используется жестко - закодированные escape-последовательности (помеченные как «ANSI-совместимые»).

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

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

В ECMA-48 , это (u7) DSR (отчет о состоянии устройства) и (u6) CPR (отчет об активном положении).

5
27.01.2020, 20:27

Теги

Похожие вопросы