Mauro Carvalho Chehab | 27641b9 | 2016-09-23 16:26:03 -0300 | [diff] [blame] | 1 | Software cursor for VGA |
| 2 | ======================= |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 3 | |
Mauro Carvalho Chehab | 27641b9 | 2016-09-23 16:26:03 -0300 | [diff] [blame] | 4 | by Pavel Machek <pavel@atrey.karlin.mff.cuni.cz> |
| 5 | and Martin Mares <mj@atrey.karlin.mff.cuni.cz> |
| 6 | |
Linus Torvalds | 5266e70 | 2016-12-13 11:18:24 -0800 | [diff] [blame] | 7 | Linux now has some ability to manipulate cursor appearance. Normally, |
| 8 | you can set the size of hardware cursor. You can now play a few new |
| 9 | tricks: you can make your cursor look like a non-blinking red block, |
| 10 | make it inverse background of the character it's over or to highlight |
| 11 | that character and still choose whether the original hardware cursor |
| 12 | should remain visible or not. There may be other things I have never |
| 13 | thought of. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 | |
Mauro Carvalho Chehab | 27641b9 | 2016-09-23 16:26:03 -0300 | [diff] [blame] | 15 | The cursor appearance is controlled by a ``<ESC>[?1;2;3c`` escape sequence |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 16 | where 1, 2 and 3 are parameters described below. If you omit any of them, |
| 17 | they will default to zeroes. |
| 18 | |
Mauro Carvalho Chehab | 27641b9 | 2016-09-23 16:26:03 -0300 | [diff] [blame] | 19 | first Parameter |
| 20 | specifies cursor size:: |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 21 | |
Mauro Carvalho Chehab | 27641b9 | 2016-09-23 16:26:03 -0300 | [diff] [blame] | 22 | 0=default |
| 23 | 1=invisible |
| 24 | 2=underline, |
| 25 | ... |
| 26 | 8=full block |
| 27 | + 16 if you want the software cursor to be applied |
| 28 | + 32 if you want to always change the background color |
| 29 | + 64 if you dislike having the background the same as the |
| 30 | foreground. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 31 | |
Mauro Carvalho Chehab | 27641b9 | 2016-09-23 16:26:03 -0300 | [diff] [blame] | 32 | Highlights are ignored for the last two flags. |
| 33 | |
| 34 | second parameter |
| 35 | selects character attribute bits you want to change |
| 36 | (by simply XORing them with the value of this parameter). On standard |
| 37 | VGA, the high four bits specify background and the low four the |
| 38 | foreground. In both groups, low three bits set color (as in normal |
| 39 | color codes used by the console) and the most significant one turns |
| 40 | on highlight (or sometimes blinking -- it depends on the configuration |
| 41 | of your VGA). |
| 42 | |
| 43 | third parameter |
| 44 | consists of character attribute bits you want to set. |
| 45 | |
| 46 | Bit setting takes place before bit toggling, so you can simply clear a |
| 47 | bit by including it in both the set mask and the toggle mask. |
| 48 | |
Jonathan Corbet | 7358bb2 | 2016-10-26 16:14:52 -0600 | [diff] [blame] | 49 | Examples |
| 50 | -------- |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 51 | |
Mauro Carvalho Chehab | 27641b9 | 2016-09-23 16:26:03 -0300 | [diff] [blame] | 52 | To get normal blinking underline, use:: |
| 53 | |
| 54 | echo -e '\033[?2c' |
| 55 | |
| 56 | To get blinking block, use:: |
| 57 | |
| 58 | echo -e '\033[?6c' |
| 59 | |
| 60 | To get red non-blinking block, use:: |
| 61 | |
| 62 | echo -e '\033[?17;0;64c' |