19d85025bSMauro Carvalho ChehabSoftware cursor for VGA 29d85025bSMauro Carvalho Chehab======================= 39d85025bSMauro Carvalho Chehab 49d85025bSMauro Carvalho Chehabby Pavel Machek <pavel@atrey.karlin.mff.cuni.cz> 59d85025bSMauro Carvalho Chehaband Martin Mares <mj@atrey.karlin.mff.cuni.cz> 69d85025bSMauro Carvalho Chehab 7*5266e703SLinus TorvaldsLinux now has some ability to manipulate cursor appearance. Normally, 8*5266e703SLinus Torvaldsyou can set the size of hardware cursor. You can now play a few new 9*5266e703SLinus Torvaldstricks: you can make your cursor look like a non-blinking red block, 10*5266e703SLinus Torvaldsmake it inverse background of the character it's over or to highlight 11*5266e703SLinus Torvaldsthat character and still choose whether the original hardware cursor 12*5266e703SLinus Torvaldsshould remain visible or not. There may be other things I have never 13*5266e703SLinus Torvaldsthought of. 149d85025bSMauro Carvalho Chehab 159d85025bSMauro Carvalho ChehabThe cursor appearance is controlled by a ``<ESC>[?1;2;3c`` escape sequence 169d85025bSMauro Carvalho Chehabwhere 1, 2 and 3 are parameters described below. If you omit any of them, 179d85025bSMauro Carvalho Chehabthey will default to zeroes. 189d85025bSMauro Carvalho Chehab 199d85025bSMauro Carvalho Chehabfirst Parameter 209d85025bSMauro Carvalho Chehab specifies cursor size:: 219d85025bSMauro Carvalho Chehab 229d85025bSMauro Carvalho Chehab 0=default 239d85025bSMauro Carvalho Chehab 1=invisible 249d85025bSMauro Carvalho Chehab 2=underline, 259d85025bSMauro Carvalho Chehab ... 269d85025bSMauro Carvalho Chehab 8=full block 279d85025bSMauro Carvalho Chehab + 16 if you want the software cursor to be applied 289d85025bSMauro Carvalho Chehab + 32 if you want to always change the background color 299d85025bSMauro Carvalho Chehab + 64 if you dislike having the background the same as the 309d85025bSMauro Carvalho Chehab foreground. 319d85025bSMauro Carvalho Chehab 329d85025bSMauro Carvalho Chehab Highlights are ignored for the last two flags. 339d85025bSMauro Carvalho Chehab 349d85025bSMauro Carvalho Chehabsecond parameter 359d85025bSMauro Carvalho Chehab selects character attribute bits you want to change 369d85025bSMauro Carvalho Chehab (by simply XORing them with the value of this parameter). On standard 379d85025bSMauro Carvalho Chehab VGA, the high four bits specify background and the low four the 389d85025bSMauro Carvalho Chehab foreground. In both groups, low three bits set color (as in normal 399d85025bSMauro Carvalho Chehab color codes used by the console) and the most significant one turns 409d85025bSMauro Carvalho Chehab on highlight (or sometimes blinking -- it depends on the configuration 419d85025bSMauro Carvalho Chehab of your VGA). 429d85025bSMauro Carvalho Chehab 439d85025bSMauro Carvalho Chehabthird parameter 449d85025bSMauro Carvalho Chehab consists of character attribute bits you want to set. 459d85025bSMauro Carvalho Chehab 469d85025bSMauro Carvalho Chehab Bit setting takes place before bit toggling, so you can simply clear a 479d85025bSMauro Carvalho Chehab bit by including it in both the set mask and the toggle mask. 489d85025bSMauro Carvalho Chehab 497358bb2fSJonathan CorbetExamples 507358bb2fSJonathan Corbet-------- 519d85025bSMauro Carvalho Chehab 529d85025bSMauro Carvalho ChehabTo get normal blinking underline, use:: 539d85025bSMauro Carvalho Chehab 549d85025bSMauro Carvalho Chehab echo -e '\033[?2c' 559d85025bSMauro Carvalho Chehab 569d85025bSMauro Carvalho ChehabTo get blinking block, use:: 579d85025bSMauro Carvalho Chehab 589d85025bSMauro Carvalho Chehab echo -e '\033[?6c' 599d85025bSMauro Carvalho Chehab 609d85025bSMauro Carvalho ChehabTo get red non-blinking block, use:: 619d85025bSMauro Carvalho Chehab 629d85025bSMauro Carvalho Chehab echo -e '\033[?17;0;64c' 63