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 newtricks: you can make your cursor look like a non-blinking red block,make it inverse background of the character it’s over or to highlightthat character and still choose whether the original hardware cursorshould remain visible or not. There may be other things I have neverthought of.
The cursor appearance is controlled by a<ESC>[?1;2;3c escape sequencewhere 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=default1=invisible2=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 standardVGA, the high four bits specify background and the low four theforeground. In both groups, low three bits set color (as in normalcolor codes used by the console) and the most significant one turnson highlight (or sometimes blinking – it depends on the configurationof 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 abit 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'