Павел Мачек (Pavel Machek) и Мартин Марес (Martin Mares), перевод Олега Смагина aka saturn721
2009-07-29
Оригинал: Software cursor for VGA
Теперь в Linux имеются некоторые возможности по управлению видом курсора. Раньше вы могли установить размер «hardware»-курсора, а также обойти некоторые уродливые ошибки в жалких картах Trident:
#define TRIDENT_GLITCH in drivers/video/vgacon.c
Теперь вы можете баловаться с некоторыми новыми трюками: вы можете придать своему курсору форму немерцающего красного прямоугольника, обращать фон символа или подсвечивать символ, на который установлен курсор, и еще решать, следует ли оставаться видимым исходному аппаратному курсору. Имеются и многие другие возможности, о которых мы и не задумывались.
Вид курсора управляется escape-последовательностью, где 1, 2, и 3 параметры, описанные ниже. Если вы их не указываете, то по умолчанию они имеют нулевое значение.
Параметр 1 определяет размер курсора (0=default, 1=invisible, 2=underline, ..., 8=full block) + 16, если вы хотите появления программного курсора, + 32, если вы хотите, чтобы всегда изменялся цвет фона, + 64, если вы не хотите, чтобы цвет фона мог совпадать с цветом переднего плана. При наличии последних двух флагов флаг подсвечивания игнорируется.
Второй параметр позволяет выбрать биты атрибутов символов, которые вы хотите изменить (простым их сложением по модулю 2 со значением этого параметра). В стандарте VGA старшие четыре бита определяют фон, а младшие четыре передний план. В обеих группах нижние три бита устанавливают цвет (как в обычных цветовых кодах, используемых в консоли), старший из них включает подсветку (или иногда мерцание — это зависит от настройки вашей VGA).
Третий параметр содержит биты атрибутов символов, которые вы хотите установить. Установка бит происходит до их переключения, так что вы можете просто очистить бит, включив его как маску установки, так и маску переключения.
Примеры:
Получить обычное мерцающее подчеркивание:
echo -e '\033[?2c'
Получить мерцающий прямоугольник:
echo -e '\033[?6c'
Получить красный, не мерцающий прямоугольник:
echo -e '\033[?17;0;64c'