1 |
1275 |
phoenix |
Software cursor for VGA by Pavel Machek
|
2 |
|
|
======================= and Martin Mares
|
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 "[?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'
|