问题标签 [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.
macos - 另一个未知的终端类型
在 Ubuntu 中,我打开gnome-terminal
,然后 ssh 到OS X
.
OS X
版本是:
我有例如文件xterm-256color
:
但我不能做一个简单的clear
:
terminal - 如何从 Zsh 中的 terminfo 获取 Ctrl+Left 的控制字符
我terminfo
用来找出终端中左(右,...)键的控制序列是什么,这样我就可以将它映射到zshrc
像这样有用的东西(向左移动):
(还有一些其他的东西可以让它工作,请参阅源代码)。这很有帮助,因为我使用了几个终端仿真器并且这些控制序列发生了变化。例如,我在 Ubuntu 上使用 Gnome Terminal 连接ssh
到 Debian 盒子,然后在tmux
里面使用...
但是如何从 terminfo 中找出 CTRL+LEFT(和 RIGHT...)的键码?我想将这些映射到左/右单词。
tty - 为什么 terminfo[kcuu1] = '\EOA'?
据我所知terminfo(5)
, kcuu1 应该是按下向上箭头时终端发送的序列。我从来没有见过,除了^[[A
(现在谈论cat
,混乱的终端设置等)之外的任何东西。那么,鉴于我使用的终端(rxvt、gnome-terminal、iTerm)都默认为 TERM=xterm,为什么不是 kcuu1 \E[A
?
我看到 cuu1是 \E[A
,但是(再次从手册页),这是我应该发送到终端以移动光标的字符串,而不是终端发送给我的字符串。
顺便说一句,这适用于 OS X。
ncurses - tput:未知终端“xterm-256color”
我正在运行 OS X 10.10.5。我在尝试打开终端时遇到错误:
tput:未知终端“xterm-256color”
这显然是缺少 termcap 条目。
任何想法如何在 OS X 上安装“ncurses-term”?
terminal - 是否有任何终端支持 \r(回车)和 \b(退格)?
我写了很好的PS1
格式化程序:
显示如下提示:
我使用技巧\r
将光标返回到第一行位置,所以输出====...
像字符串一样。
是否有任何终端支持 \r(回车)和 \b(退格)?
如果返回true ,我是否需要查询支持termcap
?terminfo
isatty()
当实用程序显示进度时,我在wget / curl / git / hg / 等中看到\r
了用法。
\b
当应用程序在单个旋转位置显示进度序列时也使用:
注意请不要使用打字机发布图像。想想现代硬件或软件模拟器。
c++ - 使用terminfo的终端颜色?
我正在编写一个允许在终端中使用颜色的 C++ 类。我希望它适用于每个终端:
- 在支持它的终端上以真彩色(24 位)打印,
- 在支持它的终端上使用 256 色 (6x6x6),
- 否则有基本的 16 种颜色。
我曾经使用 termcap 编写过 C 函数,我想在这种情况下使用它。但是,手册页说:
termcap 数据库是一个过时的工具,用于描述字符单元终端和打印机的功能。它仅保留用于旧程序的功能;新的应该使用 terminfo 数据库和相关的库。
所以我尝试使用 terminfo,但我找不到如何做到这一点。我的系统中没有 terminfo.h(我在 Debian 上运行)。
我的问题是:
如何使用最新的工具(即不是 termcap,根据手册页)在 C/C++ 中获得当前终端的颜色可能性?
linux - 如果我使用串口控制台登录linux,是使用terminfo还是termcap?
由linux内核的VT子系统实现的linux控制台,当我从串口控制台登录时,是使用terminfo还是termcap?
haskell - 如何正确使用 Terminfo 的 Capability 类型。单子变压器是答案吗?
我一直在努力使用System.Console.Terminfo
. 我已经把mappend
多个Capability
放在一起了,但是每当我需要评估它们时,我必须使用getCapability
然后使用 acase
来对结果进行模式匹配Maybe
。图案总是一样的
所以我认为必须有更好的方法来做到这一点。在我看来,模式匹配正在替换Maybe
为IO
,所以我认为这可能是 monad 转换器的用途。看Capability
定义,
它看起来确实与MaybeT
我在 StackOverflow 上找到的示例相似,但它是一个函数这一事实让我感到震惊。(另外,仅阅读一个示例后,我不能声称理解 monad 转换器。)
我在正确的轨道上吗?有没有不同的模式可以帮助我避免case
一遍又一遍地写这个?
这是getCapability
类型:
terminal - 从终端读取屏幕字符
据我研究,terminfo
/termcap
并且ioctl
不允许在终端屏幕上的 (x,y) 位置查询字符。这是相当出乎意料的,因为:
- 可以从终端读取例如屏幕尺寸(例如
tput co
,tput li
), - 可以从终端读取输入
– 两者表示与终端的通信是双向的。真的没有办法查询给定位置的字符,比如 with *inch*
,*in_wch*
curses 函数(仅适用于 curses windows)?
c++ - 读取 little endian 16 位无符号整数
我正在研究解析terminfo数据库文件,这是一种二进制文件。您可以自行阅读其存储格式并确认我面临的问题。
手册说——
标题部分开始文件。本节包含六个短整数,格式如下所述。这些整数是
(1) 幻数(八进制 0432);
...
...
短整数存储在两个 8 位字节中。第一个字节包含值的最低有效 8 位,第二个字节包含最高有效 8 位。(因此,表示的值为256*second+first。)值-1由0377、0377这两个字节表示;其他负值是非法的。该值通常表示该终端缺少相应的能力。这与硬件不对应的机器必须将整数读取为两个字节并计算 little-endian 值。
解析这种类型的输入时的第一个问题是将大小固定为 8 位,因此不能使用普通的 old char,因为它不能保证大小正好是 8 位。所以我在寻找'固定宽度整数类型',但再次面临选择黑白
int8_t
或uint8_t
明确指出的困境 - “仅在实现直接支持该类型时提供”。那么我应该选择什么才能使类型足够便携。第二个问题是
buffer.readInt16LE()
C++ 标准库中没有可以读取 Little Endian 格式的 16 字节数据的方法。那么我应该如何继续以便携和安全的方式再次实现此功能。
我已经尝试使用char
数据类型读取它,但它肯定会在我的机器上产生垃圾。可以通过infocmp
命令读取正确的输入,例如 - $ infocmp xterm
。