termcap vs. terminfo

hansen at pegasus.UUCP hansen at pegasus.UUCP
Sun Feb 26 12:06:37 AEST 1984


Being on a System V machine, which supports termcap, that is getting ready
to convert to System V Release 2, which supports terminfo, I have found the
following table to be very handy in my own work for converting from termcap
to terminfo. It is a comparison between the termcap list as given in 4.2BSD
and the terminfo list given in SVR2, plus several entries that have been
added since SVR2 was put out.

There are four major columns below: the termcap name for each capability;
the name as used in a C program; the terminfo name; and, a short description
of the capability. The termcap name is further subdivided into three columns
depending on which database supports the given capability.

There are several reasons that there are still termcap names associated with
each terminfo entry. One is so that a termcap emulation package can be
supported. Another is that several tools use the termcap names as a two
character index into the tables. The most prominent reason, I think, is to
give some common base for discussion between users of termcap and users of
terminfo.

The termcap entries no longer supported were mostly subsumed by other entries.
For instance, "dC" is the padding for carriage return. It would now be noted
directly within the "cr" entry.

The bogus termcap name "MT" was never officially supported and is really "km".

The "ml" and "mu" capabilities are no longer supported at all. I don't know
why not.

I hope this table is of as much help to other people as it has been to me.
If there are any termcap entries around that are not listed below, I would
appreciate hearing about them.

					Tony Hansen
					AT&T-Information Systems
					pegasus!hansen

----------------
caps.vs.info
----------------
				Termcap vs Terminfo
				------- -- --------

----------------------+-------------------------------+-------------------------------------------
    termcap name      |				      |
       as  in	      |				      |	term-
term-	term-	      |				      |	info
cap	info	both  |	type	C variable name	      |	name	description
----------------------+-------------------------------+-------------------------------------------
		      |				      |
	AL	      |	str	parm_insert_line      |	il	Add #1 new blank lines (G*)
		CC    |	str	command_character     |	cmdch	Term. settable cmd char in prototype
	CM	      |	str	cursor_mem_address    |	mrcup	Memory relative cursor addressing.
	DC	      |	str	parm_dch	      |	dch	Delete #1 chars (G*)
	DL	      |	str	parm_delete_line      |	dl	Delete #1 lines (G*)
	DO	      |	str	parm_down_cursor      |	cud	Move cursor down #1 lines. (G*)
	IC	      |	str	parm_ich	      |	ich	Insert #1 blank chars (G*)
	K1	      |	str	key_a1		      |	ka1	Upper left of keypad
	K2	      |	str	key_b2		      |	kb2	Center of keypad
	K3	      |	str	key_a3		      |	ka3	Upper right of keypad
	K4	      |	str	key_c1		      |	kc1	Lower left of keypad
	K5	      |	str	key_c3		      |	kc3	Lower right of keypad
	LE	      |	str	parm_left_cursor      |	cub	Move cursor left #1 spaces (G)
	Nl	      |	num	num_labels	      |	nlab	# function key labels
	RI	      |	str	parm_right_cursor     |	cuf	Move cursor right #1 spaces. (G*)
	SF	      |	str	parm_index	      |	indn	Scroll forward #1 lines. (G)
	SR	      |	str	parm_rindex	      |	rin	Scroll backward #1 lines. (G)
	UP	      |	str	parm_up_cursor	      |	cuu	Move cursor up #1 lines. (G*)
	ac	      |	str	acs_chars	      |	acsc	Graphics char set pairs aAbBcC - defn=vt100.
		ae    |	str	exit_alt_charset_mode |	rmacs	End alternate character set
		al    |	str	insert_line	      |	il1	Add new blank line (*)
		am    |	bool	auto_right_margin     |	am	Terminal has automatic margins
		as    |	str	enter_alt_charset_mode|	smacs	Start alternate character set
bc		      |	str	combined with cub1    |		Backspace if not "^H"
	bl	      |	str	bell		      |	bel	Audible signal (bell)
bs		      |	bool	combined with cub1    |		Terminal can backspace with "^H"
		bt    |	str	back_tab	      |	cbt	Back tab
		bw    |	bool	auto_left_margin      |	bw	cub1 wraps from column 0 to last column
		cd    |	str	clr_eos		      |	ed	Clear to end of display (*)
		ce    |	str	clr_eol		      |	el	Clear to end of line
		ch    |	str	column_address	      |	hpa	Set cursor column (G)
		cl    |	str	clear_screen	      |	clear	Clear screen (*)
		cm    |	str	cursor_address	      |	cup	Cursor motion to row #1 col #2 (G)
		co    |	num	columns		      |	cols	Number of columns in a line
		cr    |	str	carriage_return	      |	cr	Carriage return (*)
		cs    |	str	change_scroll_region  |	csr	change to lines #1 thru #2 (vt100) (G)
	ct	      |	str	clear_all_tabs	      |	tbc	Clear all tab stops.
		cv    |	str	row_address	      |	vpa	Like hpa but sets row. (G)
