问题标签 [termcap]
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.
ncurses - 屏幕真彩 Ubuntu 18.04 坏了
我自己编译的少数软件之一是屏幕。我发现它倾向于比存储库中的版本更好地支持终端的一些现代功能。我已经这样做了一段时间了,没有太多问题。但是,在升级到 18.04 时,(真)颜色似乎已经损坏。
我运行这段代码来打印彩虹,它仍然可以在裸机中工作:
但是,当我启动屏幕时,颜色是关闭的。它似乎没有回落到 256 色,而是颜色值错误。
我在重新编译屏幕之前看到了这种行为。看到这个问题后,我重新编译甚至核对了我的 git repo 并重新克隆和重新编译以尝试让事情正常工作,但无济于事。
想想这哪里出了问题?我什至不确定哪个库可能对此负责,或者它如何与 konsole 而不是 screen 一起工作。
c - Termcap“cl”命令不清除屏幕
我似乎无法让termcap
' 的“cl”命令工作,但终端转义码可以。
例如:
这不会改变终端。但是当我运行时:
或者如果我打电话echo `tput cl`
终端被清除。
为什么会这样?不应该termcap
给出相同的转义码吗?
编辑:固定书写字符
EDIT2:这是因为我在打电话tgetent()
之前没有打电话tgetstr()
。多谢你们!
c - Termcap tgetstr 获取箭头键
我正在尝试从 termcap 数据库中获取表示向上箭头键的字符串。使用以下内容:
ku
通过键入向上箭头键发送的输入字符串。
问题是向上箭头键实际上是\E[A
在键入程序时传递的。它也像这样传递给cat
. 我尝试了不同的终端仿真器和 shell,它们都以相同的方式通过了它。
所以我决定硬编码这个键的值而不是使用这个ku
值,它可以工作,但感觉不对。
我在这里错过了什么吗?如何以编程方式获得正确的ku
值?
raku - 使用 termcap 转义将嵌入式 Pod 打印为格式化文本
我正在尝试将嵌入式 Pod 作为 ANSI 文本输出到终端。在 Perl 5 中,我可以使用Pod::Text::Termcap
:
输出:
我试图在 Perl 6 中达到同样的效果:
输出:
正如所见,Perl 6 输出中缺少 ANSI termcap 转义。如何在 Perl 6 中获得 ANSI 功能,如粗体和带下划线的文本?
perl - 如何在 perl 中使用 Term::Cap 模块在特定的行和列显示语句
我编写了一个代码,它将使用 perl 中的 Term::Cap 模块在第 2 行和第 10 列显示一条语句。
我试过下面的代码
我得到的输出没有我指定的任何行和列位置。还有 Trequire()、Tgetent() 会做什么。也可以在 (r1,c1) 中显示 Hello,在 (r1,c2) 中显示 World。
c - 热设置 termcap 能力'bw'标志?
我正在学习 termcap 库。我正在尝试在终端中做一个行编辑器。我有一个可以在线移动的光标。一条线一切都很好。但是,如果我的行大于终端宽度,则无法使用le
命令将光标从第二行返回到第一行(将光标向左移动)。我需要设置bw
标志来做到这一点。函数tgetflag()
只返回一个值。我认为我需要使用tcsetsttr()
但找不到正确的标志宏来设置此标志。如何设置bw
标志?
c - 为什么每次调整终端大小时函数 tgetnum("co") 都不会更新?
我有一个名为 g_data 的全局变量,它包含一个指向结构的指针,其中包含两个变量来保存终端的高度和宽度。下面的函数信号处理程序检查终端是否已调整大小。在这种情况下,函数 update_data 将这两个变量的值更改为终端的当前高度和宽度。
我的问题是函数 tgetnum,无论何时被调用,它似乎都没有获得当前的终端大小(在调整大小之后)。
我正在使用 Ubuntu 18.04LTS
c - 为什么我无法检索从内部反引号暂停的程序?
我创建了一个程序,它接受一个参数列表并将它们放在一个新 tty 上的网格中,我可以在其中移动并从中选择我想要的。
当我像这样运行没有反引号的程序时......
打开一个新的 tty 并显示一个网格...
我点击ctrl+z了,程序毫无问题地被挂起,fg
命令将其放回原处。
我的问题是,当我将命令放在反引号之间并尝试暂停它时,它会卡住而没有给出提示。
不得不提的是,我把网格的所有内容都写在/dev/tty
您可以在下面的代码中找到执行信号处理的函数。
c - 工作控制中的 tcgetattr 和 tcsetattr 似乎打破了 termcaps
工作控制中的 tcgetattr 和 tcsetattr
大家好。我目前正在用 C 语言重新创建一个 shell,其中包括作业控制。
我现在正在重新编码内置的 fg。
根据this和this documentation,似乎他们在创建新工作时将termios保存在工作结构中,然后用tcsetattr
.
我正在尝试(几乎)做同样的事情。这是我的代码:
当我在链接列表中创建新工作时:
当我尝试将其设置在前台时:
我的问题是:当tcsetattr(STDERR_FILENO, TCSADRAIN, &searched->tmodes); //causing bug in termcaps when uncommented
未注释时,它似乎打破了我的术语上限,如下图所示。
如果这一行被注释,我不能输入任何东西,只有按 CTRL-C 才能让我回到 shell 上。
当我想停止它时,我应该能够键入 AND 以按 CTRL-C,如第一个链接中所述。
如果进程组作为后台作业启动,shell 应保持在前台本身并继续从终端读取命令。
我错过了什么?
perl - 如何使用 Term::Cap 发送清除或重置?
当我输出时tput clear | hexdump -c
,如果我打开kitty
或,我会得到不同的结果xterm
。如何使用Term::Cap
在各个终端上生成这些终端信号?
我尝试的是从带有设置的文档中直接复制粘贴,
然后我认为这应该可行,
但很可惜,它什么也没做。
如果我为该术语提供一个不同的不存在的名称(而不是undef
默认为$ENV{TERM}
,我得到)
所以我知道它正在查找termcap
文件并找到它。