[README.moreColors]

The konsole adopted some ESC codes allowing to use extended
color spaces.

There is a predefined 256 color space compatible with his
xterm sister, and, even beyond that, a 3-byte RGB color space.

The ESC codes are as follows:

   ESC[ ... 38;2;<r>;<g>;<b> ... m   Select RGB foreground color
   ESC[ ... 48;2;<r>;<g>;<b> ... m   Select RGB background color

   ESC[ ... 38;5;<i> ... m       Select indexed foreground color
   ESC[ ... 48;5;<i> ... m       Select indexed background color

<r>,<g> and <b> are each values in the range of 0..255 and
represent the brightness as usual for the respective color.

<i> likely is a value in 0..256, but represents an indexed
color assignment composed as follows:

  0 ..  15 - System color, these are taken from the schema.
 16 .. 231 - Forms a 6x6x6 RGB color cube.
232 .. 255 - A gray scale ramp without black and white.

Try the tests/color-spaces.pl to visualize the assignment.


----------------------------------------------------------------

A note on conformance

The ISO 8613-6 standard (referenced by ECMA-48) defines colon (':')
as the sub-parameter separator for SGR 38 and 48. The format is:

  ESC[38:2:<i>:<r>:<g>:<b>m
  ESC[48:2:<i>:<r>:<g>:<b>m

where '<i>' is ignored.
Most modern terminal also support a variant where the
'<i>' paremeter is not specified at all.

  ESC[38:2:<r>:<g>:<b>m
  ESC[48:2:<r>:<g>:<b>m

In addition to that, a variant using semicolon (';') as
sub-parameter separator is very popular and supported.

  ESC[38;2;<r>;<g>;<b>m
  ESC[48;2;<r>;<g>;<b>m

Konsole accepts all three versions, as in the example below:

  ESC[38:2:<i>:<r>:<g>:<b>m
  ESC[38:2:<r>:<g>:<b>m
  ESC[38;2;<r>;<g>;<b>m

For 256 color mode, this is compatible with xterm and perhaps
with other xterm compatible terminal emulations.


| ------- Additional Comments From awendt putergeek com  2006-06-07 07:40 -------
| > So a parameter substring is 0-9 and the colon. The semicolon separates
| > sub-parameters. Thus 48:5:<Color> would be one sub-parameter, and
| > 48;5;<Color> many independent, each having an independent meaning in case
| > of a selective parameter.
| 
| 
| I think you may be onto something here with the colons... I was able to find 
| ITU T.416 (which is the same as ISO 8613-6) and it says:
| 
| --- snip ---
| 
| The parameter values 38 and 48 are followed by a parameter substring used to 
| select either the character foreground ?colour value? or the character 
| background ?colour value?.
| 
| A parameter substring for values 38 or 48 may be divided by one or more 
| separators (03/10) into parameter elements, denoted as Pe. The format of such 
| a parameter sub-string is indicated as:
| 
|          Pe : P ...
| 
| Each parameter element consists of zero, one or more bit combinations from 
| 03/00 to 03/09, representing the digits 0 to 9. An empty parameter element 
| represents a default value for this parameter element. Empty parameter 
| elements at the end of the parameter substring need not be included.
| 
| The first parameter element indicates a choice between:
| 
|            0   implementation defined (only applicable for the character 
| foreground colour)
|            1   transparent;
|            2   direct colour in RGB space;
|            3   direct colour in CMY space;
|            4   direct colour in CMYK space;
|            5   indexed colour.
| 
| If the first parameter has the value 0 or 1, there are no additional parameter 
| elements.
| 
| If the first parameter element has the value 5, then there is a second 
| parameter element specifying the index into the colour table given by the 
| attribute ?content colour table? applying to the object with which the 
| content is associated.
| 
| --- snip ---
| 
| The separator character 03/10 they use is a colon, not a semicolon... I wonder 
| if the xterm implementation was based on an improper reading of the standard?
| 
