强制ncurses改变光标颜色了。

问题描述 投票:0回答:1

我有一个使用ncurses的终端程序,它定期改变前景和背景颜色。 不幸的是,光标的颜色直到终端滚动时才会改变。 ncurses在滚动过程中做了什么,导致xterm和其他符合ANSI标准的终端仿真器改变光标颜色?

我在我的.Xresources中发现了这个问题。

xterm*cursorColor:      *XtDefaultForeground

我发现了这个 我如何在ncurses表格中改变光标颜色? 向我展示了改变光标颜色的转义序列,但它并没有考虑到光标因为是粗体而变得更亮的事实。 我可以将我从 color_content() 用1.48,但我觉得这给以后带来了麻烦。出于某种我想不通的原因,仅仅用粗体色除以非粗体色(用颜色选取器得到的值)是行不通的,结果颜色更亮了,但与目标值不符,于是我通过试错找到了1.48。 得到的颜色比较亮,但与目标值不符,所以我通过试错找到了1.48。

如果我只能使用转义序列,那也没关系,但我想知道有什么更干净的方法来正确加粗颜色。

terminal ncurses xterm terminal-emulator
1个回答
0
投票

ncurses对cursor-color没有任何了解:在不同的终端上没有任何共性,不能认为可以设置(或控制)光标颜色。

终端上的 xterm sequence 表示的值可能不被其他终端支持。 恰好修改了将由该函数初始化的值。cursorColor 资源的颜色。

指定文本光标的颜色。 默认值是 "XtDefaultForeground". 默认情况下。xterm 试图保持这个颜色与背景色相同,因为它是通过填充文本单元格的背景来绘制光标的。 同样的限制也适用于可以改变这个颜色的控制序列。

设置这个资源会覆盖大部分的 xterm的光标颜色调整。 它仍然会使用反向视频来禁止某些情况,比如黑色背景上的黑色光标。

也就是说,在默认情况下,xterm试图通过调整基于 细胞 当前光标所在的位置。 当你在文本域中移动光标时,这些颜色可能会有所不同,从而导致xterm改变光标的颜色。

现在......有一些特殊的情况(参见 ShowCursorHideCursor 在xterm源中),但基本上它试图使用当前单元格的前景背景颜色(反过来)。 在ncurses中,你可以通过使用其中一个 inchin_wch 变化。 返回的数据包括 色对,您可以提取 色值 的前景背景,使用 对内容. 反过来做一个新的颜色对就差不多了(但你已经知道了。大胆 可以与渲染的颜色交互)。)

© www.soinside.com 2019 - 2024. All rights reserved.