问题标签 [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.
terminfo - 为什么 terminfo 不同意 read?
我正在使用 xterm。如果我输入infocmp $TERM | grep end
,我会看到kend=\EOF
。但是,如果我键入read
,然后键入 End 键,我会看到\E[F
生成了序列。这似乎也是其他键的问题。
当然这些值应该是相同的?
vim - 如何检查高亮属性是否可以在终端上显示?
我正在编写一个插件,需要检查一个突出显示属性(粗体、斜体、下划线等)是否实际上可以在终端上显示。我试图用termcap检查它。例如下划线,
在 xterm 上变为 TRUE,并且可显示。
但是,
在 win32 上变为 TRUE,但不可显示。
在 nvim 上变为 FALSE,但可显示。
有人可以有一个好主意来正确检查它吗?
c++ - terminfo 参数化字符串 %d 编码行为
我试图了解%d
terminfo 的参数化字符串解析器中的编码行为。相关的手册页在这里并指出 -
但没有说明从哪里打印值以及如何处理边缘情况。它们是来自堆栈还是来自传递给参数化字符串的参数?另外,当传递额外的参数(%d
参数化字符串中不相等)或%d
存在额外参数(参数化字符串不正确?)时会发生什么?那是未定义的行为或实现定义或在某处定义定义?
我试图通过手动编写一些有效和无效的字符串并验证输出来检查某些情况,但到目前为止一切都有些不一致,所以我在这里看不到模式 -
python - terminfo 参数化字符串的延迟
在 terminfo 的手册页中,提到$<>
在用于指定延迟的编码中ms
,在它的尖括号内是一个数字,精度至多小数点后一位。
通过以下python脚本,我确认它$<
仅用于指定延迟,即没有$<
用于不指定延迟的参数化字符串。
所以我的问题是,是否$<
是文本/序列的一部分而不代表延迟?例如。是否有这样的情况(现在或将来的终端),例如:$<%p1%d
或者$<A
,没有结束尖括号并且延迟并不意味着使用$<
并且仍然是有效的 terminfo 序列?
c - 在不占用屏幕的情况下识别特殊键
在使用curses
orncurses
库的程序中,该getch()
函数可以识别普通字符(如'x'
)或箭头和功能键发送的转义序列。例如,键入向上箭头键可能会发送序列 (Escape, '[', 'A'),但getch()
会返回int
值KEY_UP
。它甚至使用时间信息来区分自己发送的转义字符和序列中的转义字符。
要getch()
成功使用,您首先必须调用initscr()
,它会清除屏幕,以便curses 可以控制显示的内容。
有没有一种方便的方法可以在不占用屏幕的情况下识别特殊键?理想情况下,我想在getch()
没有先调用的情况下调用initscr()
,并让它返回与调用时相同的值initscr()
,但实验表明这不起作用。
这是我正在尝试做的一个非工作示例。程序提示用户输入向上、向下、退出、向左、向右,并确认输入了正确的键。
-c
使用调用运行程序initscr()
并使其正常工作。不先调用-c
就运行它;所有调用都失败,无需等待输入,返回( )。getch()
initscr()
getch()
ERR
-1
没有-c
选项的输出(在 Ubuntu 17.04 x86_64 上)是:
更新:使用诅咒以外的解决方案会很好。它必须直接或间接地使用 terminfo 来了解要查找的输入序列。(在我看来,识别特殊键输入应该很简单,而不是与接管整个屏幕密切相关。)
unix - What's the difference between cursor_up (cuu1) and key_up (kcuu1) in terminfo(5)?
In terminfo(5):
I tried with tput and they produce the same output:
ncurses - ncurses如何搜索终端描述
由于某些原因,我正在从源代码构建 ncurses 6.1。首先我配置源
然后我用
两者都没有论据。当我尝试运行测试时,我收到错误消息
在我的本地系统(Ubuntu 17.10)和
在构建服务器(Jenkins Docker 容器)上。
我发现这个版本正在寻找终端描述/usr/share/terminfo/
。有很多描述,但xterm-256color
在我的本地系统上没有。在构建服务器上,该文件夹/usr/share/terminfo/
为空。我发现xterm-256color
并xterm
在/lib/terminfo
. 当我使用包管理器(适用于 Ubuntu 17.10)安装 ncurses 时,它可以工作。所以我假设这个包选择了正确的路径。我复制了xterm-256color
resp。xterm
from /lib/terminfo
to/usr/share/terminfo/
和我的构建现在可以在两个系统上运行。为什么存在两条不同的路径,为什么这两个版本的 ncurses 选择两条不同的路径?我需要一个开箱即用的 ncurses 柯南包,无需复制描述文件。
这可能与以下内容重复: How to set custom search paths for terminfo database when building ncurses from source
ncurses - 屏幕真彩 Ubuntu 18.04 坏了
我自己编译的少数软件之一是屏幕。我发现它倾向于比存储库中的版本更好地支持终端的一些现代功能。我已经这样做了一段时间了,没有太多问题。但是,在升级到 18.04 时,(真)颜色似乎已经损坏。
我运行这段代码来打印彩虹,它仍然可以在裸机中工作:
但是,当我启动屏幕时,颜色是关闭的。它似乎没有回落到 256 色,而是颜色值错误。
我在重新编译屏幕之前看到了这种行为。看到这个问题后,我重新编译甚至核对了我的 git repo 并重新克隆和重新编译以尝试让事情正常工作,但无济于事。
想想这哪里出了问题?我什至不确定哪个库可能对此负责,或者它如何与 konsole 而不是 screen 一起工作。
terminal - 打印一个 terminfo 条目,包括 capname 描述?
打印出包含 terminfo 手册页中每个 capname 的简短描述的 terminfo 条目(例如,对于我当前的终端:xterm-256color)的最直接方法是什么?
我知道如何打印终端的 terminfo 条目(每行一个名称):
生成:
而且我可以在 terminfo 手册页中手动查找每个 capname 的描述(例如,ccc 表示“终端可以重新定义现有颜色”),但是有没有一种方法可以显示每个 capname 的描述而无需手动查找每个?
所以,例如,我想看到这样的东西:
infocmp 的输出始终是分隔的,并且相对容易解析,但在 terminfo 手册页上列出终端功能的表格,具有不同的列宽和跨越多行的 capname 描述,则不是。如果是这样,生成我描述的输出会更直接。也许 terminfo 手册页中的内容有另一种来源,它以编程方式更容易操作?
我正在运行 GNU bash,版本 4.4.23(1)-release (x86_64-apple-darwin18.0.0)。
linux - 获取终端内容
是否可以获得 Linux 终端文本内容的快照?
两者都tput
支持terminfo
“杯子”模式(例如tput smcup
启动备用缓冲模式),这意味着它们必须将屏幕状态保存在某处。是否有可能获得这些内容?