summaryrefslogtreecommitdiffstats
path: root/konsole/doc/More/vt100_colorized_termcap.txt
blob: 0a5470b45212173a7ac60bb606e961775dedf78b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
Article 3992 of comp.terminals:
Path: cs.utk.edu!gatech!howland.reston.ans.net!vixen.cso.uiuc.edu!uwm.edu!msunews!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!newshost.gu.edu.au!news
From: Tony Nugent <T.Nugent@sct.gu.edu.au>
Newsgroups: comp.terminals
Subject: (howto) Set up a custom (colour) vt term
Date: 30 Apr 1995 06:35:49 GMT
Organization: Griffith University Brisbane Queensland Australia
Lines: 371
Message-ID: <3nvb45$2kl@griffin.itc.gu.edu.au>
Reply-To: T.Nugent@sct.gu.edu.au
NNTP-Posting-Host: kraken.itc.gu.edu.au
Summary: How to set up a customised term entry
Keywords: vt100 vt102 vt220 ansi colour terminfo termcap term

G'day all!

Here is something that I wrote a little while ago (with some more
recent changes) for someone who asked me how to set up a
customised TERMINFO and TERMCAP entry.

I've never seen this in any FAQ, and I thought that others might
be interested in this too, so I've posted it.  It took me *ages*
and lots of trial and error to figure out how to do this
properly, but the process is actually quite simple once you have
the man pages figured out :)

I would appreciate any comments, corrections or suggestions to
this... I'm posting it here into comp.terminals as a "beta"
document as I'm sure that this could be refined some more.

========8<----insert-crowbar-here------------------------------

I presume that you understand the basics of ansi and vt-term
escape sequences.

