##############################################################################
# Copyright 2019,2020 Thomas E. Dickey                                       #
#                                                                            #
# Permission is hereby granted, free of charge, to any person obtaining a    #
# copy of this software and associated documentation files (the "Software"), #
# to deal in the Software without restriction, including without limitation  #
# the rights to use, copy, modify, merge, publish, distribute, distribute    #
# with modifications, sublicense, and/or sell copies of the Software, and to #
# permit persons to whom the Software is furnished to do so, subject to the  #
# following conditions:                                                      #
#                                                                            #
# The above copyright notice and this permission notice shall be included in #
# all copies or substantial portions of the Software.                        #
#                                                                            #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
# DEALINGS IN THE SOFTWARE.                                                  #
#                                                                            #
# Except as contained in this notice, the name(s) of the above copyright     #
# holders shall not be used in advertising or otherwise to promote the sale, #
# use or other dealings in this Software without prior written               #
# authorization.                                                             #
##############################################################################
#
# Author: Thomas E. Dickey
#
# $Id: Caps-ncurses,v 1.8 2020/02/02 23:34:34 tom Exp $
#
#############################################################################
#
# TERMINFO EXTENSION CAPABILITIES
#
# This section is all comments (selected lines are copied/uncommented into
# specific "Caps" files).  The section describes what capabilities need to be
# squeezed out to get down to the XSI Curses standard set.  They are flagged
# with K.
#
# HP extensions
#
# These extensions follow ptr_non (replacing everything after it) in HP
# terminfo files.  Except for memory_lock and memory_unlock, they are
# functionally identical to SVr4 extensions, but they make the binary format
# different.  Grrr....
#
#memory_lock			meml	str	ml	-		-	----K	lock memory above cursor
#memory_unlock			memu	str	mu	-		-	----K	unlock memory
#plab_norm			pln	str	pn	-		-	-----	program label #1 to show string #2
#label_on			smln	str	LO	-		-	-----	turn on soft labels
#label_off			rmln	str	LF	-		-	-----	turn off soft labels
#key_f11			kf11	str	F1	-		-	-----	F11 function key
#key_f12			kf12	str	F2	-		-	-----	F12 function key
#key_f13			kf13	str	F3	-		-	-----	F13 function key
#key_f14			kf14	str	F4	-		-	-----	F14 function key
#key_f15			kf15	str	F5	-		-	-----	F15 function key
#key_f16			kf16	str	F6	-		-	-----	F16 function key
#key_f17			kf17	str	F7	-		-	-----	F17 function key
#key_f18			kf18	str	F8	-		-	-----	F18 function key
#key_f19			kf19	str	F9	-		-	-----	F19 function key
#key_f20			kf20	str	FA	-		-	-----	F20 function key
#key_f21			kf21	str	FB	-		-	-----	F21 function key
#key_f22			kf22	str	FC	-		-	-----	F22 function key
#key_f23			kf23	str	FD	-		-	-----	F23 function key
#key_f24			kf24	str	FE	-		-	-----	F24 function key
#key_f25			kf25	str	FF	-		-	-----	F25 function key
#key_f26			kf26	str	FG	-		-	-----	F26 function key
#key_f27			kf27	str	FH	-		-	-----	F27 function key
#key_f28			kf28	str	FI	-		-	-----	F28 function key
#key_f29			kf29	str	FJ	-		-	-----	F29 function key
#key_f30			kf30	str	FK	-		-	-----	F30 function key
#key_f31			kf31	str	FL	-		-	-----	F31 function key
#key_f32			kf32	str	FM	-		-	-----	F32 function key
#key_f33			kf33	str	FN	-		-	-----	F33 function key
#key_f34			kf34	str	FO	-		-	-----	F34 function key
#key_f35			kf35	str	FP	-		-	-----	F35 function key
#key_f36			kf36	str	FQ	-		-	-----	F36 function key
#key_f37			kf37	str	FR	-		-	-----	F37 function key
#key_f38			kf38	str	FS	-		-	-----	F38 function key
#key_f39			kf39	str	FT	-		-	-----	F39 function key
#key_f40			kf40	str	FU	-		-	-----	F40 function key
#key_f41			kf41	str	FV	-		-	-----	F41 function key
#key_f42			kf42	str	FW	-		-	-----	F42 function key
#key_f43			kf43	str	FX	-		-	-----	F43 function key
#key_f44			kf44	str	FY	-		-	-----	F44 function key
#key_f45			kf45	str	FZ	-		-	-----	F45 function key
#key_f46			kf46	str	Fa	-		-	-----	F46 function key
#key_f47			kf47	str	Fb	-		-	-----	F47 function key
#key_f48			kf48	str	Fc	-		-	-----	F48 function key
#key_f49			kf49	str	Fd	-		-	-----	F49 function key
#key_f50			kf50	str	Fe	-		-	-----	F50 function key
#key_f51			kf51	str	Ff	-		-	-----	F51 function key
#key_f52			kf52	str	Fg	-		-	-----	F52 function key
#key_f53			kf53	str	Fh	-		-	-----	F53 function key
#key_f54			kf54	str	Fi	-		-	-----	F54 function key
#key_f55			kf55	str	Fj	-		-	-----	F55 function key
#key_f56			kf56	str	Fk	-		-	-----	F56 function key
#key_f57			kf57	str	Fl	-		-	-----	F57 function key
#key_f58			kf58	str	Fm	-		-	-----	F58 function key
#key_f59			kf59	str	Fn	-		-	-----	F59 function key
#key_f60			kf60	str	Fo	-		-	-----	F60 function key
#key_f61			kf61	str	Fp	-		-	-----	F61 function key
#key_f62			kf62	str	Fq	-		-	-----	F62 function key
#key_f63			kf63	str	Fr	-		-	-----	F63 function key
#
# IBM extensions
#
# These extensions follow ptr_non (replacing everything after it) in IBM
# terminfo files.
#
# The places in the box[12] capabilities correspond to acsc characters, here is
# the mapping:
#
#	box1[0]  = ACS_ULCORNER
#	box1[1]  = ACS_HLINE
#	box1[2]  = ACS_URCORNER
#	box1[3]  = ACS_VLINE
#	box1[4]  = ACS_LRCORNER
#	box1[5]  = ACS_LLCORNER
#	box1[6]  = ACS_TTEE
#	box1[7]  = ACS_RTEE
#	box1[8]  = ACS_BTEE
#	box1[9]  = ACS_LTEE
#	box1[10] = ACS_PLUS
#
# The box2 characters are the double-line versions of these forms graphics.
#
#box_chars_1			box1	str	bx	-		-	----K	box characters primary set
#box_chars_2			box2	str	by	-		-	----K	box characters secondary set
#box_attr_1			batt1	str	Bx	-		-	----K	attributes for box1
#box_attr_2			batt2	str	By	-		-	----K	attributes for box2
#color_bg_0			colb0	str	d0	-		-	----K	background color 0
#color_bg_1			colb1	str	d1	-		-	----K	background color 1
#color_bg_2			colb2	str	d2	-		-	----K	background color 2
#color_bg_3			colb3	str	d3	-		-	----K	background color 3
#color_bg_4			colb4	str	d4	-		-	----K	background color 4
#color_bg_5			colb5	str	d5	-		-	----K	background color 5
#color_bg_6			colb6	str	d6	-		-	----K	background color 6
#color_bg_7			colb7	str	d7	-		-	----K	background color 7
#color_fg_0			colf0	str	c0	-		-	----K	foreground color 0
#color_fg_1			colf1	str	c1	-		-	----K	foreground color 1
#color_fg_2			colf2	str	c2	-		-	----K	foreground color 2
#color_fg_3			colf3	str	c3	-		-	----K	foreground color 3
#color_fg_4			colf4	str	c4	-		-	----K	foreground color 4
#color_fg_5			colf5	str	c5	-		-	----K	foreground color 5
#color_fg_6			colf6	str	c6	-		-	----K	foreground color 6
#color_fg_7			colf7	str	c7	-		-	----K	foreground color 7
#font_0				font0	str	f0	-		-	-----	select font 0
#font_1				font1	str	f1	-		-	-----	select font 1
#font_2				font2	str	f2	-		-	-----	select font 2
#font_3				font3	str	f3	-		-	-----	select font 3
#font_4				font4	str	f4	-		-	----K	select font 4
#font_5				font5	str	f5	-		-	----K	select font 5
#font_6				font6	str	f6	-		-	----K	select font 6
#font_7				font7	str	f7	-		-	----K	select font 7
#key_back_tab			kbtab	str	k0	-		-	-----	backtab key
#key_do				kdo	str	ki	-		-	----K	do request key
#key_command			kcmd	str	kd	-		-	----K	command-request key
#key_command_pane		kcpn	str	kW	-		-	----K	command-pane key
#key_end			kend	str	kw	-		-	-----	end key
#key_help			khlp	str	kq	-		-	-----	help key
#key_newline			knl	str	nl	-		-	----K	newline key
#key_next_pane			knpn	str	kv	-		-	----K	next-pane key
#key_prev_cmd			kppn	str	kp	-		-	----K	previous-command key
#key_prev_pane			kppn	str	kV	-		-	----K	previous-pane key
#key_quit			kquit	str	kQ	-		-	----K	quit key
#key_select			ksel	str	kU	-		-	-----	select key
#key_scroll_left		kscl	str	kz	-		-	----K	scroll left
#key_scroll_right		kscr	str	kZ	-		-	----K	scroll right
#key_tab			ktab	str	ko	-		-	----K	tab key
#key_smap_in1			kmpf1	str	Kv	-		-	----K	special mapped key 1 input
#key_smap_out1			kmpt1	str	KV	-		-	----K	special mapped key 1 output
#key_smap_in2			kmpf2	str	Kw	-		-	----K	special mapped key 2 input
#key_smap_out2			kmpt2	str	KW	-		-	----K	special mapped key 2 output
#key_smap_in3			kmpf3	str	Kx	-		-	----K	special mapped key 3 input
#key_smap_out3			kmpt3	str	KX	-		-	----K	special mapped key 3 output
#key_smap_in4			kmpf4	str	Ky	-		-	----K	special mapped key 4 input
#key_smap_out4			kmpt4	str	KY	-		-	----K	special mapped key 4 output
#key_smap_in5			kmpf5	str	Kz	-		-	----K	special mapped key 5 input
#key_smap_out5			kmpt5	str	KZ	-		-	----K	special mapped key 5 output
#appl_defined_str		apstr	str	za	-		-	----K	application-defined string
# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
# the IBM manual pages, so the cap name strings are guesses.  The terminfo
# names are almost certainly right, the termcap ones almost certainly wrong.
#key_smap_in6			kmpf6	str	k!	-		-	----K	special mapped key 6 input
#key_smap_out6			kmpt6	str	K@	-		-	----K	special mapped key 6 output
#key_smap_in7			kmpf7	str	k#	-		-	----K	special mapped key 7 input
#key_smap_out7			kmpt7	str	K$	-		-	----K	special mapped key 7 output
#key_smap_in8			kmpf8	str	k%	-		-	----K	special mapped key 8 input
#key_smap_out8			kmpt8	str	K^	-		-	----K	special mapped key 8 output
#key_smap_in9			kmpf9	str	k&	-		-	----K	special mapped key 9 input
#key_smap_out9			kmpt9	str	K*	-		-	----K	special mapped key 9 output
# Undocumented capabilities end here
#key_sf1			ksf1	str	S1	-		-	----K	special function key 1
#key_sf2			ksf2	str	S2	-		-	----K	special function key 2
#key_sf3			ksf3	str	S3	-		-	----K	special function key 3
#key_sf4			ksf4	str	S4	-		-	----K	special function key 4
#key_sf5			ksf5	str	S5	-		-	----K	special function key 5
#key_sf6			ksf6	str	S6	-		-	----K	special function key 6
#key_sf7			ksf7	str	S7	-		-	----K	special function key 7
#key_sf8			ksf8	str	S8	-		-	----K	special function key 8
#key_sf9			ksf9	str	S9	-		-	----K	special function key 9
#key_sf10			ksf10	str	SA	-		-	----K	special function key 10
# AIX version 3 documents different codes for F11, F12 and does not mention
# F13-F64.  AIX version 4 uses the same naming for F0-F63 as above.
#key_f11			kf11	str	k<	-		-	-----	function key 11
#key_f12			kf12	str	k>	-		-	-----	function key 12
# Undocumented capabilities end here.
#key_action			kact	str	kJ	-		-	----K	sent by action key
# The IBM docs say these capabilities are for table-drawing, and are
# valid only for aixterm descriptions.
#enter_topline_mode		topl	str	tp	-		-	----K	start top-line mode
#enter_bottom_mode		btml	str	bm	-		-	----K	start bottom-line mode
#enter_rvert_mode		rvert	str	rv	-		-	----K	start right-vertical mode
#enter_lvert_mode		lvert	str	lv	-		-	----K	start left-vertical mode
#
#############################################################################
#
# ALIAS DECLARATIONS
#
# Here we set up aliases for translating extensions into standard terminfo.
#
#---------------------------------- Termcap aliases -------------------------
#
# BSD aliases:
#
# This is a common error in many termcap files.  We'll get notified during
# translation when this (or any other alias) fires.
#
capalias	sb	sr	BSD	scroll text down
#
# AT&T extensions:
#
# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
# nonstandard capabilities.  Its signature is the KM capability, used to name
# some sort of keymap file.  EE, BO, CI, CV, XS, DS, FL and FE are in this
# set.  Comments in the original, and a little cross-checking with other AT&T
# documentation, seem to establish the following mappings:
#
capalias	BO	mr	AT&T	enter_reverse_mode
capalias	CI	vi	AT&T	cursor_invisible
capalias	CV	ve	AT&T	cursor_normal
capalias	DS	mh	AT&T	enter_dim_mode
#capalias	EE	me	AT&T	exit_attribute_mode
capalias	FE	LF	AT&T	label_on
capalias	FL	LO	AT&T	label_off
capalias	XS	mk	AT&T	enter_secure_mode
#
# We comment out EE because the conflicting XENIX EE is more common in
# old entries.
#
# XENIX extensions:
#
# These are the ones we know how to translate directly:
#
capalias	EE	mh	XENIX	exit_attribute_mode
capalias	GE	ae	XENIX	exit_alt_charset_mode
capalias	GS	as	XENIX	enter_alt_charset_mode
capalias	CF	vi	XENIX	cursor_invis
capalias	CO	ve	XENIX	cursor_normal
capalias	EN	@7	XENIX	key_end
capalias	HM	kh	XENIX	key_home
capalias	LD	kL	XENIX	key_dl
capalias	PD	kN	XENIX	key_npage
capalias	PN	po	XENIX	prtr_off
capalias	PS	pf	XENIX	prtr_on
capalias	PU	kP	XENIX	key_ppage
capalias	RT	@8	XENIX	kent
capalias	UP	ku	XENIX	kcuu1
capalias	G6	IGNORE	XENIX	double-ACS_ULCORNER
capalias	G7	IGNORE	XENIX	double-ACS_LLCORNER
capalias	G5	IGNORE	XENIX	double-ACS_URCORNER
capalias	G8	IGNORE	XENIX	double-ACS_LRCORNER
capalias	Gr	IGNORE	XENIX	double-ACS_LTEE
capalias	Gr	IGNORE	XENIX	double-ACS_RTEE
capalias	Gu	IGNORE	XENIX	double-ACS_BTEE
capalias	Gd	IGNORE	XENIX	double ACS_TTEE
capalias	Gh	IGNORE	XENIX	double-ACS_HLINE
capalias	Gv	IGNORE	XENIX	double-ACS_VLINE
capalias	Gc	IGNORE	XENIX	double-ACS_PLUS
capalias	GG	IGNORE	XENIX	acs-glitch
#
# IBM extensions:
#
capalias	kq	%1	IBM	key_help
#
# Iris extensions:
#
capalias	HS	mh	IRIS	enter_dim_mode
#
# Tektronix extensions:
#
capalias	KA	k;	Tek	key_f10
capalias	KB	F1	Tek	key_f11
capalias	KC	F2	Tek	key_f12
capalias	KD	F3	Tek	key_f13
capalias	KE	F4	Tek	key_f14
capalias	KF	F5	Tek	key_f15
capalias	BC	Sb	Tek	set_background
capalias	FC	Sf	Tek	set_foreground
#
# There are also the following:
#
#	XENIX	XENIX variable name	name clash with terminfo?
#	-----	-------------------	-------------------------
#	CL	key_char_left
#	CR	key_char_right
#	CW	key_change_window
#	HP	??
#	LF	key_linefeed 		label_off
#	NU	key_next_unlocked_cell
#	PL	??
#	PR	??
#	RC	key_recalc		remove_clock
#	RF	key_toggle_ref		req_for_input
#	WL	key_word_left
#	WR	key_word_right
#
# If you know what any of the question-marked ones mean, please tell us.
#
#--------------------------------- Terminfo aliases ------------------------
#
# IBM extensions:
#
infoalias	font0	s0ds	IBM	set0_des_seq
infoalias	font1	s1ds	IBM	set1_des_seq
infoalias	font2	s2ds	IBM	set2_des_seq
infoalias	font3	s3ds	IBM	set3_des_seq
infoalias	kbtab	kcbt	IBM	key_backtab
infoalias	ksel	kslt	IBM	key_select
#
# Some others are identical to SVr4/XPG4 capabilities, in particular:
# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################
# This is a table of ncurses user-definable capabilities which applications
# developers may have used.  ncurses may use the table to check consistency of
# types/parameters.  Applications may have defined others (such as screen's
# LP and NF), but where a standard capability is available, those alternatives
# are not listed here.
#
used_by ncurses
userdef	E3	str	-	clears the terminal's scrollback buffer.
userdef	RGB	bool	-	use direct colors with 1/3 of color-pair bits per color.
userdef	RGB	num	n	use direct colors with given number of bits per color.
userdef	RGB	str	-	use direct colors with given bit-layout.
userdef	TS	str	-	like "tsl", but uses no parameter.
userdef	U8	num	n	terminal does/does not support VT100 SI/SO when processing UTF-8 encoding.
userdef	XM	str	n	initialize alternate xterm mouse mode
userdef	grbom	str	-	disable real bold (not intensity bright) mode.
userdef	gsbom	str	-	enable real bold (not intensity bright) mode.
userdef	xm	str	-	mouse response, no parameters
userdef	xm	str	n	mouse response, p1 = y-ordinate
userdef	xm	str	nn	mouse response, p2 = x-ordinate
userdef	xm	str	nnn	mouse response, p3 = button
userdef	xm	str	nnns	mouse response, p4 = state, e.g., pressed or released
userdef	xm	str	nnnsn	mouse response, p5 = y-ordinate starting region
userdef	xm	str	nnnsnn	mouse response, p6 = x-ordinate starting region
userdef	xm	str	nnnsnnn	mouse response, p7 = y-ordinate ending region
userdef	xm	str	nnnsnnnn mouse response, p8 = x-ordinate ending region
#
used_by screen
userdef	AN	bool	-	turn on autonuke.
userdef	AX	bool	-	understands ANSI set default fg/bg color (\E[39m / \E[49m).
userdef	C0	str	-	use the string as a conversion table for font '0', like acsc.
userdef	C8	bool	-	terminal shows bold as high-intensity colors.
userdef	CE	str	-	switch cursor-keys back to normal mode.
userdef	CS	str	-	switch cursor-keys to application mode.
userdef	E0	str	-	switch charset 'G0' back to standard charset. Default is '\E(B'.
userdef	G0	bool	-	terminal can deal with ISO 2022 font selection sequences.
userdef	KJ	str	s	set the encoding of the terminal.
userdef	OL	num	n	set the screen program's output buffer limit.
userdef	S0	str	s	switch charset 'G0' to the specified charset. Default is '\E(%.'.
userdef	TF	bool	-	add missing capabilities to screen's termcap/info entry. (Set by default).
userdef	WS	str	nn	resize display. This capability has the desired width and height as arguments. SunView(tm) example: '\E[8;%d;%dt'.
userdef	XC	str	s	describe a translation of characters to strings depending on the current font.
userdef	XT	bool	-	terminal understands special xterm sequences (OSC, mouse tracking).
userdef	Z0	str	-	change width to 132 columns.
userdef	Z1	str	-	change width to 80 columns.
#
used_by tmux
userdef	Cr	str	-	restore the default cursor color.
userdef	Cs	str	s	set the cursor color.
userdef	Csr	str	n	change the cursor style, overriding Ss.
userdef	Ms	str	ss	store the current buffer in the host terminal's selection (clipboard).
userdef	Se	str	-	reset the cursor style to the terminal initial state.
userdef	Smulx	str	n	modify the appearance of underlines in VTE.
userdef	Ss	str	n	change the cursor style.
userdef	rmxx	str	-	reset ECMA-48 strikeout/crossed-out attributes.
userdef	smxx	str	-	set ECMA-48 strikeout/crossed-out attributes.
#
used_by xterm
userdef	kDC3	str	-	alt delete-character
userdef	kDC4	str	-	shift+alt delete-character
userdef	kDC5	str	-	control delete-character
userdef	kDC6	str	-	shift+control delete-character
userdef	kDC7	str	-	alt+control delete-character
userdef	kDN	str	-	shift down-cursor
userdef	kDN3	str	-	alt down-cursor
userdef	kDN4	str	-	shift+alt down-cursor
userdef	kDN5	str	-	control down-cursor
userdef	kDN6	str	-	shift+control down-cursor
userdef	kDN7	str	-	alt+control down-cursor
userdef	kEND3	str	-	alt end
userdef	kEND4	str	-	shift+alt end
userdef	kEND5	str	-	control end
userdef	kEND6	str	-	shift+control end
userdef	kEND7	str	-	alt+control end
userdef	kHOM3	str	-	alt home
userdef	kHOM4	str	-	shift+alt home
userdef	kHOM5	str	-	control home
userdef	kHOM6	str	-	shift+control home
userdef	kHOM7	str	-	alt+control home
userdef	kIC3	str	-	alt insert-character
userdef	kIC4	str	-	shift+alt insert-character
userdef	kIC5	str	-	control insert-character
userdef	kIC6	str	-	shift+control insert-character
userdef	kIC7	str	-	alt+control insert-character
userdef	kLFT3	str	-	alt left-cursor
userdef	kLFT4	str	-	shift+alt left-cursor
userdef	kLFT5	str	-	control left-cursor
userdef	kLFT6	str	-	shift+control left-cursor
userdef	kLFT7	str	-	alt+control left-cursor
userdef	kNXT3	str	-	alt next
userdef	kNXT4	str	-	shift+alt next
userdef	kNXT5	str	-	control next
userdef	kNXT6	str	-	shift+control next
userdef	kNXT7	str	-	alt+control next
userdef	kPRV3	str	-	alt previous
userdef	kPRV4	str	-	shift+alt previous
userdef	kPRV5	str	-	control previous
userdef	kPRV6	str	-	shift+control previous
userdef	kPRV7	str	-	alt+control previous
userdef	kRIT3	str	-	alt right-cursor
userdef	kRIT4	str	-	shift+alt right-cursor
userdef	kRIT5	str	-	control right-cursor
userdef	kRIT6	str	-	shift+control right-cursor
userdef	kRIT7	str	-	alt+control right-cursor
userdef	kUP	str	-	shift up-cursor
userdef	kUP3	str	-	alt up-cursor
userdef	kUP4	str	-	shift+alt up-cursor
userdef	kUP5	str	-	control up-cursor
userdef	kUP6	str	-	shift+control up-cursor
userdef	kUP7	str	-	alt+control up-cursor
userdef	ka2	str	-	vt220-keypad extensions
userdef	kb1	str	-	vt220-keypad extensions
userdef	kb3	str	-	vt220-keypad extensions
userdef	kc2	str	-	vt220-keypad extensions
#############################################################################
