| 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' |