I use a customised vt220 term to get colours instead of boring
black and white text on my pc screen when I'm logged into my
account over a modem.  My comms program is emulating vt100/220
with my screen in 50 line mode (49 lines + one for my comms
program's status line).

The system here with my account is a Sparc running Solaris 2.3,
SunOS 5.3 - but this also works under SGI IRIX and SunOS 4.3.1
(remote vt-term login).  I use tcsh as my default login shell
(I'll eventually try out ksh once I have some time :-)

Here is my customised termcap entry, produced by the "infocmp -1"
command...

========8<-----------cut-here------------>8====================
#	Reconstructed via infocmp from file: /home/tnugent/.terminfo/v/vt220
vt220|vt-220|dec colour vt220,
	xon,
	cols#80, lines#49, vt#3,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m\E[32;44m$<2>,
	clear=\E[;H\E[2J$<50>, cnorm=\E[?7h\E[0;2;1;36m,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=\b, cud1=\n,
	cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>,
	cuu1=\E[A$<2>, cvvis=\E[?7l, ed=\E[J$<50>,
	el=\E[K$<3>, home=\E[H, ht=\t, ind=\n,
	is2=\E[1;49r\E[49;1H, kbs=\b, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, kf0=\E[29~, kf1=\EOP,
	kf10=\E[29~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[17~,
	kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~,
	rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=\E(B$<4>,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[7m\E[0;1;36m$<2>,
	rmul=\E[m\E[0;1;36m$<2>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E1;36m\E[?8h, sc=\E7,
	sgr0=\E[m\E[1;36m$<2>, smkx=\E[?1h\E=,
	smso=\E[m\E[1;33;44m$<2>, smul=\E[4m\E[1;32m$<2>,
========8<-----------cut-here------------>8====================

For the explaination of what all this means, see "man terminfo";
also try "man termcap", but this man page is often not there.

It's set for a default of 49 lines, but if you only use 24 then
change it in the entry, but I'll explain how to easily reset it
manually with some aliases.

Otherwise edit this however you like.  You'll recognise all the
"ansi" escape sequences up there.  Customise the colour ones as
desired, but after trial and error I've found these to be quite
acceptable.  Some of the entries might need some more refining,
but this works.  Bold, underline, reverse and norm are all in
colour.  I've thought about adding an entry for italic (sitm and
ritm), but I haven't got around to this yet.

I've called this "vt220", but it really isn't (although
compatable).  I've found it better to use a "common" name rather
than an unusual one, or else I tend to get "unknown term type,
using dumb terminal settings" complaints when I rlogin or telnet
into other accounts.

vt220 is defined in /etc/termcap here as:

de|vt220|DEC VT220 in vt100 emulation mode:\
	:tc=vt100:

so vt220 actually uses vt100 anyway.  They are similar, but vt220
defines more of the F (function) keys.  Other differences are
trivial (and I haven't noticed many from what I've been able to
ascertain from a scattering of "non-authoritative" sources).

Create a ~/.terminfo/ directory, and save this terminfo entry in
a file called ~/.terminfo/terminfo.src

Now change to this directory and append the other terminal
entries that you might use onto the end of this file (except for
vt220):

% echo $term
% infocmp >> terminfo.src
% infocmp vt100 >> terminfo.src
% infocmp xterm >> terminfo.src

etc.  Check it's general format what you find in /etc/termcap to
make sure that it's similar.

Now do this (in the ~/.terminfo/ directory):

% setenv TERMINFO ~/.terminfo
% tic

After running tic (it uses the terminfo.src file), you should see
a new directory called ~/.terminfo/v/ (and perhaps others) which
has the termcap entries compiled from the terminfo.src file.

Now, do this:

% set term=vt220

You *should* immediately see a change in colour of normally white
(or grey) text to a light bright blue (see "norm=" above).  If
you have tcsh as your shell, then try the prompts below to see
some nice bold and reverse colour.  Man pages should now also
demostrate this too (especially if you have setenv PAGER "less -s
-I").  Nice change, eh?  :-)

Ok, now to make this change permanent...

Cut this shell script out, save it in ~/.terminfo/maketc and
"chmod +x maketc" to make it executable:

========8<-----------cut-here------------>8====================
#!/bin/sh
#
# Make a TERMCAP entry
#
# Use:
#    maketc [termtype] 
#
# setenv TERMCAP `maketc [termtype]`
#
# There's probably a better way to do this
#
infocmp -C $1 | \
  sed -e '/^#/d' -e '3,$s/[	 ]//g' -e 's/:\\$//' | \
  awk '{printf("%s",$0)}'
echo ""
# NB: that's a Tab and a space in between the []'s!
# Is there a way to get sed to strip out newlines?
========8<-----------cut-here------------>8====================

Now try this (using this new term setting):

% maketc

Ugly, yes?  :)

Create a ~/.terminfo/TERMCAP.vt220 file by redirecting this output:

% maketc vt220 > TERMCAP.vt220

(alternatively, use " setenv TERMCAP `cat ~/.terminfo/maketc` "
below instead).

Put the following lines in your ~/.login file, or into another
file (say, ~/.termrc) and source it from ~/.login...

========8<-----------cut-here------------>8====================
# Please customise this!
#
if ( ! $?term ) then
  set term=vt102
  setenv TERM vt102
endif
#
switch($term)
#
  case 'vt220':
  case 'vt102':
    stty rows 49
    stty columns 80
    setenv LINES 49
    setenv COLUMNS 80
    echo Assuming \($term with $LINES rows\)
    breaksw
  case 'vt100':
    stty rows 24
    stty columns 80
    setenv LINES 24
    setenv COLUMNS 80
    breaksw
  case 'xterm':
    eval `/usr/openwin/bin/resize`
    stty rows $LINES
    stty cols $COLUMNS
  default:
    breaksw
endsw
#
# Set colour if on a vt100, vt102 or vt220
#
if ( $TERM == vt102 || $TERM == vt100 || $TERM == vt220 ) then
  setenv TERMINFO ~/.terminfo
  set term=vt220
  setenv TERM vt220
  setenv TERMCAP `cat ${TERMINFO}/TERMCAP.vt220`
  # setenv TERMCAP `~/.terminfo/maketc`
endif
#
# Set variables: NORM BOLD OFFBOLD ULINE OFFULINE REV
#
setenv NORM `tput cnorm`
setenv REV `tput rev`
setenv BOLD `tput smso`
setenv OFFBOLD `tput smso`
setenv ULINE `tput smul`
setenv OFFUL `tput rmul`
#
echo ""
echo "${BOLD}TERMINFO is now: $NORM$TERMINFO"
echo "${BOLD}TERMCAP  is now: $NORM"
echo "$TERMCAP"
echo ""
#
echo -n "${ULINE}"\$TERM"$NORM is $BOLD $TERM $NORM and "
echo    "${ULINE}"\$term"$NORM is $BOLD $term ${NORM}"
echo -n "$BOLD $LINES $NORM ${ULINE}rows${NORM} "
echo    "$BOLD $COLUMNS $NORM ${ULINE}columns${NORM}"
echo ""
#
echo -n "${REV}reverse${NORM}  "
echo -n "${BOLD}bold${NORM}  "
echo -n "${ULINE}underline${OFFUL} "
echo "$NORM"
echo -n "${REV}${BOLD} reverse-bold ${NORM} "
echo -n "${REV}${ULINE} reverse-underline ${NORM} "
echo -n "${BOLD}${ULINE} bold-underline ${NORM} "
echo -n "${REV}${BOLD}${ULINE} reverse-bold-underline ${NORM} "
echo ""
#
echo -n tset:
/usr/ucb/tset -I -Q -
#
========8<-----------cut-here------------>8====================

It's a bit overdone, but it will show you what's going on.
Warnings.... on some unix'es, stty does not have "rows" or
"columns" options.  And if you ever use those global variables
for anything, enclose the variables in quotes like I have above.

Next time you log in (with csh or tcsh), ~/.login is sourced
(after ~/.cshrc) and you will automatically have this customised
colour terminal enabled.

To make switching term very easy, I use a few aliases.  I have
the following in a ~/.alias file that I source from ~/.cshrc...

========8<-----------cut-here------------>8====================
# ~/.alias
# sourced from ~/.cshrc
#...
#...
#
#-------- Terminal setup ------------
#
a cls		'clear'
a seterm	'setenv TERM \!:1 ; set term=\!:1'
a vt102		'unsetenv TERMINFO ; unsetenv TERMCAP ; seterm vt102'
a vt220		'colour'
a colour	'setenv TERMINFO ~/.terminfo ; \
		setenv TERMCAP `cat ${TERMINFO}/TERMCAP` ; seterm vt220'
a rows		'stty rows \!:1    ; setenv LINES \!:1   ; cols 80'
a cols		'stty columns \!:1 ; setenv COLUMNS \!:1 '
a setsize	'rows \!:1 ; echo $LINES line mode'
a 49		'setsize 49'
a 50		'49'
a 24		'setsize 24'
a 25		'24'
#
a vtn		'echo -n "^[[m^[(B^[)0^O^[[?5l^[7^[[r^[8"'
#                         ^^  ^^  ^^  ^^^^    ^^ ^^  ^^
#                         Esc Esc  Esc Ctrl-O EscEsc Esc
# If the vtn alias doesn't work correctly, then try this:
# a vtn		'echo "X[mX(BX)0OX[?5lX7X[rX8" | tr '\''XO'\'' '\''\033\017'\'''
#
#
#... other aliases ...
========8<-----------cut-here------------>8====================

The vtn alias has been piped through cat -v to make the control
codes look like their two-character representation.  Edit the
echo'ed string so that the ^[ characters are real escape
characters and ^O is a control-O.  Or comment out that line and
use the one below it that uses the tr command.  This alias is
very, VERY handy for resetting a vt100 style screen if it gets
screwed up with an accidental character set sequence (see any
vt100 term escape code reference).

If you want to see some interesting colourful prompts and you use
tcsh, then try sourcing this:

========8<-----------cut-here------------>8====================
# Primary tcsh command prompt
#
# simple looking one
# set prompt='$S%?%s %B%/-%b%U%h%u-%U%#%u%L'
#
# set prompt='%S%l%s|%U%?%u[%B%t%b]%S%~%s-%B%h%b-%U%#%u%L'
# set prompt='%u%s%b[%U%m%u|%U%~%u][%S%t%s][%B%h%b][%S%?%s]%U-%#%u%L'
# set prompt='%B%b[%S%?%s][%S%t%s][%B%h%b][%U%m%u|%U%~%u]%U-%#%u%L'
  set prompt='%B%b[%S%?%s][%U%t%u][%S%m%s|%S%~%s][%B%h%b]%U-%#%u%L'
#
# prompt2
# Used wherever normal csh prompts with a question mark.
#
# set prompt2='%B%R?>%b '
  set prompt2='%B%R%b%S?%s%L'
#
# prompt3
# Used  when displaying  the  corrected command line when automatic
# spelling correction is in effect.
#
# set prompt3='CORRECT>%R (y|n|e)?'
# set prompt3='%BCORRECT%b%S>%s%R (%By%b|%Bn%b|%Be%b)%S?%s%L'
  set prompt3='%{%}CORRECT%S>%s%R (%By%b|%Bn%b|%Be%b)%S?%s%L'
========8<-----------cut-here------------>8====================

Note how the red colour is manually put into prompt3.  It's
possible to put colour sequences into the prompts of all the
common shells (check its man page).

For more info check out:

1. The man pages for:
	terminfo, (termcap), stty, tput, infocmp, captoinfo, tic
	(and the man pages in the "see also" sections).

2. The file /etc/termcap

3. The comp.terminals ftp archive site:
	cs.utk.edu :: /pub/shuford/terminal/
   You should be able to find at least one file there that
   explains all the vt100 control sequences.

4. I've got a file with the vt102 and ansi escape sequences in it.
   If you want a copy, just let me know.

5. I've never seen it, but for a color xterm check this out:
	X11R5 and X11R6 versions:
	ftp.x.org	/R5contrib/color_xterm.tar.Z
	ftp.x.org	/contrib/utilities/color-xterm-R6-patch.README
	ftp.x.org	/contrib/utilities/color-xterm-R6pl5-patch.gz
	ftp.x.org	/contrib/utilities/colour_xterm.tar.gz

Enjoy!

Tony
T.Nugent@sct.gu.edu.au
04/23/95
========8<----insert-crowbar-here------------------------------

All comments very much appreciated.

Cheers
Tony
        MMM             \|/              www              __^__
       (o o)            @ @             (o o)            /(o o)\
  -.ooO-(_)-Ooo.-+-.oOO-(_)-OOo.-+-.oOO--(_)--OOo.-+-.oOO==(_)==OOo.-----+
  |    Tony Nugent  |-| Griffith University  T.Nugent@sct.gu.edu.au      |--.
  |     __'!`__     | | Brisbane, Queensland tnugent@gucis.cit.gu.edu.au |  |
  |      (o o)      | | Australia                                        |  |
  `-ooO---(=)---Ooo-' `--------------------------------------------------'  |
    `------------------' `--------------------------------------------------'


Article 3993 of comp.terminals:
Path: cs.utk.edu!gatech!swrinde!hookup!news.moneng.mei.com!uwm.edu!msunews!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!newshost.gu.edu.au!news
From: Tony Nugent <T.Nugent@sct.gu.edu.au>
Newsgroups: comp.terminals
Subject: Re: (howto) Set up a custom (colour) vt term
Date: 30 Apr 1995 07:17:03 GMT
Organization: Griffith University Brisbane Queensland Australia
Lines: 35
Message-ID: <3nvdhf$36j@griffin.itc.gu.edu.au>
References: <3nvb45$2kl@griffin.itc.gu.edu.au>
Reply-To: T.Nugent@sct.gu.edu.au
NNTP-Posting-Host: kraken.itc.gu.edu.au
Keywords: vt100 vt102 vt220 ansi colour terminfo termcap term

Tony Nugent <T.Nugent@sct.gu.edu.au> writes:

Sorry about this:

[munch]

>To make switching term very easy, I use a few aliases.  I have
>the following in a ~/.alias file that I source from ~/.cshrc...

>========8<-----------cut-here------------>8====================
># ~/.alias
># sourced from ~/.cshrc
>#...

alias a		'alias'

>#...
>#
>#-------- Terminal setup ------------
>#
>a cls		'clear'
>a seterm	'setenv TERM \!:1 ; set term=\!:1'

[munch]

I forgot to mention that I have the alias command aliased to "a".

Cheers
Tony
    /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/~\
   | Tony Nugent  Griffith University, Brisbane, Queensland, Australia| _ |
   |      Email:  T.Nugent@sct.gu.edu.au  tnugent@gucis.cit.gu.edu.au | @||
    \__________________________________________________________________\_/|
    /  Pull here for the full .sig or use finger on the second address   /
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~