dB		      |	num	combined with cub1    |		Number of millisec of bs delay needed
dC		      |	num	combined with cr      |		Number of millisec of cr delay needed
dF		      |	num	combined with ff      |		Number of millisec of ff delay needed
dN		      |	num	combined with cud1    |		Number of millisec of nl delay needed
dT		      |	num	combined with ht      |		Number of millisec of tab delay needed
		da    |	bool	memory_above	      |	da	Display may be retained above the screen
		db    |	bool	memory_below	      |	db	Display may be retained below the screen
		dc    |	str	delete_character      |	dch1	Delete character (*)
		dl    |	str	delete_line	      |	dl1	Delete line (*)
		dm    |	str	enter_delete_mode     |	smdc	Delete mode (enter)
		do    |	str	cursor_down	      |	cud1	Down one line
		ds    |	str	dis_status_line	      |	dsl	Disable status line
	ec	      |	str	erase_chars	      |	ech	Erase #1 characters (G)
		ed    |	str	exit_delete_mode      |	rmdc	End delete mode
		ei    |	str	exit_insert_mode      |	rmir	End insert mode;
		eo    |	bool	erase_overstrike      |	eo	Can erase overstrikes with a blank
		es    |	bool	status_line_esc_ok    |	eslok	Escape can be used on the status line
		ff    |	str	form_feed	      |	ff	Hardcopy terminal page eject (*)
		fs    |	str	from_status_line      |	fsl	Return from status line
	gn	      |	bool	generic_type	      |	gn	Generic line type (e.g. dialup, switch).
		hc    |	bool	hard_copy	      |	hc	Hardcopy terminal
		hd    |	str	down_half_line	      |	hd	Half-line down (forward 1/2 linefeed)
		ho    |	str	cursor_home	      |	home	Home cursor (if no cup)
	hs	      |	bool	has_status_line	      |	hs	Has extra "status line"
		hu    |	str	up_half_line	      |	hu	Half-line up (reverse 1/2 linefeed)
		hz    |	bool	tilde_glitch	      |	hz	Hazeltine; can't print ~'s
	i1	      |	str	init_1string	      |	is1	Terminal initialization string
	i2	      |	str	init_3string	      |	is3	Terminal initialization string
	iP	      |	str	init_prog	      |	iprog	Path name of program for init.
		ic    |	str	insert_character      |	ich1	Insert character
		if    |	str	init_file	      |	if	Name of file containing is
		im    |	str	enter_insert_mode     |	smir	Insert mode (enter);
		in    |	bool	insert_null_glitch    |	in	Insert mode distinguishes nulls
		ip    |	str	insert_padding	      |	ip	Insert pad after character inserted (*)
		is    |	str	init_2string	      |	is2	Terminal initialization string
	it	      |	num	init_tabs	      |	it	Tabs initially every # spaces.
		k0    |	str	key_f0		      |	kf0	Sent by function key f0.
		k1    |	str	key_f1		      |	kf1	Sent by function key f1.
		k2    |	str	key_f2		      |	kf2	Sent by function key f2.
		k3    |	str	key_f3		      |	kf3	Sent by function key f3.
		k4    |	str	key_f4		      |	kf4	Sent by function key f4.
		k5    |	str	key_f5		      |	kf5	Sent by function key f5.
		k6    |	str	key_f6		      |	kf6	Sent by function key f6.
		k7    |	str	key_f7		      |	kf7	Sent by function key f7.
		k8    |	str	key_f8		      |	kf8	Sent by function key f8.
		k9    |	str	key_f9		      |	kf9	Sent by function key f9.
	k;	      |	str	key_f10		      |	kf10	Has a meta key (shift, sets parity bit)
	kA	      |	str	key_il		      |	kil1	Sent by insert line.
	kB	      |	str	key_btab	      |	kcbt	Sent by back-tab key.
	kC	      |	str	key_clear	      |	kclr	Sent by clear screen or erase key.
	kD	      |	str	key_dc		      |	kdch1	Sent by delete character key.
	kE	      |	str	key_eol		      |	kel	Sent by clear-to-end-of-line key.
	kF	      |	str	key_sf		      |	kind	Sent by scroll-forward/down key
	kH	      |	str	key_ll		      |	kll	Sent by home-down key
	kI	      |	str	key_ic		      |	kich1	Sent by ins char/enter ins mode key.
	kL	      |	str	key_dl		      |	kdl1	Sent by delete line key.
	kM	      |	str	key_eic		      |	krmir	Sent by rmir or smir in insert mode.
	kN	      |	str	key_npage	      |	knp	Sent by next-page key
	kP	      |	str	key_ppage	      |	kpp	Sent by previous-page key
	kR	      |	str	key_sr		      |	kri	Sent by scroll-backward/up key
	kS	      |	str	key_eos		      |	ked	Sent by clear-to-end-of-screen key.
	kT	      |	str	key_stab	      |	khts	Sent by set-tab key
	ka	      |	str	key_catab	      |	ktbc	Sent by clear-all-tabs key.
		kb    |	str	key_backspace	      |	kbs	Sent by backspace key
		kd    |	str	key_down	      |	kcud1	Sent by terminal down arrow key
		ke    |	str	keypad_local	      |	rmkx	Out of "keypad transmit" mode
		kh    |	str	key_home	      |	khome	Sent by home key.
		kl    |	str	key_left	      |	kcub1	Sent by terminal left arrow key
	km	      |	bool	has_meta_key	      |	km	Has a meta key (shift, sets parity bit)
