问题标签 [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.

0 投票
2 回答
850 浏览

c - 我可以安全地设置 TERM 环境变量吗?

我正在编写一个使用 termcaps 的程序,我需要知道我使用的是哪种终端。
我知道我可以TERM通过 获取变量getenv("TERM"),但我可以使用 "" 启动我的程序,$ env -i ./myprog并且不会设置 TERM。

那么如何确定必须使用哪种终端类型呢?
我可以在我的应用程序中安全地设置TERM变量吗? 它会导致不可移植性问题吗? 有没有一种方法可以安全地做到这一点(获取术语类型)? 我有很多手册(getty - getttab - tty - ttys)和帖子,但我找不到任何解决方案。 xterm/xterm-256color


我也很担心,因为如果我启动一个 shell(比如zshor tcsh),我会遇到一些键问题。

例如,zsh像这样启动:
$env -i zsh
将导致箭头和任何暗示 termcaps 的键(甚至 Ctr-d)出现问题。
相反bashtcsh它将在许多键上正常运行,但不是全部。

0 投票
1 回答
123 浏览

c - 在终端中实现覆盖

我想在终端中创建一个覆盖

此 Q&D 在右/下显示时间

它编译为:

并使用它:

它将显示:

并不断更新时间。

停止:

但是,有没有更好的方法可以用一些抽象低级调用的库来做到这一点(比如保存恢复光标位置或在某些行/列中打印)

我想保留现有的终端输出(因此带有 initscr() 的诅咒将不起作用)

0 投票
1 回答
282 浏览

c - 是否可以使用 termcaps 保存多个光标位置,以便以后恢复它们?

我想知道是否可以使用 termcaps 保存多个光标位置,以便以后能够恢复它们?

例如 :

稍后在代码中

稍后在代码中

稍后在代码中

稍后在代码中

如果不可能怎么办?

谢谢您的帮助 :)

0 投票
1 回答
3282 浏览

c - 如何在不写字符的情况下使用 termcap 在 C 程序中获取光标位置?

我想知道如何在我的程序中获取光标位置(x,y),而不是在屏幕上写任何东西,也不会一直跟踪它。

我找到了一种使用此函数获取其位置的方法(我不检查读取、写入等的返回以在此主题上编写一个较小的代码,但我在我的程序中执行此操作):

这个函数给了我准确的光标位置(*rows = y, *col = x),但它会写在屏幕上。

如何在屏幕上不写任何内容的情况下获得光标位置?
(如果光标位于其中一个打印字符上,它将覆盖它。)
是否应该在发送转义序列之前和之后切换回显?

这是一个学校项目,所以我只能用termcap,不能用ncurses函数,唯一允许的函数是tputs、tgoto、tgetstr、tgetnum、tgetflag。

0 投票
1 回答
56 浏览

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

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

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

0 投票
1 回答
104 浏览

c - 在反引号之间执行的程序的 termcap

我正在尝试制作一个 C 程序来选择选项。如果我以这种方式运行它,它会起作用:

但如果我在反引号之间运行它,那就是地狱

我需要能够检索选定的选项。这就是为什么我将所有输出都输出到我打开的文件中

我认为这与tgoto我的代码中的使用有关,用于在屏幕上移动书写光标。

我已经看到 usingisatty(1)在反引号之间执行时返回 0,如果直接执行则返回 1... 那么,有没有办法让我在两种情况下移动光标并保持格式?

感谢您的时间

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 的手册页

0 投票
2 回答
1675 浏览

c - 如何使用 termcap 库在终端中设置接口

我需要interface使用 in C 创建一个 in 终端termios.h。为了简短起见,我必须创建一个可执行文件,./exec并且在我运行之后,它必须停止显示PS1变量。如果我有一个程序显示以下Hello World使用printf它的文本,它将如下所示:

但是我不需要打印它,我只需要Hello World!在终端中,就像在程序显示时清除屏幕一样。

换一种说法,目的是为了清理终端,运行的时候./exec也要清除这条线,$:> ./exec.

到目前为止,我设法使这个功能

这会清除屏幕,但会与命令本身保持一致$:> ./exec。我不允许使用ncurses.h图书馆。

这是一个主要的:

0 投票
1 回答
81 浏览

vim - 如何检查高亮属性是否可以在终端上显示?

我正在编写一个插件,需要检查一个突出显示属性(粗体、斜体、下划线等)是否实际上可以在终端上显示。我试图用termcap检查它。例如下划线,

在 xterm 上变为 TRUE,并且可显示。
但是,
在 win32 上变为 TRUE,但不可显示。
在 nvim 上变为 FALSE,但可显示。

有人可以有一个好主意来正确检查它吗?

0 投票
1 回答
85 浏览

python - terminfo 参数化字符串的延迟

在 terminfo 的手册页中,提到$<>在用于指定延迟的编码中ms,在它的尖括号内是一个数字,精度至多小数点后一位。

通过以下python脚本,我确认它$<仅用于指定延迟,即没有$<用于不指定延迟的参数化字符串。

所以我的问题是,是否$<是文本/序列的一部分而不代表延迟?例如。是否有这样的情况(现在或将来的终端),例如:$<%p1%d或者$<A,没有结束尖括号并且延迟并不意味着使用$<并且仍然是有效的 terminfo 序列?