问题标签 [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.
c - 我可以安全地设置 TERM 环境变量吗?
我正在编写一个使用 termcaps 的程序,我需要知道我使用的是哪种终端。
我知道我可以TERM
通过 获取变量getenv("TERM")
,但我可以使用 "" 启动我的程序,$ env -i ./myprog
并且不会设置 TERM。
那么如何确定必须使用哪种终端类型呢?
我可以在我的应用程序中安全地设置TERM
变量吗?
它会导致不可移植性问题吗?
有没有一种方法可以安全地做到这一点(获取术语类型)?
我有很多手册(getty - getttab - tty - ttys)和帖子,但我找不到任何解决方案。 xterm/xterm-256color
我也很担心,因为如果我启动一个 shell(比如zsh
or tcsh
),我会遇到一些键问题。
例如,zsh
像这样启动:
$env -i zsh
将导致箭头和任何暗示 termcaps 的键(甚至 Ctr-d)出现问题。
相反bash
,tcsh
它将在许多键上正常运行,但不是全部。
c - 在终端中实现覆盖
我想在终端中创建一个覆盖
此 Q&D 在右/下显示时间
它编译为:
并使用它:
它将显示:
并不断更新时间。
停止:
但是,有没有更好的方法可以用一些抽象低级调用的库来做到这一点(比如保存恢复光标位置或在某些行/列中打印)
我想保留现有的终端输出(因此带有 initscr() 的诅咒将不起作用)
c - 是否可以使用 termcaps 保存多个光标位置,以便以后恢复它们?
我想知道是否可以使用 termcaps 保存多个光标位置,以便以后能够恢复它们?
例如 :
稍后在代码中
稍后在代码中
稍后在代码中
稍后在代码中
如果不可能怎么办?
谢谢您的帮助 :)
c - 如何在不写字符的情况下使用 termcap 在 C 程序中获取光标位置?
我想知道如何在我的程序中获取光标位置(x,y),而不是在屏幕上写任何东西,也不会一直跟踪它。
我找到了一种使用此函数获取其位置的方法(我不检查读取、写入等的返回以在此主题上编写一个较小的代码,但我在我的程序中执行此操作):
这个函数给了我准确的光标位置(*rows = y, *col = x),但它会写在屏幕上。
如何在屏幕上不写任何内容的情况下获得光标位置?
(如果光标位于其中一个打印字符上,它将覆盖它。)
是否应该在发送转义序列之前和之后切换回显?
这是一个学校项目,所以我只能用termcap,不能用ncurses函数,唯一允许的函数是tputs、tgoto、tgetstr、tgetnum、tgetflag。
terminal - terminfo 参数化字符串中的 if else 表达式
我正在 C++ 中为参数化字符串实现解析器(用于为终端指定一些终端功能)。然后我在 terminfo 的手册页上遇到了这个:
所以,我的问题是:
正如手册页所说,expr
字符串中的部分通常可以将值压入堆栈,那么在该部分中还可以做哪些其他事情expr
,即在expr部分可以进行哪些其他操作除了将值压入堆栈?
c - 在反引号之间执行的程序的 termcap
我正在尝试制作一个 C 程序来选择选项。如果我以这种方式运行它,它会起作用:
但如果我在反引号之间运行它,那就是地狱
我需要能够检索选定的选项。这就是为什么我将所有输出都输出到我打开的文件中
我认为这与tgoto
我的代码中的使用有关,用于在屏幕上移动书写光标。
我已经看到 usingisatty(1)
在反引号之间执行时返回 0,如果直接执行则返回 1... 那么,有没有办法让我在两种情况下移动光标并保持格式?
感谢您的时间
terminal - terminfo 参数化字符串中的“%l”编码
我正在 C++ 中为参数化字符串实现解析器(用于为终端指定一些终端功能)。然后我在terminfo% encoding
的手册页上遇到了这个:
所以,我的问题是,每当我们将任何东西压入堆栈时,就会% encodings
遇到以下任何情况:
并且每当遇到这些并计算它们的结果并且当结果即将被压入堆栈时,那么一个整数(包括布尔结果的 0 或 1)或一个字符将被压入堆栈,然后执行%l encoding
指以下任何一项或任何一项:
从堆栈中弹出一个值和
if a character push 1 onto stack
和if an integer push #digits_in_that_integer onto the stack
。(因为使用手册页
%l
编写)从堆栈中弹出一个字符串(弹出一个字符串:继续弹出直到堆栈为空),然后将弹出字符串的长度推回堆栈。strlen
所以,我的问题是什么%l push strlen(pop)
意思,它在说什么长度?
额外的问题:在 terminfo 的参数化字符串(在上面提到的第二个要点中)的情况下弹出字符串的方法是否正确?
编辑:正如Thomas Dickey所指出的,现在我指的是 terminfo 的手册页。
c - 如何使用 termcap 库在终端中设置接口
我需要interface
使用 in C 创建一个 in 终端termios.h
。为了简短起见,我必须创建一个可执行文件,./exec
并且在我运行之后,它必须停止显示PS1
变量。如果我有一个程序显示以下Hello World
使用printf
它的文本,它将如下所示:
但是我不需要打印它,我只需要Hello World!
在终端中,就像在程序显示时清除屏幕一样。
换一种说法,目的是为了清理终端,运行的时候./exec
也要清除这条线,$:> ./exec
.
到目前为止,我设法使这个功能
这会清除屏幕,但会与命令本身保持一致$:> ./exec
。我不允许使用ncurses.h
图书馆。
这是一个主要的:
vim - 如何检查高亮属性是否可以在终端上显示?
我正在编写一个插件,需要检查一个突出显示属性(粗体、斜体、下划线等)是否实际上可以在终端上显示。我试图用termcap检查它。例如下划线,
在 xterm 上变为 TRUE,并且可显示。
但是,
在 win32 上变为 TRUE,但不可显示。
在 nvim 上变为 FALSE,但可显示。
有人可以有一个好主意来正确检查它吗?
python - terminfo 参数化字符串的延迟
在 terminfo 的手册页中,提到$<>
在用于指定延迟的编码中ms
,在它的尖括号内是一个数字,精度至多小数点后一位。
通过以下python脚本,我确认它$<
仅用于指定延迟,即没有$<
用于不指定延迟的参数化字符串。
所以我的问题是,是否$<
是文本/序列的一部分而不代表延迟?例如。是否有这样的情况(现在或将来的终端),例如:$<%p1%d
或者$<A
,没有结束尖括号并且延迟并不意味着使用$<
并且仍然是有效的 terminfo 序列?