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'