You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

преди 21 години
преди 21 години
преди 21 години
преди 21 години
преди 21 години
преди 21 години
преди 21 години
преди 21 години
преди 21 години
преди 21 години
преди 21 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. $Id$
  2. o Colour does not work with all backends and all terminals. I tested
  3. many terminal emulators and tried to summarise which combinations
  4. worked properly and which ones did not.
  5. From termcap(5):
  6. set_a_background setab AB Set background
  7. color to #1, using
  8. ANSI escape
  9. set_a_foreground setaf AF Set foreground
  10. color to #1, using
  11. ANSI escape
  12. From the xterm terminfo:
  13. setab=\E[4%p1%dm, setaf=\E[3%p1%dm
  14. From the xterm-16color terminfo:
  15. (http://www.sct.gu.edu.au/~anthony/info/X/Xterm_xf86.terminfo)
  16. setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm,
  17. setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm,
  18. These values can be simply retrieved with a tigetstr() call.
  19. o I tested the following terminals:
  20. name $TERM $COLORTERM
  21. ------------------------------------------
  22. Linux console linux
  23. pterm xterm
  24. aterm xterm rxvt-xpm
  25. wterm xterm wterm-xpm
  26. Eterm xterm Eterm
  27. xterm xterm
  28. gnome-terminal xterm
  29. konsole xterm
  30. mlterm mlterm
  31. uxterm xterm
  32. o In most terminals, \e[3xm and \[4xm respectively set the foreground
  33. and background colours. x is a colour between 0 and 7 or the value
  34. 9 for default colour (may be transparent).
  35. \e[0m sets everything to normal, \e[1m sets bold, \e[5m sets blink
  36. and \e[7m sets inverse video.
  37. In ncurses, only 64 colour pairs are created, and A_BOLD (\e[1m) and
  38. A_BLINK (\e[5m) are used for foreground/background colour highlighting,
  39. hence creating 256 possible colour pairs.
  40. Different tests of blue on yellow:
  41. for invert in '' '\e[7m'; do
  42. for blink in '' '\e[5m'; do
  43. for bold in '' '\e[1m'; do
  44. echo -ne "$bold$blink$invert"'\e[33m\e[44m'hop'\e[0m '
  45. echo "($bold$blink$invert)"
  46. done
  47. done
  48. done
  49. Successfully works on:
  50. + Linux console
  51. + pterm
  52. + Eterm
  53. + aterm, wterm, rxvt
  54. Almost works on:
  55. + xterm (bright bg only works when fg is bright and then inverted,
  56. but then fg is not bright)
  57. Fails on:
  58. + mlterm (no bright colours, neither fg nor bg)
  59. + gnome-terminal (no bright bg)
  60. + konsole (no bright bg, $blink really blinks)
  61. o In an XTerm-compatible terminal, \e[9xm sets bright foreground
  62. and \e[10xm bright background colours. Documentation on this can be
  63. found at http://ftp.xfree86.org/pub/XFree86/4.2.1/doc/ctlseqs.TXT .
  64. Unfortunately all terminals don't support these escape sequences. Here
  65. is a testcase:
  66. for fgpre in 3 9; do for fg in 0 4 2 6 1 5 3 7; do
  67. for bgpre in 4 10; do
  68. echo -ne '\e['$fgpre$fg'm'
  69. for bg in 0 4 2 6 1 5 3 7; do echo -ne '\e['$bgpre$bg'm# '; done
  70. echo -ne '\e[0m '
  71. done
  72. echo ''
  73. done; echo ''; done
  74. Successfully tested on:
  75. + gnome-terminal
  76. + konsole
  77. + xterm
  78. + pterm
  79. Failed (\e[9x and \e[10x don't do anything) on:
  80. + Eterm
  81. + aterm, wterm, rxvt
  82. + mlterm
  83. + Linux console
  84. o How to draw bright colours on any terminal?
  85. '\e[93;104m' -> bright yellow on bright blue
  86. doesn't work on mlterm, gnome-terminal, konsole
  87. '\e[5;1;33;44m' -> bright yellow on bright blue
  88. doesn't work on mlterm, aterm/wterm/rxvt, Eterm, console
  89. '\e[5;1;33;44;93;104m' -> bright yellow on bright blue
  90. works on gnome-terminal, xterm, pterm, aterm/wterm/rxvt, console
  91. doesn't work on konsole
  92. o S-Lang:
  93. 256 character pairs are definable, but only 128 can be used. This is
  94. because slsmg.c's This_Color variable uses its 8th bit to indicate an
  95. alternate character set. Replacing a few 0x7F with 0xFF in sldisply.c
  96. works around the problem but gets rid of the alternate charset.
  97. o MS-DOS: all bright colours, bright backgrounds, and bright combinations
  98. work using <conio.h>. No need to kludge anything.