问题标签 [terminfo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
187 浏览

ncurses - 编译/安装后更改 ncurses 6“terminfo-dirs”

有一个 ncurses6 最初安装在用户主目录中,比如说“/home/test”,所以在这个 ncurses 路径上构建了一个测试环境,很多(开发中的)应用程序已经编译并且现在正在运行,仅取决于当前的 HOME 环境变量。

但是,由于我们无法控制的目的,我们必须更改用户主目录。现在它与“/home/test”不同了。

外部应用程序和 ncurses 工具仍在工作,我们只需使用 LD_LIBRARY_PATH 指向库,并使用我们之前用于 ncurses 工具的更具体的路径:

但是现在,在更改用户主目录后,我们还需要指向 terminfo 数据库:

但是,有没有办法使 TERMINFO 数据库路径永久化,而无需重新编译和重新安装 ncurses ?ncurses 在编译期间是硬代码吗?

0 投票
3 回答
892 浏览

sbt - macOS Sierra 10.12.3 上 TERM=Apple_Terminal 的奇怪问题

我将我的 MacBookPro 升级到 macOS Sierra 并遇到了一个非常奇怪的行为。

首先,我使用 brew 按照文档中的建议安装 sbt: http ://www.scala-sbt.org/download.html

这是一个简单的测试:

在查看堆栈跟踪时,我了解到 sbt 使用 jline 使用“infocmp”进程查询终端的功能。

在这种情况下,它显示:

实际上,“acsc”行与 jline 尝试解析为数字的内容相匹配。

切换终端工作:

我还注意到 sbt 1.0.0-M4 似乎不受这种终端差异的影响:

与 TERM=xterm-256color 的行为相同。

我对此感到困惑。

有没有人遇到过这个问题?

0 投票
1 回答
1480 浏览

c - 如何使用 terminfo 在终端中设置颜色

我正在尝试使用 terminfo 数据库打印颜色,并已成功解析每个终端存在的终端数据库文件。就我而言,我有绝对支持颜色的 gnome 终端。

现在 terminfo 数据库中有几个命令,例如 -

因为我想设置前景色,所以我选择set_a_foreground了它与 ANSI seq 兼容。但我仍然不知道如何用它们中的任何一个实际打印颜色。

他们俩都说了这样的话 -Set foreground color #1在他们的描述中,他们的实际字符串在我的终端上看起来像这样 - ESC[3%p1%dm

所以我的问题是,我应该使用哪个版本set_a_set_版本以及如何使用它们打印任何颜色。

0 投票
1 回答
435 浏览

python - 如何使输出适应不断变化的终端宽度

我正在尝试编写一个在 Python 控制台中运行时会生成一个简单小部件的函数。这个小部件应该是终端大小感知的。显示小部件后,我将等待用户的键盘输入并根据类型调整内容。我现在遇到的困难是如何在用户调整终端大小时使该小部件调整其显示。这是我现在拥有的代码的简化版本:

如果用户扩展终端,或者如果他缩小终端但非常缓慢(一次 1 个字符),这可以正常工作。但是,快速减小终端宽度会导致长线换行,从而破坏输出。有没有办法解决这个问题?

0 投票
1 回答
216 浏览

c++ - 我可以在没有 tputs 或 putp 的情况下使用 tparm()

我的理解是,该函数char *tparm(char *str, ...);只是将给定的字符串转换str为扩展的参数化版本,该版本可以很好地与 stdout 输出函数(如printfor )一起使用cout。但是手册页提到 -

参数化的字符串应该通过 tparm 来实例化它们。所有 terminfo 字符串 [包括 tparm 的输出] 都应使用 tputs 或 putp 打印。

那么我可以解析 terminfo 条目并tparm()在它们上使用传递适当的参数并使用 stdout 输出函数输出它们吗?此外,我正在检查非 tty 输出并忽略这些方法,所以我得到了这个基础。

0 投票
1 回答
68 浏览

tty - terminfo 操作代码中的@(at 符号)是什么意思?

我正在尝试将 terminfo 字符串从 xterm 转换为可与 iTerm2 一起使用的字符串,以便在 emacs 中使用 24 位颜色。到目前为止,我所做的调查和研究使我相信我用来设置 stf24/setb24 的 terminfo 操作代码被 iTerm2 错误地解释了,所以我想了解它们在做什么。

以下是 emacs 需要的自定义值:

我知道第一位例如\e[48:2:是指定颜色位置(在本例中为背景)和颜色格式(2 表示需要 3 个控制段的完整 24 位 RGB 格式)的转义码。查看此文档“支持的 TERMINFO 操作代码”,我知道它从堆栈中获取参数“1” %p1,并对此 () 执行一些其他操作,%/ - division, %& - AND但我不确定%@括号中的数字是什么意思或什么mean %@{65536},以及%dm最后的作用。有人可以帮忙吗?

总的来说,我相信 emacs 只传递了一个参数(大概是 256^3 0-16,777,216 内的一个数字),所以我认为这在某种程度上将它分解为终端需要的 3 种组成 RGB 颜色,但我还没有完全找出如何,然后是否存在不兼容以及它在哪里。

0 投票
1 回答
56 浏览

terminal - terminfo 参数化字符串中的 if else 表达式

我正在 C++ 中为参数化字符串实现解析器(用于为终端指定一些终端功能)。然后我在 terminfo 的手册页上遇到了这个:

所以,我的问题是:
正如手册页所说,expr字符串中的部分通常可以将值压入堆栈,那么在该部分中还可以做哪些其他事情expr,即在expr部分可以进行哪些其他操作除了将值压入堆栈?

0 投票
1 回答
656 浏览

windows-console - 使用 read(stdin) 进行输入的 Windows 控制台的 terminfo

我正在编写一个应用程序,它通过自定义套接字从 Windows 控制台连接到 Linux 机器,我需要通过TERM环境变量告诉 Linux 机器我的控制台能够做什么。现在我设置TERM=dumb了,但它太有限了。特别是我需要Linux方面知道:

  1. 我正在使用标准输入从标准输入读取输入,因此没有传递 ESC、F1 和箭头(但 TAB 是)
  2. Windows 控制台具有自动换行功能
  3. 无法处理 ANSI 颜色序列
  4. 它能够处理回车以绘制进度条

terminfo这种 Windows 控制台的数据库中是否有一个好的配置文件?当我的应用程序最终能够识别 ANSI 颜色时,是否可以使用扩展配置文件?

更新:有人投票将其关闭为too broad,所以我编辑了这个问题,以非常具体地说明应该在terminfo条目中反映的 Windows 控制台的功能。

0 投票
3 回答
332 浏览

terminfo - 匹配 `terminfo` 功能

有没有办法将终端/控制台功能与 terminfo 数据库中的条目相匹配?

例如,查找与 Windows 控制台或其他类型的非传统终端最接近的匹配项。

没有在线服务,所以我希望问题不是微不足道的,知道原因很有趣。

更新:Terminfo 数据库为已知的终端类型或名称提供了一组功能。我正在尝试执行相反的任务 - 将未知终端的功能与现有的 terminfo 条目匹配。

UPDATE2:它应该如何工作......

  1. 我从一长串列表中选择我的终端功能
  2. Matcher 找到的配置文件是
    • 2.1。完全实现所有这些功能,没有其他功能
    • 2.2. 完全实现几乎所有功能,没有其他功能
    • 2.3. 与其他一些功能完全实现功能
    • 2.4. 实现几乎所有功能并添加一些其他功能
0 投票
1 回答
141 浏览

terminal - terminfo 参数化字符串中的“%l”编码

我正在 C++ 中为参数化字符串实现解析器(用于为终端指定一些终端功能)。然后我在terminfo% encoding手册页上遇到了这个:

所以,我的问题是,每当我们将任何东西压入堆栈时,就会% encodings遇到以下任何情况:

并且每当遇到这些并计算它们的结果并且当结果即将被压入堆栈时,那么一个整数(包括布尔结果的 0 或 1)或一个字符将被压入堆栈,然后执行%l encoding指以下任何一项或任何一项:

  • 从堆栈中弹出一个值和if a character push 1 onto stackif an integer push #digits_in_that_integer onto the stack

  • (因为使用手册页%l编写)从堆栈中弹出一个字符串(弹出一个字符串:继续弹出直到堆栈为空),然后将弹出字符串的长度推回堆栈。strlen

所以,我的问题是什么%l push strlen(pop)意思,它在说什么长度?

额外的问题:在 terminfo 的参数化字符串(在上面提到的第二个要点中)的情况下弹出字符串的方法是否正确?

编辑:正如Thomas Dickey所指出的,现在我指的是 terminfo 的手册页