问题标签 [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 投票
2 回答
2005 浏览

macos - 另一个未知的终端类型

在 Ubuntu 中,我打开gnome-terminal,然后 ssh 到OS X.

OS X版本是:

我有例如文件xterm-256color

但我不能做一个简单的clear

0 投票
1 回答
1370 浏览

terminal - 如何从 Zsh 中的 terminfo 获取 Ctrl+Left 的控制字符

terminfo用来找出终端中左(右,...)键的控制序列是什么,这样我就可以将它映射到zshrc像这样有用的东西(向左移动):

(还有一些其他的东西可以让它工作,请参阅源代码)。这很有帮助,因为我使用了几个终端仿真器并且这些控制序列发生了变化。例如,我在 Ubuntu 上使用 Gnome Terminal 连接ssh到 Debian 盒子,然后在tmux里面使用...

但是如何从 terminfo 中找出 CTRL+LEFT(和 RIGHT...)的键码?我想将这些映射到左/右单词。

0 投票
1 回答
1166 浏览

tty - 为什么 terminfo[kcuu1] = '\EOA'?

据我所知terminfo(5), kcuu1 应该是按下向上箭头时终端发送的序列。我从来没有见过,除了^[[A(现在谈论cat,混乱的终端设置等)之外的任何东西。那么,鉴于我使用的终端(rxvt、gnome-terminal、iTerm)都默认为 TERM=xterm,为什么不是 kcuu1 \E[A

我看到 cuu1 \E[A,但是(再次从手册页),这是我应该发送到终端以移动光标的字符串,而不是终端发送给我的字符串。

顺便说一句,这适用于 OS X。

0 投票
2 回答
5194 浏览

ncurses - tput:未知终端“xterm-256color”

我正在运行 OS X 10.10.5。我在尝试打开终端时遇到错误:

tput:未知终端“xterm-256color”

这显然是缺少 termcap 条目。

任何想法如何在 OS X 上安装“ncurses-term”?

0 投票
0 回答
241 浏览

terminal - 是否有任何终端支持 \r(回车)和 \b(退格)?

我写了很好的PS1格式化程序:

显示如下提示:

我使用技巧\r将光标返回到第一行位置,所以输出====...像字符串一样。

是否有任何终端支持 \r(回车)和 \b(退格)?

如果返回true ,我是否需要查询支持termcapterminfoisatty()

当实用程序显示进度时,我在wget / curl / git / hg / 等中看到\r了用法。

\b当应用程序在单个旋转位置显示进度序列时也使用:

注意请不要使用打字机发布图像。想想现代硬件或软件模拟器。

0 投票
1 回答
2493 浏览

c++ - 使用terminfo的终端颜色?

我正在编写一个允许在终端中使用颜色的 C++ 类。我希望它适用于每个终端:

  • 在支持它的终端上以真彩色(24 位)打印,
  • 在支持它的终端上使用 256 色 (6x6x6),
  • 否则有基本的 16 种颜色。

我曾经使用 termcap 编写过 C 函数,我想在这种情况下使用它。但是,手册页说:

termcap 数据库是一个过时的工具,用于描述字符单元终端和打印机的功能。它仅保留用于旧程序的功能;新的应该使用 terminfo 数据库和相关的库。

所以我尝试使用 terminfo,但我找不到如何做到这一点。我的系统中没有 terminfo.h(我在 Debian 上运行)。

我的问题是:

如何使用最新的工具(即不是 termcap,根据手册页)在 C/C++ 中获得当前终端的颜色可能性?

0 投票
1 回答
172 浏览

linux - 如果我使用串口控制台登录linux,是使用terminfo还是termcap?

由linux内核的VT子系统实现的linux控制台,当我从串口控制台登录时,是使用terminfo还是termcap?

0 投票
2 回答
50 浏览

haskell - 如何正确使用 Terminfo 的 Capability 类型。单子变压器是答案吗?

我一直在努力使用System.Console.Terminfo. 我已经把mappend多个Capability放在一起了,但是每当我需要评估它们时,我必须使用getCapability然后使用 acase来对结果进行模式匹配Maybe。图案总是一样的

所以我认为必须有更好的方法来做到这一点。在我看来,模式匹配正在替换MaybeIO,所以我认为这可能是 monad 转换器的用途。看Capability定义,

它看起来确实与MaybeT我在 StackOverflow 上找到的示例相似,但它是一个函数这一事实让我感到震惊。(另外,仅阅读一个示例后,我不能声称理解 monad 转换器。)

我在正确的轨道上吗?有没有不同的模式可以帮助我避免case一遍又一遍地写这个?

这是getCapability类型:

0 投票
1 回答
591 浏览

terminal - 从终端读取屏幕字符

据我研究,terminfo/termcap并且ioctl不允许在终端屏幕上的 (x,y) 位置查询字符。这是相当出乎意料的,因为:

  • 可以从终端读取例如屏幕尺寸(例如tput cotput li),
  • 可以从终端读取输入

– 两者表示与终端的通信是双向的。真的没有办法查询给定位置的字符,比如 with *inch**in_wch*curses 函数(仅适用于 curses windows)?

0 投票
1 回答
2327 浏览

c++ - 读取 little endian 16 位无符号整数

我正在研究解析terminfo数据库文件,这是一种二进制文件。您可以自行阅读其存储格式并确认我面临的问题。

手册说——

标题部分开始文件。本节包含六个短整数,格式如下所述。这些整数是

(1) 幻数(八进制 0432);

...

...

短整数存储在两个 8 位字节中。第一个字节包含值的最低有效 8 位,第二个字节包含最高有效 8 位。(因此,表示的值为256*second+first。)值-1由0377、0377这两个字节表示;其他负值是非法的。该值通常表示该终端缺少相应的能力。这与硬件不对应的机器必须将整数读取为两个字节并计算 little-endian 值


  • 解析这种类型的输入时的第一个问题是将大小固定为 8 位,因此不能使用普通的 old char,因为它不能保证大小正好是 8 位。所以我在寻找'固定宽度整数类型',但再次面临选择黑白int8_tuint8_t明确指出的困境 - “仅在实现直接支持该类型时提供”。那么我应该选择什么才能使类型足够便携。

  • 第二个问题是buffer.readInt16LE()C++ 标准库中没有可以读取 Little Endian 格式的 16 字节数据的方法。那么我应该如何继续以便携和安全的方式再次实现此功能。

我已经尝试使用char数据类型读取它,但它肯定会在我的机器上产生垃圾。可以通过infocmp命令读取正确的输入,例如 - $ infocmp xterm