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