Cursor software para VGA por Pavel Machek ======================= y Martin Mares Linux ahora ha adquirido la capacidad de manipular la apariencia del cursor. Normalmente, se puede establecer el tamaño del cursor hardware (que también sirve para arreglar algunos fallos en las pobres tarjetas Trident, vea #define TRIDENT_GLITCH en drivers/video/vgacon.c). Actualmente, se pueden hacer nuevos trucos como son: que el cursor parezca un bloque rojo no intermitente; hacer que el cursor adopte el color inverso al fondo del caracter sobre el que se encuentra, de modo que quede resaltado; y también, elegir si queremos que el cursor hardware se debería mantener visible o no. Probablemente haya otras acciones en las que nunca pensé. La apariencia del cursor se controla mediante la secuencia de escape "[?1;2;;3c". En dicha secuencia 1, 2 y 3 son tres parámetros que a continuación se describen (en caso de omisión de alguno de los parámetros se adoptará como valor predeterminado el cero). El parámetro 1 especifica el tamaño del cursor (0=predeterminado, 1=invisible, 2=subrayado, ..., 8=bloque sólido) + 16 si se desea aplicar el cursor de software + 32 si pretende cambiar siempre el color de fondo + 64 si no se quiere tener el mismo color de fondo que de primer plano. La zona resaltada es ignorada por las dos últimas marcas. El parámetro 2 selecciona los bits de atributos que se desea cambiar (simplemente con una operación XOR con el valor de este parámetro). En VGA estándar, los cuatro bits más significativos especifican el fondo y los cuatro bits menos significativos indican el primer plano. En ambos grupos, los tres bits menos significativos establecen el color (como en los códigos de colores utilizados utilizados en la consola) y el bit más significativo activa el hecho de que resalte (o algunas veces la intermitencia, esto depende de la configuración de su VGA). El parámetro 3 se trata de un conjunto de bits de atributos que se quieren activar. La activación de los bits tiene lugar antes de la fijación de los bits, por tanto se puede poner a cero un bit simplemente incluyéndolo tanto en la máscara de configuración como en la máscara de fijado. Ejemplos: ========= Para conseguir una intermitencia normal en el subrayado, se utiliza: echo -e '\033[?2c' Para conseguir un bloque intermitente, se utiliza: echo -e '\033[?6c' Para conseguir un bloque no intermitente rojo, se utiliza: echo -e '\033[?17;0;64c' Traducido por Alfredo José Muela Romero para el proyecto NuLies.