kn		      |	num	never supported	      |		Number of "other" keys
ko		      |	str	combined with key_*   |		Termcap entries for other non-function keys
		kr    |	str	key_right	      |	kcuf1	Sent by terminal right arrow key
		ks    |	str	keypad_xmit	      |	smkx	Put terminal in "keypad transmit" mode
	kt	      |	str	key_ctab	      |	kctab	Sent by clear-tab key
		ku    |	str	key_up		      |	kcuu1	Sent by terminal up arrow key
		l0    |	str	lab_f0		      |	lf0	Labels on function key f0 if not f0
	l1	      |	str	lab_f1		      |	lf1	Labels on function key f1 if not f1
	l2	      |	str	lab_f2		      |	lf2	Labels on function key f2 if not f2
	l3	      |	str	lab_f3		      |	lf3	Labels on function key f3 if not f3
	l4	      |	str	lab_f4		      |	lf4	Labels on function key f4 if not f4
	l5	      |	str	lab_f5		      |	lf5	Labels on function key f5 if not f5
	l6	      |	str	lab_f6		      |	lf6	Labels on function key f6 if not f6
	l7	      |	str	lab_f7		      |	lf7	Labels on function key f7 if not f7
	l8	      |	str	lab_f8		      |	lf8	Labels on function key f8 if not f8
	l9	      |	str	lab_f9		      |	lf9	Labels on function key f9 if not f9
	la	      |	str	lab_f10		      |	lf10	Labels on function key f10 if not f10
	le	      |	str	cursor_left	      |	cub1	Move cursor left one space.
	lh	      |	num	label_height	      |	lh	height of labels
		li    |	num	lines		      |	lines	Number of lines on screen or page
		ll    |	str	cursor_to_ll	      |	ll	Last line, first column (if no cup)
	lm	      |	num	lines_of_memory	      |	lm	Lines of memory if > lines.  0 => varies
	lw	      |	num	label_width	      |	lw	width of labels
ma		      |	str	combined with key_*   |		Arrow key map, used by vi version 2 only
	mb	      |	str	enter_blink_mode      |	blink	Turn on blinking
	md	      |	str	enter_bold_mode	      |	bold	Turn on bold (extra bright) mode
	me	      |	str	exit_attribute_mode   |	sgr0	Turn off all attributes
	mh	      |	str	enter_dim_mode	      |	dim	Turn on half-bright mode
		mi    |	bool	move_insert_mode      |	mir	Safe to move while in insert mode
	mk	      |	str	enter_secure_mode     |	invis	Turn on blank mode (chars invisible)
ml		      |	str	support dropped	      |		Memory lock on above cursor.
	mm	      |	str	meta_on		      |	smm	Turn on "meta mode" (8th bit)
	mo	      |	str	meta_off	      |	rmm	Turn off "meta mode"
	mp	      |	str	enter_protected_mode  |	prot	Turn on protected mode
	mr	      |	str	enter_reverse_mode    |	rev	Turn on reverse video mode
		ms    |	bool	move_standout_mode    |	msgr	Safe to move in standout modes
mu		      |	str	support dropped	      |		Memory unlock (turn off memory lock).
nc		      |	bool	combined with cr      |		No correctly working carriage return (DM2500,H2000)
		nd    |	str	cursor_right	      |	cuf1	Non-destructive space (cursor right)
