VGA 软件光标

作者:Pavel Machek <pavel@atrey.karlin.mff.cuni.cz> 和 Martin Mares <mj@atrey.karlin.mff.cuni.cz>

Linux 现在具有一些操作光标外观的能力。通常,您可以设置硬件光标的大小。现在,您可以玩一些新花样:您可以使光标看起来像一个不闪烁的红色块,使其反转其所处字符的背景,或者高亮显示该字符,并且仍然可以选择原始硬件光标是否保持可见。可能还有我从未想到的其他事情。

光标外观由 <ESC>[?1;2;3c 转义序列控制,其中 1、2 和 3 是以下描述的参数。如果您省略任何一个参数,它们将默认为零。

第一个参数

指定光标大小

0=default
1=invisible
2=underline,
...
8=full block
+ 16 if you want the software cursor to be applied
+ 32 if you want to always change the background color
+ 64 if you dislike having the background the same as the
     foreground.

最后两个标志将忽略高亮。

第二个参数

选择您想要更改的字符属性位(只需将其与此参数的值进行 XOR 运算即可)。在标准 VGA 上,高四位指定背景,低四位指定前景。在这两个组中,低三位设置颜色(与控制台使用的普通颜色代码相同),最高有效位打开高亮显示(或者有时闪烁 - 这取决于您的 VGA 配置)。

第三个参数

由您想要设置的字符属性位组成。

位设置发生在位切换之前,因此您可以通过将其包含在设置掩码和切换掩码中来简单地清除一个位。

示例

要获得正常的闪烁下划线,请使用

echo -e '\033[?2c'

要获得闪烁块,请使用

echo -e '\033[?6c'

要获得红色不闪烁块,请使用

echo -e '\033[?17;0;64c'