Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Software cursor for VGA by Pavel Machek <pavel@atrey.karlin.mff.cuni.cz> |
| 2 | ======================= and Martin Mares <mj@atrey.karlin.mff.cuni.cz> |
| 3 | |
| 4 | Linux now has some ability to manipulate cursor appearance. Normally, you |
| 5 | can set the size of hardware cursor (and also work around some ugly bugs in |
| 6 | those miserable Trident cards--see #define TRIDENT_GLITCH in drivers/video/ |
| 7 | vgacon.c). You can now play a few new tricks: you can make your cursor look |
| 8 | like a non-blinking red block, make it inverse background of the character it's |
| 9 | over or to highlight that character and still choose whether the original |
| 10 | hardware cursor should remain visible or not. There may be other things I have |
| 11 | never thought of. |
| 12 | |
| 13 | The cursor appearance is controlled by a "<ESC>[?1;2;3c" escape sequence |
| 14 | where 1, 2 and 3 are parameters described below. If you omit any of them, |
| 15 | they will default to zeroes. |
| 16 | |
| 17 | Parameter 1 specifies cursor size (0=default, 1=invisible, 2=underline, ..., |
| 18 | 8=full block) + 16 if you want the software cursor to be applied + 32 if you |
| 19 | want to always change the background color + 64 if you dislike having the |
| 20 | background the same as the foreground. Highlights are ignored for the last two |
| 21 | flags. |
| 22 | |
| 23 | The second parameter selects character attribute bits you want to change |
| 24 | (by simply XORing them with the value of this parameter). On standard VGA, |
| 25 | the high four bits specify background and the low four the foreground. In both |
| 26 | groups, low three bits set color (as in normal color codes used by the console) |
| 27 | and the most significant one turns on highlight (or sometimes blinking--it |
| 28 | depends on the configuration of your VGA). |
| 29 | |
| 30 | The third parameter consists of character attribute bits you want to set. |
| 31 | Bit setting takes place before bit toggling, so you can simply clear a bit by |
| 32 | including it in both the set mask and the toggle mask. |
| 33 | |
| 34 | Examples: |
| 35 | ========= |
| 36 | |
| 37 | To get normal blinking underline, use: echo -e '\033[?2c' |
| 38 | To get blinking block, use: echo -e '\033[?6c' |
| 39 | To get red non-blinking block, use: echo -e '\033[?17;0;64c' |