2016-09-24 03:26:03 +08:00
|
|
|
Software cursor for VGA
|
|
|
|
=======================
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2016-09-24 03:26:03 +08:00
|
|
|
by Pavel Machek <pavel@atrey.karlin.mff.cuni.cz>
|
|
|
|
and Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
|
|
|
|
2016-12-14 03:18:24 +08:00
|
|
|
Linux now has some ability to manipulate cursor appearance. Normally,
|
|
|
|
you can set the size of hardware cursor. You can now play a few new
|
|
|
|
tricks: you can make your cursor look like a non-blinking red block,
|
|
|
|
make it inverse background of the character it's over or to highlight
|
|
|
|
that character and still choose whether the original hardware cursor
|
|
|
|
should remain visible or not. There may be other things I have never
|
|
|
|
thought of.
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2016-09-24 03:26:03 +08:00
|
|
|
The cursor appearance is controlled by a ``<ESC>[?1;2;3c`` escape sequence
|
2005-04-17 06:20:36 +08:00
|
|
|
where 1, 2 and 3 are parameters described below. If you omit any of them,
|
|
|
|
they will default to zeroes.
|
|
|
|
|
2016-09-24 03:26:03 +08:00
|
|
|
first Parameter
|
|
|
|
specifies cursor size::
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
Highlights are ignored for the last two flags.
|
|
|
|
|
|
|
|
second parameter
|
|
|
|
selects character attribute bits you want to change
|
|
|
|
(by simply XORing them with the value of this parameter). On standard
|
|
|
|
VGA, the high four bits specify background and the low four the
|
|
|
|
foreground. In both groups, low three bits set color (as in normal
|
|
|
|
color codes used by the console) and the most significant one turns
|
|
|
|
on highlight (or sometimes blinking -- it depends on the configuration
|
|
|
|
of your VGA).
|
|
|
|
|
|
|
|
third parameter
|
|
|
|
consists of character attribute bits you want to set.
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2016-09-24 03:26:03 +08:00
|
|
|
Bit setting takes place before bit toggling, so you can simply clear a
|
|
|
|
bit by including it in both the set mask and the toggle mask.
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2016-10-27 06:14:52 +08:00
|
|
|
Examples
|
|
|
|
--------
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2016-09-24 03:26:03 +08:00
|
|
|
To get normal blinking underline, use::
|
|
|
|
|
|
|
|
echo -e '\033[?2c'
|
|
|
|
|
|
|
|
To get blinking block, use::
|
|
|
|
|
|
|
|
echo -e '\033[?6c'
|
|
|
|
|
|
|
|
To get red non-blinking block, use::
|
|
|
|
|
|
|
|
echo -e '\033[?17;0;64c'
|