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