vga-softcursor.rst 2.0 KB
Newer Older
1 2
Software cursor for VGA
=======================
L
Linus Torvalds 已提交
3

4 5 6 7
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
L
Linus Torvalds 已提交
8
can set the size of hardware cursor (and also work around some ugly bugs in
9 10 11
those miserable Trident cards [#f1]_. You can now play a few new tricks:
you can make your cursor look

L
Linus Torvalds 已提交
12 13 14 15 16
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.

17
The cursor appearance is controlled by a ``<ESC>[?1;2;3c`` escape sequence
L
Linus Torvalds 已提交
18 19 20
where 1, 2 and 3 are parameters described below. If you omit any of them,
they will default to zeroes.

21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
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.
L
Linus Torvalds 已提交
47

48 49
	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.
L
Linus Torvalds 已提交
50

51
.. [#f1] see ``#define TRIDENT_GLITCH`` in ``drivers/video/vgacon.c``.
L
Linus Torvalds 已提交
52 53 54 55

Examples:
=========

56 57 58 59 60 61 62 63 64 65 66
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'