xref: /linux/Documentation/admin-guide/vga-softcursor.rst (revision 9095bf25ea08135a5b74875dd0e3eeaddc4218a0)
19d85025bSMauro Carvalho ChehabSoftware cursor for VGA
29d85025bSMauro Carvalho Chehab=======================
39d85025bSMauro Carvalho Chehab
49d85025bSMauro Carvalho Chehabby Pavel Machek <pavel@atrey.karlin.mff.cuni.cz>
59d85025bSMauro Carvalho Chehaband Martin Mares <mj@atrey.karlin.mff.cuni.cz>
69d85025bSMauro Carvalho Chehab
7*5266e703SLinus TorvaldsLinux now has some ability to manipulate cursor appearance.  Normally,
8*5266e703SLinus Torvaldsyou can set the size of hardware cursor.  You can now play a few new
9*5266e703SLinus Torvaldstricks: you can make your cursor look like a non-blinking red block,
10*5266e703SLinus Torvaldsmake it inverse background of the character it's over or to highlight
11*5266e703SLinus Torvaldsthat character and still choose whether the original hardware cursor
12*5266e703SLinus Torvaldsshould remain visible or not.  There may be other things I have never
13*5266e703SLinus Torvaldsthought of.
149d85025bSMauro Carvalho Chehab
159d85025bSMauro Carvalho ChehabThe cursor appearance is controlled by a ``<ESC>[?1;2;3c`` escape sequence
169d85025bSMauro Carvalho Chehabwhere 1, 2 and 3 are parameters described below. If you omit any of them,
179d85025bSMauro Carvalho Chehabthey will default to zeroes.
189d85025bSMauro Carvalho Chehab
199d85025bSMauro Carvalho Chehabfirst Parameter
209d85025bSMauro Carvalho Chehab	specifies cursor size::
219d85025bSMauro Carvalho Chehab
229d85025bSMauro Carvalho Chehab		0=default
239d85025bSMauro Carvalho Chehab		1=invisible
249d85025bSMauro Carvalho Chehab		2=underline,
259d85025bSMauro Carvalho Chehab		...
269d85025bSMauro Carvalho Chehab		8=full block
279d85025bSMauro Carvalho Chehab		+ 16 if you want the software cursor to be applied
289d85025bSMauro Carvalho Chehab		+ 32 if you want to always change the background color
299d85025bSMauro Carvalho Chehab		+ 64 if you dislike having the background the same as the
309d85025bSMauro Carvalho Chehab		     foreground.
319d85025bSMauro Carvalho Chehab
329d85025bSMauro Carvalho Chehab	Highlights are ignored for the last two flags.
339d85025bSMauro Carvalho Chehab
349d85025bSMauro Carvalho Chehabsecond parameter
359d85025bSMauro Carvalho Chehab	selects character attribute bits you want to change
369d85025bSMauro Carvalho Chehab	(by simply XORing them with the value of this parameter). On standard
379d85025bSMauro Carvalho Chehab	VGA, the high four bits specify background and the low four the
389d85025bSMauro Carvalho Chehab	foreground. In both groups, low three bits set color (as in normal
399d85025bSMauro Carvalho Chehab	color codes used by the console) and the most significant one turns
409d85025bSMauro Carvalho Chehab	on highlight (or sometimes blinking -- it depends on the configuration
419d85025bSMauro Carvalho Chehab	of your VGA).
429d85025bSMauro Carvalho Chehab
439d85025bSMauro Carvalho Chehabthird parameter
449d85025bSMauro Carvalho Chehab	consists of character attribute bits you want to set.
459d85025bSMauro Carvalho Chehab
469d85025bSMauro Carvalho Chehab	Bit setting takes place before bit toggling, so you can simply clear a
479d85025bSMauro Carvalho Chehab	bit by including it in both the set mask and the toggle mask.
489d85025bSMauro Carvalho Chehab
497358bb2fSJonathan CorbetExamples
507358bb2fSJonathan Corbet--------
519d85025bSMauro Carvalho Chehab
529d85025bSMauro Carvalho ChehabTo get normal blinking underline, use::
539d85025bSMauro Carvalho Chehab
549d85025bSMauro Carvalho Chehab	echo -e '\033[?2c'
559d85025bSMauro Carvalho Chehab
569d85025bSMauro Carvalho ChehabTo get blinking block, use::
579d85025bSMauro Carvalho Chehab
589d85025bSMauro Carvalho Chehab	echo -e '\033[?6c'
599d85025bSMauro Carvalho Chehab
609d85025bSMauro Carvalho ChehabTo get red non-blinking block, use::
619d85025bSMauro Carvalho Chehab
629d85025bSMauro Carvalho Chehab	echo -e '\033[?17;0;64c'
63