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.

对于最后两个标志,高亮显示将被忽略。

第二个参数

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

第三个参数

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

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

示例

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

echo -e '\033[?2c'

要获得闪烁块,请使用

echo -e '\033[?6c'

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

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