Software cursor for VGA
=======================

by Pavel Machek <pavel@atrey.karlin.mff.cuni.cz>
and 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.  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.

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.

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.

	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.

Examples
--------

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'
