forked from JuliaLang/julia
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathterminfo_data.jl
796 lines (766 loc) · 57.6 KB
/
terminfo_data.jl
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
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
# This file is a part of Julia. License is MIT: https://julialang.org/license
# Updating this listing is fairly easy, assuming existence of a unix system,
# posix shell, and `awk`. Just update the version string in the commented out
# `NCURSES_VERSION` variable, and run this file. This works because this file is
# a bit of a quine.
#=
awk '/^#=run/{flag=1;next}/=#/{flag=0}flag{gsub(/__FILE__/,"\"'"$0"'\"");print}' "$0" | \
julia --startup-file=no -E 'readchomp("/dev/fd/0") |> Meta.parse |> eval' && echo "Done"; exit
=#
"""
struct TermCapability
Specification of a single terminal capability.
!!! warning
This is not part of the public API, and thus subject to change without notice.
# Fields
- `name::Symbol`: The name of the terminfo capability variable
- `capname::Symbol`: The *Cap-name* of the capability
- `description::String`: A description of the purpose of the capability
See also: `TermInfo`, `TERM_FLAGS`, `TERM_NUMBERS`, and `TERM_STRINGS`.
"""
struct TermCapability
name::Symbol
capname::Symbol
description::String
end
#=run
begin
using Downloads
version_info = IOBuffer()
standard_caps = IOBuffer()
user_caps = IOBuffer()
Downloads.download("https://raw.githubusercontent.com/mirror/ncurses/master/VERSION", version_info)
Downloads.download("https://raw.githubusercontent.com/mirror/ncurses/master/include/Caps", standard_caps)
Downloads.download("https://raw.githubusercontent.com/mirror/ncurses/master/include/Caps-ncurses", user_caps)
const TERM_FLAGS = NTuple{3, String}[]
const TERM_NUMBERS = NTuple{3, String}[]
const TERM_STRINGS = NTuple{3, String}[]
const TERM_USER = NTuple{3, String}[]
_, ncurses_version, ncurses_date = split(read(seekstart(version_info), String))
for line in eachline(seekstart(standard_caps))
startswith(line, '#') && continue
components = split(line, '\t', keepempty=false)
if length(components) ∉ 8:9
@warn "Malformed line: $(sprint(show, line))"
continue
end
name, shortcode, type, _, _, _, _, description, _... = components
caplist = if type == "bool" TERM_FLAGS
elseif type == "num" TERM_NUMBERS
elseif type == "str" TERM_STRINGS
else
@warn "Unrecognised capability type: $type"
continue
end
push!(caplist, (name, shortcode, description))
end
for line in eachline(seekstart(user_caps))
startswith(line, '#') && continue
!startswith(line, "userdef") && continue
line = line[1+ncodeunits("userdef "):end]
components = split(line, '\t', keepempty=false)
if length(components) ∉ 4:5
@warn "Malformed line: $(sprint(show, line))"
continue
end
code, type, _, description, _... = components
if code == "xm"
components[3] == "-" || continue
description = "mouse response"
end
dtype = get(Dict("bool" => "Bool", "num" => "Int", "str" => "String"), type, nothing)
if isnothing(dtype)
@warn "Unrecognised data type: $type"
continue
end
push!(TERM_USER, (dtype, code, description))
end
push!(TERM_USER, ("Bool", "Tc", "tmux extension to indicate 24-bit truecolor support"))
push!(TERM_USER, ("Bool", "Su", "kitty extension to indicate styled underline support"))
const SENTINEL = "\n## GENERATED CODE BEYOND THIS POINT ##"
const PREAMBLE = readuntil(__FILE__, SENTINEL, keep=true)
out = IOBuffer()
write(out, PREAMBLE, "\n\n# Terminfo Capabilities as of NCurses $ncurses_version-$ncurses_date\n",
"const NCURSES_VERSION = v\"$ncurses_version.$ncurses_date\"\n")
for (ftype, list) in [("flag", TERM_FLAGS), ("number", TERM_NUMBERS), ("string", TERM_STRINGS)]
print(out, "\n\"\"\"\n\
Ordered list of known terminal capability $ftype fields, as of NCurses $ncurses_version-$ncurses_date.\n\
\"\"\"\n\
const TERM_$(uppercase(ftype))S = [")
namepad = maximum(textwidth, getindex.(list, 1)) + 1
codepad = maximum(textwidth, getindex.(list, 2)) + 1
for (name, shortcode, description) in list
print(out, "\n TermCapability(:", name, ',', ' '^(namepad - textwidth(name)),
':', shortcode, ',', ' '^(codepad - textwidth(shortcode)),
'"', escape_string(description), "\"),")
end
println(out, "\n]")
end
function getcustomalias(allterms::Vector{NTuple{3, String}}, type, short, description)
specific_aliases = Dict{String, String}(
"smxx" => ":enter_strikeout_mode",
"rmxx" => ":exit_strikeout_mode",
"Smol" => ":enter_overline_mode",
"Rmol" => ":exit_overline_mode",
"Cs" => ":set_cursor_color",
"Cr" => ":reset_cursor_color",
"Ss" => ":set_cursor_style",
"Se" => ":reset_cursor_style",
"Smulx" => ":set_underline_style",
"Su" => ":can_style_underline",
"csl" => ":clear_status_line",
"Ms" => ":set_host_clipboard",
"Tc" => ":truecolor",
"XF" => ":xterm_focus")
if startswith(short, 'k') && !occursin("keypad", description)
return ":key_" * replace(lowercase(description), r"[^a-z]" => '_')
end
return get(specific_aliases, short, "nothing")
end
print(out, "\n\"\"\"\nTerminfo extensions that NCurses $ncurses_version-$ncurses_date is aware of.\n\"\"\"",
"\nconst TERM_USER = Dict{Tuple{DataType, Symbol}, Union{Tuple{Nothing, String}, Tuple{Symbol, String}}}(")
shortpad = maximum(textwidth, getindex.(TERM_USER, 2)) + 1
for (type, short, description) in TERM_USER
print(out, "\n ($(rpad(type * ',', 7)) :$short)", ' '^(shortpad - textwidth(short)),
"=> (", getcustomalias(TERM_USER, type, short, description), ", \"",
escape_string(description), "\"),")
end
println(out, "\n)")
open(io -> write(io, seekstart(out)), __FILE__, "w")
end
=#
## GENERATED CODE BEYOND THIS POINT ##
# Terminfo Capabilities as of NCurses 6.4-20230311
const NCURSES_VERSION = v"6.4.20230311"
"""
Ordered list of known terminal capability flag fields, as of NCurses 6.4-20230311.
"""
const TERM_FLAGS = [
TermCapability(:auto_left_margin, :bw, "cub1 wraps from column 0 to last column"),
TermCapability(:auto_right_margin, :am, "terminal has automatic margins"),
TermCapability(:no_esc_ctlc, :xsb, "beehive (f1=escape, f2=ctrl C)"),
TermCapability(:ceol_standout_glitch, :xhp, "standout not erased by overwriting (hp)"),
TermCapability(:eat_newline_glitch, :xenl, "newline ignored after 80 cols (concept)"),
TermCapability(:erase_overstrike, :eo, "can erase overstrikes with a blank"),
TermCapability(:generic_type, :gn, "generic line type"),
TermCapability(:hard_copy, :hc, "hardcopy terminal"),
TermCapability(:has_meta_key, :km, "Has a meta key (i.e., sets 8th-bit)"),
TermCapability(:has_status_line, :hs, "has extra status line"),
TermCapability(:insert_null_glitch, :in, "insert mode distinguishes nulls"),
TermCapability(:memory_above, :da, "display may be retained above the screen"),
TermCapability(:memory_below, :db, "display may be retained below the screen"),
TermCapability(:move_insert_mode, :mir, "safe to move while in insert mode"),
TermCapability(:move_standout_mode, :msgr, "safe to move while in standout mode"),
TermCapability(:over_strike, :os, "terminal can overstrike"),
TermCapability(:status_line_esc_ok, :eslok, "escape can be used on the status line"),
TermCapability(:dest_tabs_magic_smso, :xt, "tabs destructive, magic so char (t1061)"),
TermCapability(:tilde_glitch, :hz, "cannot print ~'s (Hazeltine)"),
TermCapability(:transparent_underline, :ul, "underline character overstrikes"),
TermCapability(:xon_xoff, :xon, "terminal uses xon/xoff handshaking"),
TermCapability(:needs_xon_xoff, :nxon, "padding will not work, xon/xoff required"),
TermCapability(:prtr_silent, :mc5i, "printer will not echo on screen"),
TermCapability(:hard_cursor, :chts, "cursor is hard to see"),
TermCapability(:non_rev_rmcup, :nrrmc, "smcup does not reverse rmcup"),
TermCapability(:no_pad_char, :npc, "pad character does not exist"),
TermCapability(:non_dest_scroll_region, :ndscr, "scrolling region is non-destructive"),
TermCapability(:can_change, :ccc, "terminal can re-define existing colors"),
TermCapability(:back_color_erase, :bce, "screen erased with background color"),
TermCapability(:hue_lightness_saturation, :hls, "terminal uses only HLS color notation (Tektronix)"),
TermCapability(:col_addr_glitch, :xhpa, "only positive motion for hpa/mhpa caps"),
TermCapability(:cr_cancels_micro_mode, :crxm, "using cr turns off micro mode"),
TermCapability(:has_print_wheel, :daisy, "printer needs operator to change character set"),
TermCapability(:row_addr_glitch, :xvpa, "only positive motion for vpa/mvpa caps"),
TermCapability(:semi_auto_right_margin, :sam, "printing in last column causes cr"),
TermCapability(:cpi_changes_res, :cpix, "changing character pitch changes resolution"),
TermCapability(:lpi_changes_res, :lpix, "changing line pitch changes resolution"),
TermCapability(:backspaces_with_bs, :OTbs, "uses ^H to move left"),
TermCapability(:crt_no_scrolling, :OTns, "crt cannot scroll"),
TermCapability(:no_correctly_working_cr, :OTnc, "no way to go to start of line"),
TermCapability(:gnu_has_meta_key, :OTMT, "has meta key"),
TermCapability(:linefeed_is_newline, :OTNL, "move down with \\n"),
TermCapability(:has_hardware_tabs, :OTpt, "has 8-char tabs invoked with ^I"),
TermCapability(:return_does_clr_eol, :OTxr, "return clears the line"),
]
"""
Ordered list of known terminal capability number fields, as of NCurses 6.4-20230311.
"""
const TERM_NUMBERS = [
TermCapability(:columns, :cols, "number of columns in a line"),
TermCapability(:init_tabs, :it, "tabs initially every # spaces"),
TermCapability(:lines, :lines, "number of lines on screen or page"),
TermCapability(:lines_of_memory, :lm, "lines of memory if > line. 0 means varies"),
TermCapability(:magic_cookie_glitch, :xmc, "number of blank characters left by smso or rmso"),
TermCapability(:padding_baud_rate, :pb, "lowest baud rate where padding needed"),
TermCapability(:virtual_terminal, :vt, "virtual terminal number (CB/unix)"),
TermCapability(:width_status_line, :wsl, "number of columns in status line"),
TermCapability(:num_labels, :nlab, "number of labels on screen"),
TermCapability(:label_height, :lh, "rows in each label"),
TermCapability(:label_width, :lw, "columns in each label"),
TermCapability(:max_attributes, :ma, "maximum combined attributes terminal can handle"),
TermCapability(:maximum_windows, :wnum, "maximum number of definable windows"),
TermCapability(:max_colors, :colors, "maximum number of colors on screen"),
TermCapability(:max_pairs, :pairs, "maximum number of color-pairs on the screen"),
TermCapability(:no_color_video, :ncv, "video attributes that cannot be used with colors"),
TermCapability(:buffer_capacity, :bufsz, "numbers of bytes buffered before printing"),
TermCapability(:dot_vert_spacing, :spinv, "spacing of pins vertically in pins per inch"),
TermCapability(:dot_horz_spacing, :spinh, "spacing of dots horizontally in dots per inch"),
TermCapability(:max_micro_address, :maddr, "maximum value in micro_..._address"),
TermCapability(:max_micro_jump, :mjump, "maximum value in parm_..._micro"),
TermCapability(:micro_col_size, :mcs, "character step size when in micro mode"),
TermCapability(:micro_line_size, :mls, "line step size when in micro mode"),
TermCapability(:number_of_pins, :npins, "numbers of pins in print-head"),
TermCapability(:output_res_char, :orc, "horizontal resolution in units per line"),
TermCapability(:output_res_line, :orl, "vertical resolution in units per line"),
TermCapability(:output_res_horz_inch, :orhi, "horizontal resolution in units per inch"),
TermCapability(:output_res_vert_inch, :orvi, "vertical resolution in units per inch"),
TermCapability(:print_rate, :cps, "print rate in characters per second"),
TermCapability(:wide_char_size, :widcs, "character step size when in double wide mode"),
TermCapability(:buttons, :btns, "number of buttons on mouse"),
TermCapability(:bit_image_entwining, :bitwin, "number of passes for each bit-image row"),
TermCapability(:bit_image_type, :bitype, "type of bit-image device"),
TermCapability(:magic_cookie_glitch_ul, :OTug, "number of blanks left by ul"),
TermCapability(:carriage_return_delay, :OTdC, "pad needed for CR"),
TermCapability(:new_line_delay, :OTdN, "pad needed for LF"),
TermCapability(:backspace_delay, :OTdB, "padding required for ^H"),
TermCapability(:horizontal_tab_delay, :OTdT, "padding required for ^I"),
TermCapability(:number_of_function_keys, :OTkn, "count of function keys"),
]
"""
Ordered list of known terminal capability string fields, as of NCurses 6.4-20230311.
"""
const TERM_STRINGS = [
TermCapability(:back_tab, :cbt, "back tab (P)"),
TermCapability(:bell, :bel, "audible signal (bell) (P)"),
TermCapability(:carriage_return, :cr, "carriage return (P*) (P*)"),
TermCapability(:change_scroll_region, :csr, "change region to line #1 to line #2 (P)"),
TermCapability(:clear_all_tabs, :tbc, "clear all tab stops (P)"),
TermCapability(:clear_screen, :clear, "clear screen and home cursor (P*)"),
TermCapability(:clr_eol, :el, "clear to end of line (P)"),
TermCapability(:clr_eos, :ed, "clear to end of screen (P*)"),
TermCapability(:column_address, :hpa, "horizontal position #1, absolute (P)"),
TermCapability(:command_character, :cmdch, "terminal settable cmd character in prototype !?"),
TermCapability(:cursor_address, :cup, "move to row #1 columns #2"),
TermCapability(:cursor_down, :cud1, "down one line"),
TermCapability(:cursor_home, :home, "home cursor (if no cup)"),
TermCapability(:cursor_invisible, :civis, "make cursor invisible"),
TermCapability(:cursor_left, :cub1, "move left one space"),
TermCapability(:cursor_mem_address, :mrcup, "memory relative cursor addressing, move to row #1 columns #2"),
TermCapability(:cursor_normal, :cnorm, "make cursor appear normal (undo civis/cvvis)"),
TermCapability(:cursor_right, :cuf1, "non-destructive space (move right one space)"),
TermCapability(:cursor_to_ll, :ll, "last line, first column (if no cup)"),
TermCapability(:cursor_up, :cuu1, "up one line"),
TermCapability(:cursor_visible, :cvvis, "make cursor very visible"),
TermCapability(:delete_character, :dch1, "delete character (P*)"),
TermCapability(:delete_line, :dl1, "delete line (P*)"),
TermCapability(:dis_status_line, :dsl, "disable status line"),
TermCapability(:down_half_line, :hd, "half a line down"),
TermCapability(:enter_alt_charset_mode, :smacs, "start alternate character set (P)"),
TermCapability(:enter_blink_mode, :blink, "turn on blinking"),
TermCapability(:enter_bold_mode, :bold, "turn on bold (extra bright) mode"),
TermCapability(:enter_ca_mode, :smcup, "string to start programs using cup"),
TermCapability(:enter_delete_mode, :smdc, "enter delete mode"),
TermCapability(:enter_dim_mode, :dim, "turn on half-bright mode"),
TermCapability(:enter_insert_mode, :smir, "enter insert mode"),
TermCapability(:enter_secure_mode, :invis, "turn on blank mode (characters invisible)"),
TermCapability(:enter_protected_mode, :prot, "turn on protected mode"),
TermCapability(:enter_reverse_mode, :rev, "turn on reverse video mode"),
TermCapability(:enter_standout_mode, :smso, "begin standout mode"),
TermCapability(:enter_underline_mode, :smul, "begin underline mode"),
TermCapability(:erase_chars, :ech, "erase #1 characters (P)"),
TermCapability(:exit_alt_charset_mode, :rmacs, "end alternate character set (P)"),
TermCapability(:exit_attribute_mode, :sgr0, "turn off all attributes"),
TermCapability(:exit_ca_mode, :rmcup, "strings to end programs using cup"),
TermCapability(:exit_delete_mode, :rmdc, "end delete mode"),
TermCapability(:exit_insert_mode, :rmir, "exit insert mode"),
TermCapability(:exit_standout_mode, :rmso, "exit standout mode"),
TermCapability(:exit_underline_mode, :rmul, "exit underline mode"),
TermCapability(:flash_screen, :flash, "visible bell (may not move cursor)"),
TermCapability(:form_feed, :ff, "hardcopy terminal page eject (P*)"),
TermCapability(:from_status_line, :fsl, "return from status line"),
TermCapability(:init_1string, :is1, "initialization string"),
TermCapability(:init_2string, :is2, "initialization string"),
TermCapability(:init_3string, :is3, "initialization string"),
TermCapability(:init_file, :if, "name of initialization file"),
TermCapability(:insert_character, :ich1, "insert character (P)"),
TermCapability(:insert_line, :il1, "insert line (P*)"),
TermCapability(:insert_padding, :ip, "insert padding after inserted character"),
TermCapability(:key_backspace, :kbs, "backspace key"),
TermCapability(:key_catab, :ktbc, "clear-all-tabs key"),
TermCapability(:key_clear, :kclr, "clear-screen or erase key"),
TermCapability(:key_ctab, :kctab, "clear-tab key"),
TermCapability(:key_dc, :kdch1, "delete-character key"),
TermCapability(:key_dl, :kdl1, "delete-line key"),
TermCapability(:key_down, :kcud1, "down-arrow key"),
TermCapability(:key_eic, :krmir, "sent by rmir or smir in insert mode"),
TermCapability(:key_eol, :kel, "clear-to-end-of-line key"),
TermCapability(:key_eos, :ked, "clear-to-end-of-screen key"),
TermCapability(:key_f0, :kf0, "F0 function key"),
TermCapability(:key_f1, :kf1, "F1 function key"),
TermCapability(:key_f10, :kf10, "F10 function key"),
TermCapability(:key_f2, :kf2, "F2 function key"),
TermCapability(:key_f3, :kf3, "F3 function key"),
TermCapability(:key_f4, :kf4, "F4 function key"),
TermCapability(:key_f5, :kf5, "F5 function key"),
TermCapability(:key_f6, :kf6, "F6 function key"),
TermCapability(:key_f7, :kf7, "F7 function key"),
TermCapability(:key_f8, :kf8, "F8 function key"),
TermCapability(:key_f9, :kf9, "F9 function key"),
TermCapability(:key_home, :khome, "home key"),
TermCapability(:key_ic, :kich1, "insert-character key"),
TermCapability(:key_il, :kil1, "insert-line key"),
TermCapability(:key_left, :kcub1, "left-arrow key"),
TermCapability(:key_ll, :kll, "lower-left key (home down)"),
TermCapability(:key_npage, :knp, "next-page key"),
TermCapability(:key_ppage, :kpp, "previous-page key"),
TermCapability(:key_right, :kcuf1, "right-arrow key"),
TermCapability(:key_sf, :kind, "scroll-forward key"),
TermCapability(:key_sr, :kri, "scroll-backward key"),
TermCapability(:key_stab, :khts, "set-tab key"),
TermCapability(:key_up, :kcuu1, "up-arrow key"),
TermCapability(:keypad_local, :rmkx, "leave 'keyboard_transmit' mode"),
TermCapability(:keypad_xmit, :smkx, "enter 'keyboard_transmit' mode"),
TermCapability(:lab_f0, :lf0, "label on function key f0 if not f0"),
TermCapability(:lab_f1, :lf1, "label on function key f1 if not f1"),
TermCapability(:lab_f10, :lf10, "label on function key f10 if not f10"),
TermCapability(:lab_f2, :lf2, "label on function key f2 if not f2"),
TermCapability(:lab_f3, :lf3, "label on function key f3 if not f3"),
TermCapability(:lab_f4, :lf4, "label on function key f4 if not f4"),
TermCapability(:lab_f5, :lf5, "label on function key f5 if not f5"),
TermCapability(:lab_f6, :lf6, "label on function key f6 if not f6"),
TermCapability(:lab_f7, :lf7, "label on function key f7 if not f7"),
TermCapability(:lab_f8, :lf8, "label on function key f8 if not f8"),
TermCapability(:lab_f9, :lf9, "label on function key f9 if not f9"),
TermCapability(:meta_off, :rmm, "turn off meta mode"),
TermCapability(:meta_on, :smm, "turn on meta mode (8th-bit on)"),
TermCapability(:newline, :nel, "newline (behave like cr followed by lf)"),
TermCapability(:pad_char, :pad, "padding char (instead of null)"),
TermCapability(:parm_dch, :dch, "delete #1 characters (P*)"),
TermCapability(:parm_delete_line, :dl, "delete #1 lines (P*)"),
TermCapability(:parm_down_cursor, :cud, "down #1 lines (P*)"),
TermCapability(:parm_ich, :ich, "insert #1 characters (P*)"),
TermCapability(:parm_index, :indn, "scroll forward #1 lines (P)"),
TermCapability(:parm_insert_line, :il, "insert #1 lines (P*)"),
TermCapability(:parm_left_cursor, :cub, "move #1 characters to the left (P)"),
TermCapability(:parm_right_cursor, :cuf, "move #1 characters to the right (P*)"),
TermCapability(:parm_rindex, :rin, "scroll back #1 lines (P)"),
TermCapability(:parm_up_cursor, :cuu, "up #1 lines (P*)"),
TermCapability(:pkey_key, :pfkey, "program function key #1 to type string #2"),
TermCapability(:pkey_local, :pfloc, "program function key #1 to execute string #2"),
TermCapability(:pkey_xmit, :pfx, "program function key #1 to transmit string #2"),
TermCapability(:print_screen, :mc0, "print contents of screen"),
TermCapability(:prtr_off, :mc4, "turn off printer"),
TermCapability(:prtr_on, :mc5, "turn on printer"),
TermCapability(:repeat_char, :rep, "repeat char #1 #2 times (P*)"),
TermCapability(:reset_1string, :rs1, "reset string"),
TermCapability(:reset_2string, :rs2, "reset string"),
TermCapability(:reset_3string, :rs3, "reset string"),
TermCapability(:reset_file, :rf, "name of reset file"),
TermCapability(:restore_cursor, :rc, "restore cursor to position of last save_cursor"),
TermCapability(:row_address, :vpa, "vertical position #1 absolute (P)"),
TermCapability(:save_cursor, :sc, "save current cursor position (P)"),
TermCapability(:scroll_forward, :ind, "scroll text up (P)"),
TermCapability(:scroll_reverse, :ri, "scroll text down (P)"),
TermCapability(:set_attributes, :sgr, "define video attributes #1-#9 (PG9)"),
TermCapability(:set_tab, :hts, "set a tab in every row, current columns"),
TermCapability(:set_window, :wind, "current window is lines #1-#2 cols #3-#4"),
TermCapability(:tab, :ht, "tab to next 8-space hardware tab stop"),
TermCapability(:to_status_line, :tsl, "move to status line, column #1"),
TermCapability(:underline_char, :uc, "underline char and move past it"),
TermCapability(:up_half_line, :hu, "half a line up"),
TermCapability(:init_prog, :iprog, "path name of program for initialization"),
TermCapability(:key_a1, :ka1, "upper left of keypad"),
TermCapability(:key_a3, :ka3, "upper right of keypad"),
TermCapability(:key_b2, :kb2, "center of keypad"),
TermCapability(:key_c1, :kc1, "lower left of keypad"),
TermCapability(:key_c3, :kc3, "lower right of keypad"),
TermCapability(:prtr_non, :mc5p, "turn on printer for #1 bytes"),
TermCapability(:char_padding, :rmp, "like ip but when in insert mode"),
TermCapability(:acs_chars, :acsc, "graphics charset pairs, based on vt100"),
TermCapability(:plab_norm, :pln, "program label #1 to show string #2"),
TermCapability(:key_btab, :kcbt, "back-tab key"),
TermCapability(:enter_xon_mode, :smxon, "turn on xon/xoff handshaking"),
TermCapability(:exit_xon_mode, :rmxon, "turn off xon/xoff handshaking"),
TermCapability(:enter_am_mode, :smam, "turn on automatic margins"),
TermCapability(:exit_am_mode, :rmam, "turn off automatic margins"),
TermCapability(:xon_character, :xonc, "XON character"),
TermCapability(:xoff_character, :xoffc, "XOFF character"),
TermCapability(:ena_acs, :enacs, "enable alternate char set"),
TermCapability(:label_on, :smln, "turn on soft labels"),
TermCapability(:label_off, :rmln, "turn off soft labels"),
TermCapability(:key_beg, :kbeg, "begin key"),
TermCapability(:key_cancel, :kcan, "cancel key"),
TermCapability(:key_close, :kclo, "close key"),
TermCapability(:key_command, :kcmd, "command key"),
TermCapability(:key_copy, :kcpy, "copy key"),
TermCapability(:key_create, :kcrt, "create key"),
TermCapability(:key_end, :kend, "end key"),
TermCapability(:key_enter, :kent, "enter/send key"),
TermCapability(:key_exit, :kext, "exit key"),
TermCapability(:key_find, :kfnd, "find key"),
TermCapability(:key_help, :khlp, "help key"),
TermCapability(:key_mark, :kmrk, "mark key"),
TermCapability(:key_message, :kmsg, "message key"),
TermCapability(:key_move, :kmov, "move key"),
TermCapability(:key_next, :knxt, "next key"),
TermCapability(:key_open, :kopn, "open key"),
TermCapability(:key_options, :kopt, "options key"),
TermCapability(:key_previous, :kprv, "previous key"),
TermCapability(:key_print, :kprt, "print key"),
TermCapability(:key_redo, :krdo, "redo key"),
TermCapability(:key_reference, :kref, "reference key"),
TermCapability(:key_refresh, :krfr, "refresh key"),
TermCapability(:key_replace, :krpl, "replace key"),
TermCapability(:key_restart, :krst, "restart key"),
TermCapability(:key_resume, :kres, "resume key"),
TermCapability(:key_save, :ksav, "save key"),
TermCapability(:key_suspend, :kspd, "suspend key"),
TermCapability(:key_undo, :kund, "undo key"),
TermCapability(:key_sbeg, :kBEG, "shifted begin key"),
TermCapability(:key_scancel, :kCAN, "shifted cancel key"),
TermCapability(:key_scommand, :kCMD, "shifted command key"),
TermCapability(:key_scopy, :kCPY, "shifted copy key"),
TermCapability(:key_screate, :kCRT, "shifted create key"),
TermCapability(:key_sdc, :kDC, "shifted delete-character key"),
TermCapability(:key_sdl, :kDL, "shifted delete-line key"),
TermCapability(:key_select, :kslt, "select key"),
TermCapability(:key_send, :kEND, "shifted end key"),
TermCapability(:key_seol, :kEOL, "shifted clear-to-end-of-line key"),
TermCapability(:key_sexit, :kEXT, "shifted exit key"),
TermCapability(:key_sfind, :kFND, "shifted find key"),
TermCapability(:key_shelp, :kHLP, "shifted help key"),
TermCapability(:key_shome, :kHOM, "shifted home key"),
TermCapability(:key_sic, :kIC, "shifted insert-character key"),
TermCapability(:key_sleft, :kLFT, "shifted left-arrow key"),
TermCapability(:key_smessage, :kMSG, "shifted message key"),
TermCapability(:key_smove, :kMOV, "shifted move key"),
TermCapability(:key_snext, :kNXT, "shifted next key"),
TermCapability(:key_soptions, :kOPT, "shifted options key"),
TermCapability(:key_sprevious, :kPRV, "shifted previous key"),
TermCapability(:key_sprint, :kPRT, "shifted print key"),
TermCapability(:key_sredo, :kRDO, "shifted redo key"),
TermCapability(:key_sreplace, :kRPL, "shifted replace key"),
TermCapability(:key_sright, :kRIT, "shifted right-arrow key"),
TermCapability(:key_srsume, :kRES, "shifted resume key"),
TermCapability(:key_ssave, :kSAV, "shifted save key"),
TermCapability(:key_ssuspend, :kSPD, "shifted suspend key"),
TermCapability(:key_sundo, :kUND, "shifted undo key"),
TermCapability(:req_for_input, :rfi, "send next input char (for ptys)"),
TermCapability(:key_f11, :kf11, "F11 function key"),
TermCapability(:key_f12, :kf12, "F12 function key"),
TermCapability(:key_f13, :kf13, "F13 function key"),
TermCapability(:key_f14, :kf14, "F14 function key"),
TermCapability(:key_f15, :kf15, "F15 function key"),
TermCapability(:key_f16, :kf16, "F16 function key"),
TermCapability(:key_f17, :kf17, "F17 function key"),
TermCapability(:key_f18, :kf18, "F18 function key"),
TermCapability(:key_f19, :kf19, "F19 function key"),
TermCapability(:key_f20, :kf20, "F20 function key"),
TermCapability(:key_f21, :kf21, "F21 function key"),
TermCapability(:key_f22, :kf22, "F22 function key"),
TermCapability(:key_f23, :kf23, "F23 function key"),
TermCapability(:key_f24, :kf24, "F24 function key"),
TermCapability(:key_f25, :kf25, "F25 function key"),
TermCapability(:key_f26, :kf26, "F26 function key"),
TermCapability(:key_f27, :kf27, "F27 function key"),
TermCapability(:key_f28, :kf28, "F28 function key"),
TermCapability(:key_f29, :kf29, "F29 function key"),
TermCapability(:key_f30, :kf30, "F30 function key"),
TermCapability(:key_f31, :kf31, "F31 function key"),
TermCapability(:key_f32, :kf32, "F32 function key"),
TermCapability(:key_f33, :kf33, "F33 function key"),
TermCapability(:key_f34, :kf34, "F34 function key"),
TermCapability(:key_f35, :kf35, "F35 function key"),
TermCapability(:key_f36, :kf36, "F36 function key"),
TermCapability(:key_f37, :kf37, "F37 function key"),
TermCapability(:key_f38, :kf38, "F38 function key"),
TermCapability(:key_f39, :kf39, "F39 function key"),
TermCapability(:key_f40, :kf40, "F40 function key"),
TermCapability(:key_f41, :kf41, "F41 function key"),
TermCapability(:key_f42, :kf42, "F42 function key"),
TermCapability(:key_f43, :kf43, "F43 function key"),
TermCapability(:key_f44, :kf44, "F44 function key"),
TermCapability(:key_f45, :kf45, "F45 function key"),
TermCapability(:key_f46, :kf46, "F46 function key"),
TermCapability(:key_f47, :kf47, "F47 function key"),
TermCapability(:key_f48, :kf48, "F48 function key"),
TermCapability(:key_f49, :kf49, "F49 function key"),
TermCapability(:key_f50, :kf50, "F50 function key"),
TermCapability(:key_f51, :kf51, "F51 function key"),
TermCapability(:key_f52, :kf52, "F52 function key"),
TermCapability(:key_f53, :kf53, "F53 function key"),
TermCapability(:key_f54, :kf54, "F54 function key"),
TermCapability(:key_f55, :kf55, "F55 function key"),
TermCapability(:key_f56, :kf56, "F56 function key"),
TermCapability(:key_f57, :kf57, "F57 function key"),
TermCapability(:key_f58, :kf58, "F58 function key"),
TermCapability(:key_f59, :kf59, "F59 function key"),
TermCapability(:key_f60, :kf60, "F60 function key"),
TermCapability(:key_f61, :kf61, "F61 function key"),
TermCapability(:key_f62, :kf62, "F62 function key"),
TermCapability(:key_f63, :kf63, "F63 function key"),
TermCapability(:clr_bol, :el1, "Clear to beginning of line"),
TermCapability(:clear_margins, :mgc, "clear right and left soft margins"),
TermCapability(:set_left_margin, :smgl, "set left soft margin at current column."),
TermCapability(:set_right_margin, :smgr, "set right soft margin at current column"),
TermCapability(:label_format, :fln, "label format"),
TermCapability(:set_clock, :sclk, "set clock, #1 hrs #2 mins #3 secs"),
TermCapability(:display_clock, :dclk, "display clock"),
TermCapability(:remove_clock, :rmclk, "remove clock"),
TermCapability(:create_window, :cwin, "define a window #1 from #2,#3 to #4,#5"),
TermCapability(:goto_window, :wingo, "go to window #1"),
TermCapability(:hangup, :hup, "hang-up phone"),
TermCapability(:dial_phone, :dial, "dial number #1"),
TermCapability(:quick_dial, :qdial, "dial number #1 without checking"),
TermCapability(:tone, :tone, "select touch tone dialing"),
TermCapability(:pulse, :pulse, "select pulse dialing"),
TermCapability(:flash_hook, :hook, "flash switch hook"),
TermCapability(:fixed_pause, :pause, "pause for 2-3 seconds"),
TermCapability(:wait_tone, :wait, "wait for dial-tone"),
TermCapability(:user0, :u0, "User string #0"),
TermCapability(:user1, :u1, "User string #1"),
TermCapability(:user2, :u2, "User string #2"),
TermCapability(:user3, :u3, "User string #3"),
TermCapability(:user4, :u4, "User string #4"),
TermCapability(:user5, :u5, "User string #5"),
TermCapability(:user6, :u6, "User string #6"),
TermCapability(:user7, :u7, "User string #7"),
TermCapability(:user8, :u8, "User string #8"),
TermCapability(:user9, :u9, "User string #9"),
TermCapability(:orig_pair, :op, "Set default pair to its original value"),
TermCapability(:orig_colors, :oc, "Set all color pairs to the original ones"),
TermCapability(:initialize_color, :initc, "initialize color #1 to (#2,#3,#4)"),
TermCapability(:initialize_pair, :initp, "Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7)"),
TermCapability(:set_color_pair, :scp, "Set current color pair to #1"),
TermCapability(:set_foreground, :setf, "Set foreground color #1"),
TermCapability(:set_background, :setb, "Set background color #1"),
TermCapability(:change_char_pitch, :cpi, "Change number of characters per inch to #1"),
TermCapability(:change_line_pitch, :lpi, "Change number of lines per inch to #1"),
TermCapability(:change_res_horz, :chr, "Change horizontal resolution to #1"),
TermCapability(:change_res_vert, :cvr, "Change vertical resolution to #1"),
TermCapability(:define_char, :defc, "Define a character #1, #2 dots wide, descender #3"),
TermCapability(:enter_doublewide_mode, :swidm, "Enter double-wide mode"),
TermCapability(:enter_draft_quality, :sdrfq, "Enter draft-quality mode"),
TermCapability(:enter_italics_mode, :sitm, "Enter italic mode"),
TermCapability(:enter_leftward_mode, :slm, "Start leftward carriage motion"),
TermCapability(:enter_micro_mode, :smicm, "Start micro-motion mode"),
TermCapability(:enter_near_letter_quality, :snlq, "Enter NLQ mode"),
TermCapability(:enter_normal_quality, :snrmq, "Enter normal-quality mode"),
TermCapability(:enter_shadow_mode, :sshm, "Enter shadow-print mode"),
TermCapability(:enter_subscript_mode, :ssubm, "Enter subscript mode"),
TermCapability(:enter_superscript_mode, :ssupm, "Enter superscript mode"),
TermCapability(:enter_upward_mode, :sum, "Start upward carriage motion"),
TermCapability(:exit_doublewide_mode, :rwidm, "End double-wide mode"),
TermCapability(:exit_italics_mode, :ritm, "End italic mode"),
TermCapability(:exit_leftward_mode, :rlm, "End left-motion mode"),
TermCapability(:exit_micro_mode, :rmicm, "End micro-motion mode"),
TermCapability(:exit_shadow_mode, :rshm, "End shadow-print mode"),
TermCapability(:exit_subscript_mode, :rsubm, "End subscript mode"),
TermCapability(:exit_superscript_mode, :rsupm, "End superscript mode"),
TermCapability(:exit_upward_mode, :rum, "End reverse character motion"),
TermCapability(:micro_column_address, :mhpa, "Like column_address in micro mode"),
TermCapability(:micro_down, :mcud1, "Like cursor_down in micro mode"),
TermCapability(:micro_left, :mcub1, "Like cursor_left in micro mode"),
TermCapability(:micro_right, :mcuf1, "Like cursor_right in micro mode"),
TermCapability(:micro_row_address, :mvpa, "Like row_address #1 in micro mode"),
TermCapability(:micro_up, :mcuu1, "Like cursor_up in micro mode"),
TermCapability(:order_of_pins, :porder, "Match software bits to print-head pins"),
TermCapability(:parm_down_micro, :mcud, "Like parm_down_cursor in micro mode"),
TermCapability(:parm_left_micro, :mcub, "Like parm_left_cursor in micro mode"),
TermCapability(:parm_right_micro, :mcuf, "Like parm_right_cursor in micro mode"),
TermCapability(:parm_up_micro, :mcuu, "Like parm_up_cursor in micro mode"),
TermCapability(:select_char_set, :scs, "Select character set, #1"),
TermCapability(:set_bottom_margin, :smgb, "Set bottom margin at current line"),
TermCapability(:set_bottom_margin_parm, :smgbp, "Set bottom margin at line #1 or (if smgtp is not given) #2 lines from bottom"),
TermCapability(:set_left_margin_parm, :smglp, "Set left (right) margin at column #1"),
TermCapability(:set_right_margin_parm, :smgrp, "Set right margin at column #1"),
TermCapability(:set_top_margin, :smgt, "Set top margin at current line"),
TermCapability(:set_top_margin_parm, :smgtp, "Set top (bottom) margin at row #1"),
TermCapability(:start_bit_image, :sbim, "Start printing bit image graphics"),
TermCapability(:start_char_set_def, :scsd, "Start character set definition #1, with #2 characters in the set"),
TermCapability(:stop_bit_image, :rbim, "Stop printing bit image graphics"),
TermCapability(:stop_char_set_def, :rcsd, "End definition of character set #1"),
TermCapability(:subscript_characters, :subcs, "List of subscriptable characters"),
TermCapability(:superscript_characters, :supcs, "List of superscriptable characters"),
TermCapability(:these_cause_cr, :docr, "Printing any of these characters causes CR"),
TermCapability(:zero_motion, :zerom, "No motion for subsequent character"),
TermCapability(:char_set_names, :csnm, "Produce #1'th item from list of character set names"),
TermCapability(:key_mouse, :kmous, "Mouse event has occurred"),
TermCapability(:mouse_info, :minfo, "Mouse status information"),
TermCapability(:req_mouse_pos, :reqmp, "Request mouse position"),
TermCapability(:get_mouse, :getm, "Curses should get button events, parameter #1 not documented."),
TermCapability(:set_a_foreground, :setaf, "Set foreground color to #1, using ANSI escape"),
TermCapability(:set_a_background, :setab, "Set background color to #1, using ANSI escape"),
TermCapability(:pkey_plab, :pfxl, "Program function key #1 to type string #2 and show string #3"),
TermCapability(:device_type, :devt, "Indicate language/codeset support"),
TermCapability(:code_set_init, :csin, "Init sequence for multiple codesets"),
TermCapability(:set0_des_seq, :s0ds, "Shift to codeset 0 (EUC set 0, ASCII)"),
TermCapability(:set1_des_seq, :s1ds, "Shift to codeset 1"),
TermCapability(:set2_des_seq, :s2ds, "Shift to codeset 2"),
TermCapability(:set3_des_seq, :s3ds, "Shift to codeset 3"),
TermCapability(:set_lr_margin, :smglr, "Set both left and right margins to #1, #2. (ML is not in BSD termcap)."),
TermCapability(:set_tb_margin, :smgtb, "Sets both top and bottom margins to #1, #2"),
TermCapability(:bit_image_repeat, :birep, "Repeat bit image cell #1 #2 times"),
TermCapability(:bit_image_newline, :binel, "Move to next row of the bit image"),
TermCapability(:bit_image_carriage_return, :bicr, "Move to beginning of same row"),
TermCapability(:color_names, :colornm, "Give name for color #1"),
TermCapability(:define_bit_image_region, :defbi, "Define rectangular bit image region"),
TermCapability(:end_bit_image_region, :endbi, "End a bit-image region"),
TermCapability(:set_color_band, :setcolor, "Change to ribbon color #1"),
TermCapability(:set_page_length, :slines, "Set page length to #1 lines"),
TermCapability(:display_pc_char, :dispc, "Display PC character #1"),
TermCapability(:enter_pc_charset_mode, :smpch, "Enter PC character display mode"),
TermCapability(:exit_pc_charset_mode, :rmpch, "Exit PC character display mode"),
TermCapability(:enter_scancode_mode, :smsc, "Enter PC scancode mode"),
TermCapability(:exit_scancode_mode, :rmsc, "Exit PC scancode mode"),
TermCapability(:pc_term_options, :pctrm, "PC terminal options"),
TermCapability(:scancode_escape, :scesc, "Escape for scancode emulation"),
TermCapability(:alt_scancode_esc, :scesa, "Alternate escape for scancode emulation"),
TermCapability(:enter_horizontal_hl_mode, :ehhlm, "Enter horizontal highlight mode"),
TermCapability(:enter_left_hl_mode, :elhlm, "Enter left highlight mode"),
TermCapability(:enter_low_hl_mode, :elohlm, "Enter low highlight mode"),
TermCapability(:enter_right_hl_mode, :erhlm, "Enter right highlight mode"),
TermCapability(:enter_top_hl_mode, :ethlm, "Enter top highlight mode"),
TermCapability(:enter_vertical_hl_mode, :evhlm, "Enter vertical highlight mode"),
TermCapability(:set_a_attributes, :sgr1, "Define second set of video attributes #1-#6"),
TermCapability(:set_pglen_inch, :slength, "Set page length to #1 hundredth of an inch (some implementations use sL for termcap)."),
TermCapability(:termcap_init2, :OTi2, "secondary initialization string"),
TermCapability(:termcap_reset, :OTrs, "terminal reset string"),
TermCapability(:linefeed_if_not_lf, :OTnl, "use to move down"),
TermCapability(:backspace_if_not_bs, :OTbc, "move left, if not ^H"),
TermCapability(:other_non_function_keys, :OTko, "list of self-mapped keycaps"),
TermCapability(:arrow_key_map, :OTma, "map motion-keys for vi version 2"),
TermCapability(:acs_ulcorner, :OTG2, "single upper left"),
TermCapability(:acs_llcorner, :OTG3, "single lower left"),
TermCapability(:acs_urcorner, :OTG1, "single upper right"),
TermCapability(:acs_lrcorner, :OTG4, "single lower right"),
TermCapability(:acs_ltee, :OTGR, "tee pointing right"),
TermCapability(:acs_rtee, :OTGL, "tee pointing left"),
TermCapability(:acs_btee, :OTGU, "tee pointing up"),
TermCapability(:acs_ttee, :OTGD, "tee pointing down"),
TermCapability(:acs_hline, :OTGH, "single horizontal line"),
TermCapability(:acs_vline, :OTGV, "single vertical line"),
TermCapability(:acs_plus, :OTGC, "single intersection"),
TermCapability(:memory_lock, :meml, "lock memory above cursor"),
TermCapability(:memory_unlock, :memu, "unlock memory"),
TermCapability(:box_chars_1, :box1, "box characters primary set"),
]
"""
Terminfo extensions that NCurses 6.4-20230311 is aware of.
"""
const TERM_USER = Dict{Tuple{DataType, Symbol}, Union{Tuple{Nothing, String}, Tuple{Symbol, String}}}(
(Int, :CO ) => (nothing, "number of indexed colors overlaying RGB space"),
(String, :E3) => (nothing, "clears the terminal's scrollback buffer."),
(Bool, :NQ) => (nothing, "terminal does not support query/response"),
(Bool, :RGB) => (nothing, "use direct colors with 1/3 of color-pair bits per color."),
(Int, :RGB) => (nothing, "use direct colors with given number of bits per color."),
(String, :RGB) => (nothing, "use direct colors with given bit-layout."),
(String, :TS) => (nothing, "like \"tsl\", but uses no parameter."),
(Int, :U8) => (nothing, "terminal does/does not support VT100 SI/SO when processing UTF-8 encoding."),
(String, :XM) => (nothing, "initialize alternate xterm mouse mode"),
(String, :grbom) => (nothing, "disable real bold (not intensity bright) mode."),
(String, :gsbom) => (nothing, "enable real bold (not intensity bright) mode."),
(String, :xm) => (nothing, "mouse response"),
(String, :Rmol) => (:exit_overline_mode, "remove overline-mode"),
(String, :Smol) => (:enter_overline_mode, "set overline-mode"),
(String, :blink2) => (nothing, "turn on rapid blinking"),
(String, :norm) => (nothing, "turn off bold and half-bright mode"),
(String, :opaq) => (nothing, "turn off blank mode"),
(String, :setal) => (nothing, "set underline-color"),
(String, :smul2) => (nothing, "begin double underline mode"),
(Bool, :AN) => (nothing, "turn on autonuke."),
(Bool, :AX) => (nothing, "understands ANSI set default fg/bg color (\\E[39m / \\E[49m)."),
(String, :C0) => (nothing, "use the string as a conversion table for font '0', like acsc."),
(Bool, :C8) => (nothing, "terminal shows bold as high-intensity colors."),
(String, :CE) => (nothing, "switch cursor-keys back to normal mode."),
(String, :CS) => (nothing, "switch cursor-keys to application mode."),
(String, :E0) => (nothing, "switch charset 'G0' back to standard charset. Default is '\\E(B'."),
(Bool, :G0) => (nothing, "terminal can deal with ISO 2022 font selection sequences."),
(String, :KJ) => (nothing, "set the encoding of the terminal."),
(Int, :OL) => (nothing, "set the screen program's output buffer limit."),
(String, :S0) => (nothing, "switch charset 'G0' to the specified charset. Default is '\\E(%.'."),
(Bool, :TF) => (nothing, "add missing capabilities to screen's termcap/info entry. (Set by default)."),
(String, :WS) => (nothing, "resize display. This capability has the desired width and height as arguments. SunView(tm) example: '\\E[8;%d;%dt'."),
(String, :XC) => (nothing, "describe a translation of characters to strings depending on the current font."),
(Bool, :XT) => (nothing, "terminal understands special xterm sequences (OSC, mouse tracking)."),
(String, :Z0) => (nothing, "change width to 132 columns."),
(String, :Z1) => (nothing, "change width to 80 columns."),
(String, :Cr) => (:reset_cursor_color, "restore the default cursor color."),
(String, :Cs) => (:set_cursor_color, "set the cursor color."),
(String, :Csr) => (nothing, "change the cursor style, overriding Ss."),
(String, :Ms) => (:set_host_clipboard, "store the current buffer in the host terminal's selection (clipboard)."),
(String, :Se) => (:reset_cursor_style, "reset the cursor style to the terminal initial state."),
(String, :Smulx) => (:set_underline_style, "modify the appearance of underlines in VTE."),
(String, :Ss) => (:set_cursor_style, "change the cursor style."),
(String, :rmxx) => (:exit_strikeout_mode, "reset ECMA-48 strikeout/crossed-out attributes."),
(String, :smxx) => (:enter_strikeout_mode, "set ECMA-48 strikeout/crossed-out attributes."),
(String, :BD) => (nothing, "disables bracketed paste"),
(String, :BE) => (nothing, "enables bracketed paste"),
(String, :PE) => (nothing, "is sent after pasted text"),
(String, :PS) => (nothing, "is sent before pasted text"),
(String, :RV) => (nothing, "report terminal secondary device attributes"),
(String, :XR) => (nothing, "report terminal version as a free-format string."),
(Bool, :XF) => (:xterm_focus, "terminal supports xterm focus in/out"),
(String, :rv) => (nothing, "response to RV, regular expression"),
(String, :xr) => (nothing, "response to XR, regular expression"),
(String, :csl) => (:clear_status_line, "clear status line"),
(String, :kDC3) => (:key_alt_delete_character, "alt delete-character"),
(String, :kDC4) => (:key_shift_alt_delete_character, "shift+alt delete-character"),
(String, :kDC5) => (:key_control_delete_character, "control delete-character"),
(String, :kDC6) => (:key_shift_control_delete_character, "shift+control delete-character"),
(String, :kDC7) => (:key_alt_control_delete_character, "alt+control delete-character"),
(String, :kDN) => (:key_shift_down_cursor, "shift down-cursor"),
(String, :kDN3) => (:key_alt_down_cursor, "alt down-cursor"),
(String, :kDN4) => (:key_shift_alt_down_cursor, "shift+alt down-cursor"),
(String, :kDN5) => (:key_control_down_cursor, "control down-cursor"),
(String, :kDN6) => (:key_shift_control_down_cursor, "shift+control down-cursor"),
(String, :kDN7) => (:key_alt_control_down_cursor, "alt+control down-cursor"),
(String, :kEND3) => (:key_alt_end, "alt end"),
(String, :kEND4) => (:key_shift_alt_end, "shift+alt end"),
(String, :kEND5) => (:key_control_end, "control end"),
(String, :kEND6) => (:key_shift_control_end, "shift+control end"),
(String, :kEND7) => (:key_alt_control_end, "alt+control end"),
(String, :kHOM3) => (:key_alt_home, "alt home"),
(String, :kHOM4) => (:key_shift_alt_home, "shift+alt home"),
(String, :kHOM5) => (:key_control_home, "control home"),
(String, :kHOM6) => (:key_shift_control_home, "shift+control home"),
(String, :kHOM7) => (:key_alt_control_home, "alt+control home"),
(String, :kIC3) => (:key_alt_insert_character, "alt insert-character"),
(String, :kIC4) => (:key_shift_alt_insert_character, "shift+alt insert-character"),
(String, :kIC5) => (:key_control_insert_character, "control insert-character"),
(String, :kIC6) => (:key_shift_control_insert_character, "shift+control insert-character"),
(String, :kIC7) => (:key_alt_control_insert_character, "alt+control insert-character"),
(String, :kLFT3) => (:key_alt_left_cursor, "alt left-cursor"),
(String, :kLFT4) => (:key_shift_alt_left_cursor, "shift+alt left-cursor"),
(String, :kLFT5) => (:key_control_left_cursor, "control left-cursor"),
(String, :kLFT6) => (:key_shift_control_left_cursor, "shift+control left-cursor"),
(String, :kLFT7) => (:key_alt_control_left_cursor, "alt+control left-cursor"),
(String, :kNXT3) => (:key_alt_next, "alt next"),
(String, :kNXT4) => (:key_shift_alt_next, "shift+alt next"),
(String, :kNXT5) => (:key_control_next, "control next"),
(String, :kNXT6) => (:key_shift_control_next, "shift+control next"),
(String, :kNXT7) => (:key_alt_control_next, "alt+control next"),
(String, :kPRV3) => (:key_alt_previous, "alt previous"),
(String, :kPRV4) => (:key_shift_alt_previous, "shift+alt previous"),
(String, :kPRV5) => (:key_control_previous, "control previous"),
(String, :kPRV6) => (:key_shift_control_previous, "shift+control previous"),
(String, :kPRV7) => (:key_alt_control_previous, "alt+control previous"),
(String, :kRIT3) => (:key_alt_right_cursor, "alt right-cursor"),
(String, :kRIT4) => (:key_shift_alt_right_cursor, "shift+alt right-cursor"),
(String, :kRIT5) => (:key_control_right_cursor, "control right-cursor"),
(String, :kRIT6) => (:key_shift_control_right_cursor, "shift+control right-cursor"),
(String, :kRIT7) => (:key_alt_control_right_cursor, "alt+control right-cursor"),
(String, :kUP) => (:key_shift_up_cursor, "shift up-cursor"),
(String, :kUP3) => (:key_alt_up_cursor, "alt up-cursor"),
(String, :kUP4) => (:key_shift_alt_up_cursor, "shift+alt up-cursor"),
(String, :kUP5) => (:key_control_up_cursor, "control up-cursor"),
(String, :kUP6) => (:key_shift_control_up_cursor, "shift+control up-cursor"),
(String, :kUP7) => (:key_alt_control_up_cursor, "alt+control up-cursor"),
(String, :ka2) => (nothing, "vt220-keypad extensions"),
(String, :kb1) => (nothing, "vt220-keypad extensions"),
(String, :kb3) => (nothing, "vt220-keypad extensions"),
(String, :kc2) => (nothing, "vt220-keypad extensions"),
(String, :kxIN) => (:key_mouse_response_on_focus_in, "mouse response on focus-in"),
(String, :kxOUT) => (:key_mouse_response_on_focus_out, "mouse response on focus-out"),
(Bool, :Tc) => (:truecolor, "tmux extension to indicate 24-bit truecolor support"),
(Bool, :Su) => (:can_style_underline, "kitty extension to indicate styled underline support"),
)