nl		      |	str	combined with cud1    |		Newline character (default "\n")
ns		      |	bool	combined with ind     |		Terminal is a CRT but doesn't scroll.
	nw	      |	str	newline		      |	nel	Newline (behaves like cr followed by lf)
		os    |	bool	over_strike	      |	os	Terminal overstrikes
	pO	      |	str	prtr_non	      |	mc5p	Turn on the printer for #1 bytes.
	pb	      |	num	padding_baud_rate     |	pb	Lowest baud rate where padding needed
		pc    |	str	pad_char	      |	pad	Pad character (rather than null)
	pf	      |	str	prtr_off	      |	mc4	Turn off the printer
	pk	      |	str	pkey_key	      |	pfkey	Prog funct key #1 to type string #2
	pl	      |	str	pkey_local	      |	pfloc	Prog funct key #1 to execute string #2
	pn	      |	str	plab_norm	      |	pln	program label of funct key #1 with string #2
	po	      |	str	prtr_on		      |	mc5	Turn on the printer
	ps	      |	str	print_screen	      |	mc0	Print contents of the screen
pt		      |	bool	combined with it      |		Has hardware tabs (may need to be set with "is")
	px	      |	str	pkey_xmit	      |	pfx	Prog funct key #1 to xmit string #2
	r1	      |	str	reset_1string	      |	rs1	Reset terminal completely to sane modes.
	r2	      |	str	reset_2string	      |	rs2	Reset terminal completely to sane modes.
	r3	      |	str	reset_3string	      |	rs3	Reset terminal completely to sane modes.
	rP	      |	str	char_padding	      |	rmp	Like ip but when in replace mode
	rc	      |	str	restore_cursor	      |	rc	Restore cursor to position of last sc.
	rf	      |	str	reset_file	      |	rf	Name of file containing reset string.
	rp	      |	str	repeat_char	      |	rep	Repeat char #1 #2 times.  (G*)
	sa	      |	str	set_attributes	      |	sgr	Define the video attributes (G9)
	sc	      |	str	save_cursor	      |	sc	Save cursor position.
		se    |	str	exit_standout_mode    |	rmso	End stand out mode
		sf    |	str	scroll_forward	      |	ind	Scroll text up
		sg    |	num	magic_cookie_glitch   |	xmc	Number blank chars left by smso or rmso
		so    |	str	enter_standout_mode   |	smso	Begin stand out mode
		sr    |	str	scroll_reverse	      |	ri	Scroll text down
	st	      |	str	set_tab		      |	hts	Set a tab in all rows, current column.
		ta    |	str	tab		      |	ht	Tab to next 8 space hardware tab stop.
tc		      |	str			      |	use	Entry of similar terminal - must be last
		te    |	str	exit_ca_mode	      |	rmcup	String to end programs that use cup
		ti    |	str	enter_ca_mode	      |	smcup	String to begin programs that use cup
		ts    |	str	to_status_line	      |	tsl	Go to status line, column #1
		uc    |	str	underline_char	      |	uc	Underscore one char and move past it
		ue    |	str	exit_underline_mode   |	rmul	End underscore mode
ug		      |	num	combined with xmc     |		Number of blank chars left by us or ue
		ul    |	bool	transparent_underline |	ul	underline character overstrikes
		up    |	str	cursor_up	      |	cuu1	Upline (cursor up)
		us    |	str	enter_underline_mode  |	smul	Start underscore mode
		vb    |	str	flash_screen	      |	flash	Visible bell (may not move cursor)
		ve    |	str	cursor_normal	      |	cnorm	Make cursor appear normal (undo vs/vi)
	vi	      |	str	cursor_invisible      |	civis	Make cursor invisible
		vs    |	str	cursor_visible	      |	cvvis	Make cursor very visible
	vt	      |	num	virtual_terminal      |	vt	Virtual terminal number (CB/Unix)
	wi	      |	str	set_window	      |	wind	Current window is lines #1-#2 cols #3-#4
	ws	      |	num	width_status_line     |	wsl	# columns in status line
		xb    |	bool	beehive_glitch	      |	xsb	Beehive (f1=escape, f2=ctrl C)
		xn    |	bool	eat_newline_glitch    |	xenl	newline ignored after 80 cols (Concept)
	xo	      |	bool	xon_xoff	      |	xon	Terminal uses xon/xoff handshaking
xr		      |	bool	combined with cr      |		Return acts like ce \r \n (Delta Data)
		xs    |	bool	ceol_standout_glitch  |	xhp	Standout not erased by overwriting (hp)
		xt    |	bool	teleray_glitch	      |	xt	Tabs destructive, magic so char (t1061)
----------------------+-------------------------------+-------------------------------------------



More information about the Comp.unix.wizards mailing list