Software cursor for VGA    by Pavel Machek <pavel@atrey.karlin.mff.cuni.cz>
=======================     & Martin Mares <mj@atrey.karlin.mff.cuni.cz>

   Linux now has some ability to manipulate cursor appearance. Normally, you
can set the size of hardware cursor (and also work-around some ugly bugs in
those miserable Trident cards -- see #define TRIDENT_GLITCH in drivers/char/
vga.c). In case you enable "Software generated cursor" in the system
configuration, you can play 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. And maybe other
things I have never thought of.

   The cursor appearance is controlled by a "<ESC>[?1;2;3c" escape sequence
where 1, 2 and 3 are parameters described below. If you omit any of them,
they will default to zeroes.

   Parameter #1 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 background same
as foreground. (Highlights are ignored for the last two flags.)

   The second parameter selects character attribute bits you want to change
(by simple XOR'ing them with the value of this parameter). On standard VGA,
the high 4 bits specify background and the low 4 the foreground. In both
groups, low 3 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).

   And the third parameter consists of character attribute bits you want
to set. 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.


