commit d44d7f7c5e3c4f8d9b03d70cd1f728bb3fe9c41d
parent 671841673e7b66f4f40a49a000a6a46e662f802e
Author: bfredl <bjorn.linse@gmail.com>
Date: Sat, 18 Oct 2025 12:07:31 +0200
Merge pull request #35952 from bfredl/neocurses
perf(tui): faster implementation of terminfo
Diffstat:
10 files changed, 2124 insertions(+), 3570 deletions(-)
diff --git a/scripts/update_terminfo.sh b/scripts/update_terminfo.sh
@@ -1,87 +0,0 @@
-#!/usr/bin/env bash
-#
-# usage: ./scripts/update_terminfo.sh
-#
-# This script does:
-#
-# 1. Download Dickey's terminfo.src
-# 2. Compile temporary terminfo database from terminfo.src
-# 3. Use database to generate src/nvim/tui/terminfo_defs.h
-#
-
-set -e
-
-url='https://invisible-island.net/datafiles/current/terminfo.src.gz'
-target='src/nvim/tui/terminfo_defs.h'
-
-readonly -A entries=(
- [ansi]=ansi_terminfo
- [interix]=interix_8colour_terminfo
- [iterm2]=iterm_256colour_terminfo
- [linux]=linux_16colour_terminfo
- [putty-256color]=putty_256colour_terminfo
- [rxvt-256color]=rxvt_256colour_terminfo
- [screen-256color]=screen_256colour_terminfo
- [st-256color]=st_256colour_terminfo
- [tmux-256color]=tmux_256colour_terminfo
- [vte-256color]=vte_256colour_terminfo
- [xterm-256color]=xterm_256colour_terminfo
- [cygwin]=cygwin_terminfo
- [win32con]=win32con_terminfo
- [conemu]=conemu_terminfo
- [vtpcon]=vtpcon_terminfo
-)
-
-db="$(mktemp -du)"
-
-print_bold() {
- printf "\\e[1m%b\\e[0m" "$*"
-}
-
-cd "$(git rev-parse --show-toplevel)"
-
-#
-# Get terminfo.src
-#
-print_bold '[*] Get terminfo.src\n'
-curl -O "$url"
-gunzip -f terminfo.src.gz
-
-#
-# Build terminfo database
-#
-print_bold '[*] Build terminfo database\n'
-cat terminfo.src scripts/windows.ti | tic -x -o "$db" -
-rm -f terminfo.src
-
-#
-# Write src/nvim/tui/terminfo_defs.h
-#
-print_bold "[*] Writing $target... "
-sorted_terms="$(echo "${!entries[@]}" | tr ' ' '\n' | sort | xargs)"
-
-cat > "$target" <<EOF
-// uncrustify:off
-
-// Generated by scripts/update_terminfo.sh and $(tic -V)
-
-#pragma once
-
-#include <stdint.h>
-EOF
-
-for term in $sorted_terms; do
- path="$(find "$db" -name "$term")"
- if [ -z "$path" ]; then
- >&2 echo "Not found: $term. Skipping."
- continue
- fi
- printf '\n'
- infocmp -L -x -1 -A "$db" "$term" | sed -e '1d' -e 's#^#// #' | tr '\t' ' '
- printf 'static const int8_t %s[] = {\n' "${entries[$term]}"
- printf ' '
- od -v -t d1 < "$path" | cut -c9- | xargs | tr ' ' ','
- printf '};\n'
-done >> "$target"
-
-print_bold 'done\n'
diff --git a/src/gen/gen_terminfo.lua b/src/gen/gen_terminfo.lua
@@ -0,0 +1,204 @@
+-- usage: nvim -ll src/gen/gen_terminfo.lua
+--
+-- This script does:
+--
+-- 1. Download Dickey's terminfo.src
+-- 2. Compile temporary terminfo database from terminfo.src
+-- 3. Use database to generate src/nvim/tui/terminfo_defs.h
+
+local url = 'https://invisible-island.net/datafiles/current/terminfo.src.gz'
+local target_gen = 'src/nvim/tui/terminfo_defs.h'
+local target_enum = 'src/nvim/tui/terminfo_enum_defs.h'
+
+local entries = {
+ { 'ansi', 'ansi_terminfo' },
+ { 'interix', 'interix_8colour_terminfo' },
+ { 'iterm2', 'iterm_256colour_terminfo' },
+ { 'linux', 'linux_16colour_terminfo' },
+ { 'putty-256color', 'putty_256colour_terminfo' },
+ { 'rxvt-256color', 'rxvt_256colour_terminfo' },
+ { 'screen-256color', 'screen_256colour_terminfo' },
+ { 'st-256color', 'st_256colour_terminfo' },
+ { 'tmux-256color', 'tmux_256colour_terminfo' },
+ { 'vte-256color', 'vte_256colour_terminfo' },
+ { 'xterm-256color', 'xterm_256colour_terminfo' },
+ { 'cygwin', 'cygwin_terminfo' },
+ { 'win32con', 'win32con_terminfo' },
+ { 'conemu', 'conemu_terminfo' },
+ { 'vtpcon', 'vtpcon_terminfo' },
+}
+
+local wanted_numbers = { 'max_colors', 'lines', 'columns' }
+local wanted_strings = {
+ 'carriage_return',
+ 'change_scroll_region',
+ 'clear_screen',
+ 'clr_eol',
+ 'clr_eos',
+ 'cursor_address',
+ 'cursor_down',
+ 'cursor_invisible',
+ 'cursor_left',
+ 'cursor_home',
+ 'cursor_normal',
+ 'cursor_up',
+ 'cursor_right',
+ 'delete_line',
+ 'enter_bold_mode',
+ 'enter_ca_mode',
+ 'enter_italics_mode',
+ 'enter_reverse_mode',
+ 'enter_standout_mode',
+ 'enter_underline_mode',
+ 'erase_chars',
+ 'exit_attribute_mode',
+ 'exit_ca_mode',
+ 'from_status_line',
+ 'insert_line',
+ 'keypad_local',
+ 'keypad_xmit',
+ 'parm_delete_line',
+ 'parm_down_cursor',
+ 'parm_insert_line',
+ 'parm_left_cursor',
+ 'parm_right_cursor',
+ 'parm_up_cursor',
+ 'set_a_background',
+ 'set_a_foreground',
+ 'set_attributes',
+ 'set_lr_margin',
+ 'to_status_line',
+}
+
+local wanted_strings_ext = {
+ -- the following are our custom name for extensions, see "extmap"
+ { 'reset_cursor_style', 'se' },
+ { 'set_cursor_style', 'Ss' },
+ -- terminfo describes strikethrough modes as rmxx/smxx with respect
+ -- to the ECMA-48 strikeout/crossed-out attributes.
+ { 'enter_strikethrough_mode', 'smxx' },
+ { 'set_rgb_foreground', 'setrgbf' },
+ { 'set_rgb_background', 'setrgbb' },
+ { 'set_cursor_color', 'Cs' },
+ { 'reset_cursor_color', 'Cr' },
+ { 'set_underline_style', 'Smulx' },
+}
+
+local db = '/tmp/nvim_terminfo'
+if vim.uv.fs_stat(db) == nil then
+ local function sys(cmd)
+ print(cmd)
+ os.execute(cmd)
+ end
+ sys('curl -O ' .. url)
+ sys('gunzip -f terminfo.src.gz')
+ sys('cat terminfo.src scripts/windows.ti | tic -x -o "' .. db .. '" -')
+ sys('rm -f terminfo.src')
+else
+ print('using cached terminfo in ' .. db)
+end
+
+local function enumify(str)
+ return 'kTerm_' .. str
+end
+local function quote(str)
+ if str == nil then
+ return 'NULL'
+ end
+ -- remungle the strings to look like C strings
+ str = string.gsub(str, '\\E', '\\033')
+ str = string.gsub(str, '%^G', '\\a')
+ str = string.gsub(str, '%^H', '\\b')
+ str = string.gsub(str, '%^O', '\\017') -- o dod
+ -- str = string.gsub(str, "\\", "\\\\")
+ str = string.gsub(str, '"', '\\"')
+ return '"' .. str .. '"'
+end
+
+local dbg = function() end
+-- dbg = print
+
+local f_enum = io.open(target_enum, 'wb')
+f_enum:write('// genenerated by src/gen/gen_terminfo.lua\n\n')
+f_enum:write('#pragma once\n\n')
+f_enum:write('typedef enum {\n')
+for _, name in ipairs(wanted_strings) do
+ f_enum:write(' ' .. enumify(name) .. ',\n')
+end
+f_enum:write('#define kTermExtOffset ' .. enumify(wanted_strings_ext[1][1]) .. '\n')
+for _, item in ipairs(wanted_strings_ext) do
+ f_enum:write(' ' .. enumify(item[1]) .. ',\n')
+end
+f_enum:write(' kTermCount, // sentinel\n')
+f_enum:write('} TerminfoDef;\n')
+f_enum:close()
+
+local f_defs = io.open(target_gen, 'wb')
+
+f_defs:write('// uncrustify:off\n\n')
+
+local version = io.popen('infocmp -V'):read '*a'
+f_defs:write('// Generated by src/gen/gen_terminfo.lua and ' .. version .. '\n')
+
+f_defs:write('#pragma once\n\n')
+f_defs:write('#include "nvim/tui/terminfo.h"\n')
+
+for _, entry in ipairs(entries) do
+ local term, target = unpack(entry)
+ local fil = io.popen('infocmp -L -x -1 -A ' .. db .. ' ' .. term):read '*a'
+ local lines = vim.split(fil, '\n')
+ local prepat = '^%s*([%w_]+)'
+ local boolpat = prepat .. ','
+ local numpat = prepat .. '#([^,]+),'
+ local strpat = prepat .. '=([^,]+),'
+ local bools, nums, strs = {}, {}, {}
+ for i, line in ipairs(lines) do
+ local boolmatch = string.match(line, boolpat)
+ local nummatch, numval = string.match(line, numpat)
+ local strmatch, strval = string.match(line, strpat)
+ if boolmatch then
+ dbg('boolean: ' .. boolmatch)
+ bools[boolmatch] = true
+ elseif nummatch then
+ dbg('number: ' .. nummatch .. ' is ' .. numval)
+ nums[nummatch] = numval
+ elseif strmatch then
+ dbg('string: ' .. strmatch .. ' is ' .. strval)
+ strs[strmatch] = strval
+ else
+ dbg('UNKNOWN:', i, line)
+ end
+ end
+
+ f_defs:write('\nstatic const TerminfoEntry ' .. target .. ' = {\n')
+ f_defs:write(' .bce = ' .. tostring(bools.back_color_erase or false) .. ',\n')
+ local has_Tc_or_RGB = (bools.Tc or bools.RGB) or false
+ f_defs:write(' .has_Tc_or_RGB = ' .. tostring(has_Tc_or_RGB or false) .. ',\n')
+ f_defs:write(' .Su = ' .. tostring(bools.Su or false) .. ',\n')
+
+ for _, name in ipairs(wanted_numbers) do
+ f_defs:write(' .' .. name .. ' = ' .. (nums[name] or '-1') .. ',\n')
+ end
+ f_defs:write(' .defs = {\n')
+ for _, name in ipairs(wanted_strings) do
+ f_defs:write(' [' .. enumify(name) .. '] = ' .. quote(strs[name]) .. ',\n')
+ end
+ for _, item in ipairs(wanted_strings_ext) do
+ f_defs:write(' [' .. enumify(item[1]) .. '] = ' .. quote(strs[item[2]]) .. ',\n')
+ end
+
+ f_defs:write(' },\n')
+ f_defs:write('};\n')
+end
+
+f_defs:write('\n#define XLIST_TERMINFO_BUILTIN \\\n')
+for _, name in ipairs(wanted_strings) do
+ f_defs:write(' X(' .. name .. ') \\\n')
+end
+f_defs:write('// end of list\n\n')
+f_defs:write('#define XLIST_TERMINFO_EXT \\\n')
+for _, item in ipairs(wanted_strings_ext) do
+ f_defs:write(' X(' .. item[1] .. ', ' .. item[2] .. ') \\\n')
+end
+f_defs:write('// end of list\n')
+f_defs:close()
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c
@@ -2198,7 +2198,7 @@ DictAs(eval_statusline_ret) nvim_eval_statusline(String str, Dict(eval_statuslin
grpname = syn_id2name(-sp->userhl);
} else {
snprintf(user_group, sizeof(user_group), "User%d", sp->userhl);
- grpname = arena_memdupz(arena, user_group, strlen(user_group));
+ grpname = arena_strdup(arena, user_group);
}
const char *combine = sp->item == STL_SIGNCOL ? syn_id2name(scl_hl_id)
diff --git a/src/nvim/memory.c b/src/nvim/memory.c
@@ -813,12 +813,19 @@ char *arena_allocz(Arena *arena, size_t size)
}
char *arena_memdupz(Arena *arena, const char *buf, size_t size)
+ FUNC_ATTR_NONNULL_ARG(2)
{
char *mem = arena_allocz(arena, size);
memcpy(mem, buf, size);
return mem;
}
+char *arena_strdup(Arena *arena, const char *str)
+ FUNC_ATTR_NONNULL_ARG(2)
+{
+ return arena_memdupz(arena, str, strlen(str));
+}
+
#if defined(EXITFREE)
# include "nvim/autocmd.h"
diff --git a/src/nvim/tui/terminfo.c b/src/nvim/tui/terminfo.c
@@ -17,6 +17,12 @@
# include "nvim/os/os.h"
#endif
+typedef struct {
+ long nums[20];
+ char *strings[20];
+ size_t offset;
+} TPSTACK;
+
#include "tui/terminfo.c.generated.h"
bool terminfo_is_term_family(const char *term, const char *family)
@@ -57,167 +63,606 @@ bool terminfo_is_bsd_console(const char *term)
/// We do not attempt to detect xterm pretenders here.
///
/// @param term $TERM value
-/// @param[out,allocated] termname decided builtin 'term' name
+/// @param[out,static] termname decided builtin 'term' name
/// @return [allocated] terminfo structure
-static unibi_term *terminfo_builtin(const char *term, char **termname)
+const TerminfoEntry *terminfo_from_builtin(const char *term, char **termname)
{
if (terminfo_is_term_family(term, "xterm")) {
- *termname = xstrdup("builtin_xterm");
- return unibi_from_mem((const char *)xterm_256colour_terminfo,
- sizeof xterm_256colour_terminfo);
+ *termname = "builtin_xterm";
+ return &xterm_256colour_terminfo;
} else if (terminfo_is_term_family(term, "screen")) {
- *termname = xstrdup("builtin_screen");
- return unibi_from_mem((const char *)screen_256colour_terminfo,
- sizeof screen_256colour_terminfo);
+ *termname = "builtin_screen";
+ return &screen_256colour_terminfo;
} else if (terminfo_is_term_family(term, "tmux")) {
- *termname = xstrdup("builtin_tmux");
- return unibi_from_mem((const char *)tmux_256colour_terminfo,
- sizeof tmux_256colour_terminfo);
+ *termname = "builtin_tmux";
+ return &tmux_256colour_terminfo;
} else if (terminfo_is_term_family(term, "rxvt")) {
- *termname = xstrdup("builtin_rxvt");
- return unibi_from_mem((const char *)rxvt_256colour_terminfo,
- sizeof rxvt_256colour_terminfo);
+ *termname = "builtin_rxvt";
+ return &rxvt_256colour_terminfo;
} else if (terminfo_is_term_family(term, "putty")) {
- *termname = xstrdup("builtin_putty");
- return unibi_from_mem((const char *)putty_256colour_terminfo,
- sizeof putty_256colour_terminfo);
+ *termname = "builtin_putty";
+ return &putty_256colour_terminfo;
} else if (terminfo_is_term_family(term, "linux")) {
- *termname = xstrdup("builtin_linux");
- return unibi_from_mem((const char *)linux_16colour_terminfo,
- sizeof linux_16colour_terminfo);
+ *termname = "builtin_linux";
+ return &linux_16colour_terminfo;
} else if (terminfo_is_term_family(term, "interix")) {
- *termname = xstrdup("builtin_interix");
- return unibi_from_mem((const char *)interix_8colour_terminfo,
- sizeof interix_8colour_terminfo);
+ *termname = "builtin_interix";
+ return &interix_8colour_terminfo;
} else if (terminfo_is_term_family(term, "iterm")
|| terminfo_is_term_family(term, "iterm2")
|| terminfo_is_term_family(term, "iTerm.app")
|| terminfo_is_term_family(term, "iTerm2.app")) {
- *termname = xstrdup("builtin_iterm");
- return unibi_from_mem((const char *)iterm_256colour_terminfo,
- sizeof iterm_256colour_terminfo);
+ *termname = "builtin_iterm";
+ return &iterm_256colour_terminfo;
} else if (terminfo_is_term_family(term, "st")) {
- *termname = xstrdup("builtin_st");
- return unibi_from_mem((const char *)st_256colour_terminfo,
- sizeof st_256colour_terminfo);
+ *termname = "builtin_st";
+ return &st_256colour_terminfo;
} else if (terminfo_is_term_family(term, "gnome")
|| terminfo_is_term_family(term, "vte")) {
- *termname = xstrdup("builtin_vte");
- return unibi_from_mem((const char *)vte_256colour_terminfo,
- sizeof vte_256colour_terminfo);
+ *termname = "builtin_vte";
+ return &vte_256colour_terminfo;
} else if (terminfo_is_term_family(term, "cygwin")) {
- *termname = xstrdup("builtin_cygwin");
- return unibi_from_mem((const char *)cygwin_terminfo,
- sizeof cygwin_terminfo);
+ *termname = "builtin_cygwin";
+ return &cygwin_terminfo;
} else if (terminfo_is_term_family(term, "win32con")) {
- *termname = xstrdup("builtin_win32con");
- return unibi_from_mem((const char *)win32con_terminfo,
- sizeof win32con_terminfo);
+ *termname = "builtin_win32con";
+ return &win32con_terminfo;
} else if (terminfo_is_term_family(term, "conemu")) {
- *termname = xstrdup("builtin_conemu");
- return unibi_from_mem((const char *)conemu_terminfo,
- sizeof conemu_terminfo);
+ *termname = "builtin_conemu";
+ return &conemu_terminfo;
} else if (terminfo_is_term_family(term, "vtpcon")) {
- *termname = xstrdup("builtin_vtpcon");
- return unibi_from_mem((const char *)vtpcon_terminfo,
- sizeof vtpcon_terminfo);
+ *termname = "builtin_vtpcon";
+ return &vtpcon_terminfo;
} else {
- *termname = xstrdup("builtin_ansi");
- return unibi_from_mem((const char *)ansi_terminfo,
- sizeof ansi_terminfo);
+ *termname = "builtin_ansi";
+ return &ansi_terminfo;
}
}
-/// @param term $TERM value
-/// @param[out,allocated] termname decided builtin 'term' name
-/// @return [allocated] terminfo structure
-unibi_term *terminfo_from_builtin(const char *term, char **termname)
+static ssize_t unibi_find_ext_str(unibi_term *ut, const char *name)
{
- unibi_term *ut = terminfo_builtin(term, termname);
- if (*termname == NULL) {
- *termname = xstrdup("builtin_?");
+ size_t max = unibi_count_ext_str(ut);
+ for (size_t i = 0; i < max; i++) {
+ const char *n = unibi_get_ext_str_name(ut, i);
+ if (n && 0 == strcmp(n, name)) {
+ return (ssize_t)i;
+ }
}
- return ut;
+ return -1;
+}
+
+bool terminfo_from_unibilium(TerminfoEntry *ti, char *termname, Arena *arena)
+{
+ unibi_term *ut = unibi_from_term(termname);
+ if (!ut) {
+ return false;
+ }
+
+ ti->bce = unibi_get_bool(ut, unibi_back_color_erase);
+ ti->max_colors = unibi_get_num(ut, unibi_max_colors);
+ ti->lines = unibi_get_num(ut, unibi_lines);
+ ti->columns = unibi_get_num(ut, unibi_columns);
+
+ // Check for Tc or RGB
+ ti->has_Tc_or_RGB = false;
+ ti->Su = false;
+ for (size_t i = 0; i < unibi_count_ext_bool(ut); i++) {
+ const char *n = unibi_get_ext_bool_name(ut, i);
+ if (n && (!strcmp(n, "Tc") || !strcmp(n, "RGB"))) {
+ ti->has_Tc_or_RGB = true;
+ } else if (n && !strcmp(n, "Su")) {
+ ti->Su = true;
+ }
+ }
+
+ static const enum unibi_string uni_ids[] = {
+#define X(name) unibi_##name,
+ XLIST_TERMINFO_BUILTIN
+#undef X
+ };
+
+ for (size_t i = 0; i < ARRAY_SIZE(uni_ids); i++) {
+ const char *val = unibi_get_str(ut, uni_ids[i]);
+ ti->defs[i] = val ? arena_strdup(arena, val) : NULL;
+ }
+
+ static const char *uni_ext[] = {
+#define X(informal_name, terminfo_name) #terminfo_name,
+ XLIST_TERMINFO_EXT
+#undef X
+ };
+
+ for (size_t i = 0; i < ARRAY_SIZE(uni_ext); i++) {
+ ssize_t val = unibi_find_ext_str(ut, uni_ext[i]);
+ if (val >= 0) {
+ const char *data = unibi_get_ext_str(ut, (size_t)val);
+ ti->defs[kTermExtOffset + i] = data ? arena_strdup(arena, data) : NULL;
+ }
+ }
+
+ unibi_destroy(ut);
+ return true;
+}
+
+static const char *fmt(bool val)
+{
+ return val ? "true" : "false";
}
/// Dumps termcap info to the messages area.
/// Serves a similar purpose as Vim `:set termcap` (removed in Nvim).
///
-/// @note adapted from unibilium unibi-dump.c
/// @return allocated string
-String terminfo_info_msg(const unibi_term *ut, const char *termname)
+String terminfo_info_msg(const TerminfoEntry *ti, const char *termname)
{
StringBuilder data = KV_INITIAL_VALUE;
kv_printf(data, "&term: %s\n", termname);
- kv_printf(data, "Description: %s\n", unibi_get_name(ut));
- const char **a = unibi_get_aliases(ut);
- if (*a) {
- kv_printf(data, "Aliases: ");
- do {
- kv_printf(data, "%s%s\n", *a, a[1] ? " | " : "");
- a++;
- } while (*a);
- }
+ kv_printf(data, "\n");
kv_printf(data, "Boolean capabilities:\n");
- for (enum unibi_boolean i = unibi_boolean_begin_ + 1;
- i < unibi_boolean_end_; i++) {
- kv_printf(data, " %-25s %-10s = %s\n", unibi_name_bool(i),
- unibi_short_name_bool(i),
- unibi_get_bool(ut, i) ? "true" : "false");
- }
+ kv_printf(data, " back_color_erase: %s\n", fmt(ti->bce));
+ kv_printf(data, " truecolor ('Tc' or 'RGB'): %s\n", fmt(ti->has_Tc_or_RGB));
+ kv_printf(data, " extended underline ('Su'): %s\n", fmt(ti->Su));
+ kv_printf(data, "\n");
- kv_printf(data, "Numeric capabilities:\n");
- for (enum unibi_numeric i = unibi_numeric_begin_ + 1;
- i < unibi_numeric_end_; i++) {
- int n = unibi_get_num(ut, i); // -1 means "empty"
- kv_printf(data, " %-25s %-10s = %d\n", unibi_name_num(i),
- unibi_short_name_num(i), n);
- }
+ kv_printf(data, "Numeric capabilities: (-1 for unknown)\n");
+ kv_printf(data, " lines: %d\n", ti->lines);
+ kv_printf(data, " columns: %d\n", ti->columns);
+ kv_printf(data, " max_colors: %d\n", ti->columns);
+ kv_printf(data, "\n");
kv_printf(data, "String capabilities:\n");
- for (enum unibi_string i = unibi_string_begin_ + 1;
- i < unibi_string_end_; i++) {
- const char *s = unibi_get_str(ut, i);
+
+ static const char *string_names[] = {
+#define X(name) #name,
+ XLIST_TERMINFO_BUILTIN
+#undef X
+#define X(internal_name, terminfo_name) (#internal_name " (" #terminfo_name ")"),
+ XLIST_TERMINFO_EXT
+#undef X
+ };
+
+ for (size_t i = 0 + 1; i < ARRAY_SIZE(string_names); i++) {
+ const char *s = ti->defs[i];
if (s) {
- kv_printf(data, " %-25s %-10s = ", unibi_name_str(i),
- unibi_short_name_str(i));
+ kv_printf(data, " %-31s = ", string_names[i]);
// Most of these strings will contain escape sequences.
kv_transstr(&data, s, false);
kv_push(data, '\n');
}
}
- if (unibi_count_ext_bool(ut)) {
- kv_printf(data, "Extended boolean capabilities:\n");
- for (size_t i = 0; i < unibi_count_ext_bool(ut); i++) {
- kv_printf(data, " %-25s = %s\n",
- unibi_get_ext_bool_name(ut, i),
- unibi_get_ext_bool(ut, i) ? "true" : "false");
- }
+ kv_push(data, NUL);
+
+ return cbuf_as_string(data.items, data.size - 1);
+}
+
+// The implementation of terminfo_fmt() is based on NetBSD libterminfo,
+// with full license reproduced below
+
+// Copyright (c) 2009, 2011, 2013 The NetBSD Foundation, Inc.
+//
+// This code is derived from software contributed to The NetBSD Foundation
+// by Roy Marples.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// nvim modifications:
+// - use typesafe param args instead of va_args and piss
+// - caller provides the output buffer
+// - static variables are not preserved
+
+static int push(long num, char *string, TPSTACK *stack)
+{
+ if (stack->offset >= sizeof(stack->nums)) {
+ return -1;
}
+ stack->nums[stack->offset] = num;
+ stack->strings[stack->offset] = string;
+ stack->offset++;
+ return 0;
+}
- if (unibi_count_ext_num(ut)) {
- kv_printf(data, "Extended numeric capabilities:\n");
- for (size_t i = 0; i < unibi_count_ext_num(ut); i++) {
- kv_printf(data, " %-25s = %d\n",
- unibi_get_ext_num_name(ut, i),
- unibi_get_ext_num(ut, i));
+static int pop(long *num, char **string, TPSTACK *stack)
+{
+ if (stack->offset == 0) {
+ if (num) {
+ *num = 0;
+ }
+ if (string) {
+ *string = NULL;
}
+ return -1;
+ }
+ stack->offset--;
+ if (num) {
+ *num = stack->nums[stack->offset];
+ }
+ if (string) {
+ *string = stack->strings[stack->offset];
}
+ return 0;
+}
- if (unibi_count_ext_str(ut)) {
- kv_printf(data, "Extended string capabilities:\n");
- for (size_t i = 0; i < unibi_count_ext_str(ut); i++) {
- kv_printf(data, " %-25s = ", unibi_get_ext_str_name(ut, i));
- // NOTE: unibi_get_ext_str(ut, i) might be NULL, as termcap
- // might include junk data on mac os. kv_transstr will handle this.
- kv_transstr(&data, unibi_get_ext_str(ut, i), false);
- kv_push(data, '\n');
- }
+static bool ochar(char **buf, const char *buf_end, int c)
+{
+ if (c == 0) {
+ c = 0200;
}
- kv_push(data, NUL);
+ // Check we have space and a terminator
+ if (buf_end - *buf < 2) {
+ return 0;
+ }
+ *(*buf)++ = (char)c;
+ return 1;
+}
- return cbuf_as_string(data.items, data.size - 1);
+static bool onum(char **buf, const char *buf_end, const char *fmt, int num, size_t len)
+{
+ const size_t LONG_STR_MAX = 21;
+ len = MAX(len, LONG_STR_MAX);
+
+ if (buf_end - *buf < (ssize_t)(len + 2)) {
+ return 0;
+ }
+ int l = snprintf(*buf, len + 2, fmt, num);
+ if (l == -1) {
+ return 0;
+ }
+ *buf += l;
+ return true;
+}
+
+/// @return number of chars printed or 0 for any error
+size_t terminfo_fmt(char *buf_start, char *buf_end, const char *str, TPVAR params[9])
+{
+ char c, fmt[64], *fp, *ostr;
+ long val, val2;
+ long dnums[26]; // dynamic variables a-z, not preserved
+ long snums[26]; // static variables a-z, not preserved EITHER HAHA
+ memset(dnums, 0, sizeof snums);
+ memset(snums, 0, sizeof snums);
+
+ char *buf = buf_start;
+
+ size_t l, width, precision, olen;
+ TPSTACK stack;
+ unsigned done, dot, minus;
+
+ memset(&stack, 0, sizeof(stack));
+ while ((c = *str++) != '\0') {
+ if (c != '%' || (c = *str++) == '%') {
+ if (c == '\0') {
+ break;
+ }
+ if (!ochar(&buf, buf_end, c)) {
+ return false;
+ }
+ continue;
+ }
+
+ // Handle formatting.
+ fp = fmt;
+ *fp++ = '%';
+ done = dot = minus = 0;
+ width = precision = 0;
+ val = 0;
+ while (done == 0 && (size_t)(fp - fmt) < sizeof(fmt)) {
+ switch (c) {
+ case 'c':
+ case 's':
+ *fp++ = c;
+ done = 1;
+ break;
+ case 'd':
+ case 'o':
+ case 'x':
+ case 'X':
+ *fp++ = 'l';
+ *fp++ = c;
+ done = 1;
+ break;
+ case '#':
+ case ' ':
+ *fp++ = c;
+ break;
+ case '.':
+ *fp++ = c;
+ if (dot == 0) {
+ dot = 1;
+ width = (size_t)val;
+ } else {
+ done = 2;
+ }
+ val = 0;
+ break;
+ case ':':
+ minus = 1;
+ break;
+ case '-':
+ if (minus) {
+ *fp++ = c;
+ } else {
+ done = 1;
+ }
+ break;
+ default:
+ if (isdigit((unsigned char)c)) {
+ val = (val * 10) + (c - '0');
+ if (val > 10000) {
+ done = 2;
+ } else {
+ *fp++ = c;
+ }
+ } else {
+ done = 1;
+ }
+ }
+ if (done == 0) {
+ c = *str++;
+ }
+ }
+ if (done == 2) {
+ // Found an error in the format
+ fp = fmt + 1;
+ *fp = *str;
+ olen = 0;
+ } else {
+ if (dot == 0) {
+ width = (size_t)val;
+ } else {
+ precision = (size_t)val;
+ }
+ olen = MAX(width, precision);
+ }
+ *fp++ = '\0';
+
+ // Handle commands
+ switch (c) {
+ case 'c':
+ pop(&val, NULL, &stack);
+ if (!ochar(&buf, buf_end, (unsigned char)val)) {
+ return false;
+ }
+ break;
+ case 's':
+ pop(NULL, &ostr, &stack);
+ if (ostr != NULL) {
+ int r;
+
+ l = strlen(ostr);
+ if (l < olen) {
+ l = olen;
+ }
+ if ((size_t)(buf_end - buf) < (l + 1)) {
+ return false;
+ }
+ r = snprintf(buf, l + 1,
+ fmt, ostr);
+ if (r != -1) {
+ buf += (size_t)r;
+ }
+ }
+ break;
+ case 'l':
+ pop(NULL, &ostr, &stack);
+ if (ostr == NULL) {
+ l = 0;
+ } else {
+ l = strlen(ostr);
+ }
+ push((long)l, NULL, &stack);
+ break;
+ case 'd':
+ case 'o':
+ case 'x':
+ case 'X':
+ pop(&val, NULL, &stack);
+ if (onum(&buf, buf_end, fmt, (int)val, olen) == 0) {
+ return 0;
+ }
+ break;
+ case 'p':
+ if (*str < '1' || *str > '9') {
+ break;
+ }
+ l = (size_t)(*str++ - '1');
+ if (push(params[l].num, params[l].string, &stack)) {
+ return 0;
+ }
+ break;
+ case 'P':
+ pop(&val, NULL, &stack);
+ if (*str >= 'a' && *str <= 'z') {
+ dnums[*str - 'a'] = val;
+ } else if (*str >= 'A' && *str <= 'Z') {
+ snums[*str - 'A'] = val;
+ }
+ break;
+ case 'g':
+ if (*str >= 'a' && *str <= 'z') {
+ if (push(dnums[*str - 'a'], NULL, &stack)) {
+ return 0;
+ }
+ } else if (*str >= 'A' && *str <= 'Z') {
+ if (push(snums[*str - 'A'], NULL, &stack)) {
+ return 0;
+ }
+ }
+ break;
+ case 'i':
+ params[0].num++;
+ params[1].num++;
+ break;
+ case '\'':
+ if (push((long)(unsigned char)(*str++), NULL, &stack)) {
+ return 0;
+ }
+ while (*str != '\0' && *str != '\'') {
+ str++;
+ }
+ if (*str == '\'') {
+ str++;
+ }
+ break;
+ case '{':
+ val = 0;
+ for (; isdigit((unsigned char)(*str)); str++) {
+ val = (val * 10) + (*str - '0');
+ }
+ if (push(val, NULL, &stack)) {
+ return 0;
+ }
+ while (*str != '\0' && *str != '}') {
+ str++;
+ }
+ if (*str == '}') {
+ str++;
+ }
+ break;
+ case '+':
+ case '-':
+ case '*':
+ case '/':
+ case 'm':
+ case 'A':
+ case 'O':
+ case '&':
+ case '|':
+ case '^':
+ case '=':
+ case '<':
+ case '>':
+ pop(&val, NULL, &stack);
+ pop(&val2, NULL, &stack);
+ switch (c) {
+ case '+':
+ val = val + val2;
+ break;
+ case '-':
+ val = val2 - val;
+ break;
+ case '*':
+ val = val * val2;
+ break;
+ case '/':
+ val = val ? val2 / val : 0;
+ break;
+ case 'm':
+ val = val ? val2 % val : 0;
+ break;
+ case 'A':
+ val = val && val2;
+ break;
+ case 'O':
+ val = val || val2;
+ break;
+ case '&':
+ val = val & val2;
+ break;
+ case '|':
+ val = val | val2;
+ break;
+ case '^':
+ val = val ^ val2;
+ break;
+ case '=':
+ val = val == val2;
+ break;
+ case '<':
+ val = val2 < val;
+ break;
+ case '>':
+ val = val2 > val;
+ break;
+ }
+ if (push(val, NULL, &stack)) {
+ return 0;
+ }
+ break;
+ case '!':
+ case '~':
+ pop(&val, NULL, &stack);
+ switch (c) {
+ case '!':
+ val = !val;
+ break;
+ case '~':
+ val = ~val;
+ break;
+ }
+ if (push(val, NULL, &stack)) {
+ return 0;
+ }
+ break;
+ case '?': // if
+ break;
+ case 't': // then
+ pop(&val, NULL, &stack);
+ if (val == 0) {
+ l = 0;
+ for (; *str != '\0'; str++) {
+ if (*str != '%') {
+ continue;
+ }
+ str++;
+ if (*str == '?') {
+ l++;
+ } else if (*str == ';') {
+ if (l > 0) {
+ l--;
+ } else {
+ str++;
+ break;
+ }
+ } else if (*str == 'e' && l == 0) {
+ str++;
+ break;
+ }
+ }
+ }
+ break;
+ case 'e': // else
+ l = 0;
+ for (; *str != '\0'; str++) {
+ if (*str != '%') {
+ continue;
+ }
+ str++;
+ if (*str == '?') {
+ l++;
+ } else if (*str == ';') {
+ if (l > 0) {
+ l--;
+ } else {
+ str++;
+ break;
+ }
+ }
+ }
+ break;
+ case ';': // fi
+ break;
+ }
+ }
+ return (size_t)(buf - buf_start);
}
diff --git a/src/nvim/tui/terminfo.h b/src/nvim/tui/terminfo.h
@@ -1,7 +1,23 @@
#pragma once
-#include <unibilium.h> // IWYU pragma: keep
-
#include "nvim/api/private/defs.h" // IWYU pragma: keep
+#include "nvim/tui/terminfo_enum_defs.h"
+
+typedef struct {
+ bool bce;
+ // these extended booleans indicate likely 24-color support
+ bool has_Tc_or_RGB;
+ bool Su;
+
+ int max_colors;
+ int lines;
+ int columns;
+ const char *defs[kTermCount];
+} TerminfoEntry;
+
+typedef struct {
+ long num;
+ char *string;
+} TPVAR;
#include "tui/terminfo.h.generated.h"
diff --git a/src/nvim/tui/terminfo_defs.h b/src/nvim/tui/terminfo_defs.h
@@ -1,2869 +1,914 @@
// uncrustify:off
-// Generated by scripts/update_terminfo.sh and ncurses 6.4.20230520
+// Generated by src/gen/gen_terminfo.lua and ncurses 6.5.20240427
#pragma once
-#include <stdint.h>
+#include "nvim/tui/terminfo.h"
-// ansi|ansi/pc-term compatible with color,
-// auto_right_margin,
-// backspaces_with_bs,
-// move_insert_mode,
-// move_standout_mode,
-// prtr_silent,
-// AX,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#8,
-// max_pairs#64,
-// no_color_video#3,
-// acs_chars=+^P\054^Q-^X.^Y0\333`^Da\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
-// back_tab=\E[Z,
-// bell=^G,
-// carriage_return=\r,
-// clear_all_tabs=\E[3g,
-// clear_screen=\E[H\E[J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\E[B,
-// cursor_home=\E[H,
-// cursor_left=\E[D,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// enter_alt_charset_mode=\E[11m,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_pc_charset_mode=\E[11m,
-// enter_reverse_mode=\E[7m,
-// enter_secure_mode=\E[8m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// erase_chars=\E[%p1%dX,
-// exit_alt_charset_mode=\E[10m,
-// exit_attribute_mode=\E[0;10m,
-// exit_pc_charset_mode=\E[10m,
-// exit_standout_mode=\E[m,
-// exit_underline_mode=\E[m,
-// insert_line=\E[L,
-// key_backspace=^H,
-// key_btab=\E[Z,
-// key_down=\E[B,
-// key_home=\E[H,
-// key_ic=\E[L,
-// key_left=\E[D,
-// key_right=\E[C,
-// key_up=\E[A,
-// newline=\r\E[S,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// prtr_off=\E[4i,
-// prtr_on=\E[5i,
-// repeat_char=%p1%c\E[%p2%{1}%-%db,
-// row_address=\E[%i%p1%dd,
-// scroll_forward=\n,
-// set0_des_seq=\E(B,
-// set1_des_seq=\E)B,
-// set2_des_seq=\E*B,
-// set3_des_seq=\E+B,
-// set_a_background=\E[4%p1%dm,
-// set_a_foreground=\E[3%p1%dm,
-// set_attributes=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
-// set_tab=\EH,
-// tab=\E[I,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?%[;0123456789]c,
-// user9=\E[c,
-static const int8_t ansi_terminfo[] = {
- 26,1,40,0,38,0,16,0,125,1,68,2,97,110,115,105,124,97,110,115,105,47,112,99,45,116,101,114,109,32,99,111,109,112,97,116,105,98,108,101,32,119,105,116,104,32,99,111,108,111,114,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,8,0,24,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,64,0,3,0,0,0,4,0,6,0,-1,-1,8,0,13,0,20,0,24,0,28,0,-1,-1,39,0,56,0,60,0,-1,-1,64,0,-1,-1,-1,-1,68,0,-1,-1,72,0,-1,-1,76,0,80,0,-1,-1,-1,-1,84,0,90,0,95,0,-1,-1,-1,-1,-1,-1,-1,-1,100,0,-1,-1,105,0,110,0,115,0,120,0,-127,0,-121,0,-1,-1,-1,-1,-1,-1,-113,0,-109,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-105,0,-1,-1,-101,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-99,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-95,0,-91,0,-1,-1,-87,0,-1,-1,-1,-1,-1,-1,-83,0,-1,-1,-1,-1,-1,-1,-79,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-75,0,-1,-1,-70,0,-61,0,-52,0,-43,0,-34,0,-25,0,-16,0,-7,0,2,1,11,1,-1,-1,-1,-1,-1,-1,-1,-1,20,1,25,1,30,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,50,1,-1,-1,61,1,-1,-1,63,1,-107,1,-1,-1,-104,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-100,1,-1,-1,-37,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-33,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-28,1,-17,1,-12,1,7,2,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,2,30,2,-1,-1,-1,-1,-1,-1,40,2,44,2,48,2,52,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,56,2,62,2,27,91,90,0,7,0,13,0,27,91,51,103,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,27,91,66,0,27,91,72,0,27,91,68,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,27,91,49,49,109,0,27,91,53,109,0,27,91,49,109,0,27,91,56,109,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,27,91,49,48,109,0,27,91,48,59,49,48,109,0,27,91,109,0,27,91,109,0,27,91,76,0,8,0,27,91,66,0,27,91,72,0,27,91,76,0,27,91,68,0,27,91,67,0,27,91,65,0,13,27,91,83,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,27,91,52,105,0,27,91,53,105,0,37,112,49,37,99,27,91,37,112,50,37,123,49,125,37,45,37,100,98,0,27,91,37,105,37,112,49,37,100,100,0,10,0,27,91,48,59,49,48,37,63,37,112,49,37,116,59,55,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,51,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,55,37,116,59,56,37,59,37,63,37,112,57,37,116,59,49,49,37,59,109,0,27,72,0,27,91,73,0,43,16,44,17,45,24,46,25,48,-37,96,4,97,-79,102,-8,103,-15,104,-80,106,-39,107,-65,108,-38,109,-64,110,-59,111,126,112,-60,113,-60,114,-60,115,95,116,-61,117,-76,118,-63,119,-62,120,-77,121,-13,122,-14,123,-29,124,-40,125,-100,126,-2,0,27,91,90,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,37,91,59,48,49,50,51,52,53,54,55,56,57,93,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,91,51,37,112,49,37,100,109,0,27,91,52,37,112,49,37,100,109,0,27,40,66,0,27,41,66,0,27,42,66,0,27,43,66,0,27,91,49,49,109,0,27,91,49,48,109,0,1,0,0,0,0,0,1,0,3,0,1,0,0,0,65,88,0
+static const TerminfoEntry ansi_terminfo = {
+ .bce = false,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 8,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = NULL,
+ [kTerm_clear_screen] = "\033[H\033[J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\033[B",
+ [kTerm_cursor_invisible] = NULL,
+ [kTerm_cursor_left] = "\033[D",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = NULL,
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = NULL,
+ [kTerm_enter_italics_mode] = NULL,
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = "\033[%p1%dX",
+ [kTerm_exit_attribute_mode] = "\033[0;10m",
+ [kTerm_exit_ca_mode] = NULL,
+ [kTerm_from_status_line] = NULL,
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = NULL,
+ [kTerm_keypad_xmit] = NULL,
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[4%p1%dm",
+ [kTerm_set_a_foreground] = "\033[3%p1%dm",
+ [kTerm_set_attributes] = "\033[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = NULL,
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = NULL,
+ [kTerm_enter_strikethrough_mode] = NULL,
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// conemu|ANSI X3.64 and Xterm 256 colors for ConEmu with libuv,
-// auto_right_margin,
-// back_color_erase,
-// backspaces_with_bs,
-// has_meta_key,
-// move_insert_mode,
-// move_standout_mode,
-// no_pad_char,
-// AX,
-// XF,
-// XT,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// acs_chars@,
-// back_tab@,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs@,
-// clear_margins=\E[?69l,
-// clear_screen=\E[H\E[2J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\E[B,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// cursor_visible@,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// enter_alt_charset_mode@,
-// enter_am_mode@,
-// enter_blink_mode@,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[?1049h,
-// enter_dim_mode@,
-// enter_insert_mode@,
-// enter_italics_mode=\E[3m,
-// enter_reverse_mode=\E[7m,
-// enter_secure_mode@,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// erase_chars=\E[%p1%dX,
-// exit_alt_charset_mode@,
-// exit_am_mode@,
-// exit_attribute_mode=\E[0m,
-// exit_ca_mode=\E[?1049l,
-// exit_insert_mode@,
-// exit_italics_mode=\E[23m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen@,
-// init_2string@,
-// initialize_color@,
-// insert_line=\E[L,
-// key_a1=\EOw,
-// key_a3=\EOy,
-// key_b2=\E[G,
-// key_backspace=^H,
-// key_beg=\EOE,
-// key_btab=\E[Z,
-// key_c1=\EOq,
-// key_c3=\EOs,
-// key_dc=\E[3~,
-// key_down=\E[B,
-// key_end=\E[4~,
-// key_enter=\EOM,
-// key_f1=\E[[A,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[25~,
-// key_f14=\E[26~,
-// key_f15=\E[28~,
-// key_f16=\E[29~,
-// key_f17=\E[31~,
-// key_f18=\E[32~,
-// key_f19=\E[33~,
-// key_f2=\E[[B,
-// key_f20=\E[34~,
-// key_f21=\E[23$,
-// key_f22=\E[24$,
-// key_f23=\E[11\136,
-// key_f24=\E[12\136,
-// key_f25=\E[13\136,
-// key_f26=\E[14\136,
-// key_f27=\E[15\136,
-// key_f28=\E[17\136,
-// key_f29=\E[18\136,
-// key_f3=\E[[C,
-// key_f30=\E[19\136,
-// key_f31=\E[20\136,
-// key_f32=\E[21\136,
-// key_f33=\E[23\136,
-// key_f34=\E[24\136,
-// key_f35=\E[25\136,
-// key_f36=\E[26\136,
-// key_f37=\E[28\136,
-// key_f38=\E[29\136,
-// key_f39=\E[31\136,
-// key_f4=\E[[D,
-// key_f40=\E[1;6S,
-// key_f41=\E[32\136,
-// key_f42=\E[33\136,
-// key_f43=\E[34\136,
-// key_f44=\E[23@,
-// key_f45=\E[24@,
-// key_f46@,
-// key_f47@,
-// key_f48@,
-// key_f49@,
-// key_f5=\E[[E,
-// key_f50@,
-// key_f51@,
-// key_f52@,
-// key_f53@,
-// key_f54@,
-// key_f55@,
-// key_f56@,
-// key_f57@,
-// key_f58@,
-// key_f59@,
-// key_f6=\E[17~,
-// key_f60@,
-// key_f61@,
-// key_f62@,
-// key_f63@,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\E[1~,
-// key_ic=\E[2~,
-// key_left=\E[D,
-// key_mouse@,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\E[C,
-// key_sdc=\E[3;2~,
-// key_send=\E[4;2~,
-// key_sf=\E[1;2B,
-// key_shome=\E[1;2~,
-// key_sic=\E[2;2~,
-// key_sleft=\E[1;2D,
-// key_snext=\E[6;2~,
-// key_sprevious=\E[5;2~,
-// key_sr=\E[1;2A,
-// key_sright=\E[1;2C,
-// key_up=\E[A,
-// keypad_local@,
-// keypad_xmit@,
-// memory_lock@,
-// memory_unlock@,
-// meta_off@,
-// meta_on@,
-// newline=\EE,
-// orig_colors@,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// print_screen@,
-// prtr_off@,
-// prtr_on@,
-// repeat_char=%p1%c\E[%p2%{1}%-%db,
-// reset_1string@,
-// reset_2string@,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[48;5;%p1%dm,
-// set_a_foreground=\E[38;5;%p1%dm,
-// set_attributes=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p6%t;1%;m,
-// set_left_margin_parm@,
-// set_lr_margin@,
-// set_right_margin_parm@,
-// set_tab@,
-// tab=^I,
-// user6@,
-// user7@,
-// user8@,
-// user9@,
-// BD=\E[?2004l,
-// BE=\E[?2004h,
-// Cr@,
-// Cs@,
-// E3=\E[3J,
-// Ms@,
-// PE=\E[201~,
-// PS=\E[200~,
-// RV=\E[>c,
-// Se=\E[2 q,
-// Ss=\E[%p1%d q,
-// XM@,
-// XR=\E[>0q,
-// fd=\E[?1004l,
-// fe=\E[?1004h,
-// kDC3@,
-// kDC4@,
-// kDC5@,
-// kDC6@,
-// kDC7@,
-// kDN@,
-// kDN3@,
-// kDN4@,
-// kDN5@,
-// kDN6@,
-// kDN7@,
-// kEND3@,
-// kEND4@,
-// kEND5@,
-// kEND6@,
-// kEND7@,
-// kHOM3@,
-// kHOM4@,
-// kHOM5@,
-// kHOM6@,
-// kHOM7@,
-// kIC3@,
-// kIC4@,
-// kIC5@,
-// kIC6@,
-// kIC7@,
-// kLFT3@,
-// kLFT4@,
-// kLFT5@,
-// kLFT6@,
-// kLFT7@,
-// kNXT3@,
-// kNXT4@,
-// kNXT5@,
-// kNXT6@,
-// kNXT7@,
-// kPRV3@,
-// kPRV4@,
-// kPRV5@,
-// kPRV6@,
-// kPRV7@,
-// kRIT3@,
-// kRIT4@,
-// kRIT5@,
-// kRIT6@,
-// kRIT7@,
-// kUP=\E[1;2A,
-// kUP3@,
-// kUP4@,
-// kUP5@,
-// kUP6@,
-// kUP7@,
-// ka2=\EOx,
-// kb1=\EOt,
-// kb3=\EOv,
-// kc2=\EOr,
-// kp5=\EOE,
-// kpADD=\EOk,
-// kpCMA=\EOl,
-// kpDIV=\EOo,
-// kpDOT=\EOn,
-// kpMUL=\EOj,
-// kpSUB=\EOm,
-// kpZRO=\EOp,
-// kxIN=\E[I,
-// kxOUT=\E[O,
-// rmxx@,
-// rv=\E\[41;[1-6][0-9][0-9];0c,
-// smxx@,
-// xm@,
-// xr=\EP>\|XTerm\([1-9][0-9]+\)\E\\,
-static const int8_t conemu_terminfo[] = {
- 30,2,61,0,38,0,15,0,-99,1,61,3,99,111,110,101,109,117,124,65,78,83,73,32,88,51,46,54,52,32,97,110,100,32,88,116,101,114,109,32,50,53,54,32,99,111,108,111,114,115,32,102,111,114,32,67,111,110,69,109,117,32,119,105,116,104,32,108,105,98,117,118,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,-2,-1,0,0,2,0,4,0,-2,-1,21,0,29,0,33,0,37,0,-1,-1,48,0,65,0,69,0,73,0,80,0,-1,-1,82,0,89,0,-1,-1,93,0,-2,-1,97,0,101,0,-1,-1,-1,-1,-2,-1,-2,-1,105,0,110,0,-1,-1,-2,-1,-2,-1,-2,-1,-1,-1,119,0,124,0,-127,0,-122,0,-2,-1,-113,0,-108,0,-1,-1,-2,-1,-99,0,-93,0,-2,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-87,0,-1,-1,-83,0,-1,-1,-1,-1,-1,-1,-81,0,-1,-1,-76,0,-1,-1,-1,-1,-1,-1,-1,-1,-72,0,-67,0,-61,0,-56,0,-51,0,-46,0,-41,0,-35,0,-29,0,-23,0,-17,0,-12,0,-1,-1,-7,0,-1,-1,-3,0,2,1,7,1,11,1,18,1,-1,-1,25,1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,29,1,-1,-1,32,1,41,1,50,1,59,1,68,1,77,1,86,1,95,1,104,1,113,1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,122,1,-2,-1,-2,-1,-1,-1,-1,-1,-114,1,-111,1,-100,1,-97,1,-95,1,-92,1,-2,-1,-1,-1,-49,1,-1,-1,-1,-1,-1,-1,-1,-1,-47,1,-43,1,-39,1,-35,1,-31,1,-1,-1,-1,-1,-2,-1,-1,-1,-27,1,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-23,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-19,1,-14,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-10,1,-1,-1,-1,-1,-3,1,-1,-1,-1,-1,-1,-1,-1,-1,4,2,11,2,18,2,-1,-1,-1,-1,25,2,-1,-1,32,2,-1,-1,-1,-1,-1,-1,39,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,2,52,2,58,2,64,2,70,2,76,2,82,2,88,2,94,2,100,2,106,2,112,2,118,2,124,2,-126,2,-120,2,-114,2,-108,2,-102,2,-96,2,-90,2,-84,2,-78,2,-72,2,-66,2,-60,2,-54,2,-48,2,-42,2,-36,2,-29,2,-23,2,-17,2,-11,2,-5,2,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,1,3,6,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,13,3,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,22,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,27,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,33,3,47,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,72,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,27,91,66,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,27,91,49,109,0,27,91,63,49,48,52,57,104,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,27,91,48,109,0,27,91,63,49,48,52,57,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,76,0,8,0,27,91,51,126,0,27,91,66,0,27,91,91,65,0,27,91,50,49,126,0,27,91,91,66,0,27,91,91,67,0,27,91,91,68,0,27,91,91,69,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,91,68,0,27,91,54,126,0,27,91,53,126,0,27,91,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,91,65,0,27,69,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,37,112,49,37,99,27,91,37,112,50,37,123,49,125,37,45,37,100,98,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,54,37,116,59,49,37,59,109,0,9,0,27,79,119,0,27,79,121,0,27,91,71,0,27,79,113,0,27,79,115,0,27,91,90,0,27,79,69,0,27,91,52,126,0,27,79,77,0,27,91,51,59,50,126,0,27,91,52,59,50,126,0,27,91,49,59,50,126,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,50,51,36,0,27,91,50,52,36,0,27,91,49,49,94,0,27,91,49,50,94,0,27,91,49,51,94,0,27,91,49,52,94,0,27,91,49,53,94,0,27,91,49,55,94,0,27,91,49,56,94,0,27,91,49,57,94,0,27,91,50,48,94,0,27,91,50,49,94,0,27,91,50,51,94,0,27,91,50,52,94,0,27,91,50,53,94,0,27,91,50,54,94,0,27,91,50,56,94,0,27,91,50,57,94,0,27,91,51,49,94,0,27,91,49,59,54,83,0,27,91,51,50,94,0,27,91,51,51,94,0,27,91,51,52,94,0,27,91,50,51,64,0,27,91,50,52,64,0,27,91,49,75,0,27,91,63,54,57,108,0,27,91,51,57,59,52,57,109,0,27,91,51,109,0,27,91,50,51,109,0,27,91,51,56,59,53,59,37,112,49,37,100,109,0,27,91,52,56,59,53,59,37,112,49,37,100,109,0,0,3,0,0,0,86,0,117,0,121,2,1,1,1,0,0,0,9,0,-2,-1,-2,-1,18,0,-2,-1,23,0,30,0,37,0,42,0,48,0,-2,-1,58,0,64,0,73,0,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,82,0,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,89,0,93,0,97,0,101,0,105,0,109,0,113,0,117,0,121,0,125,0,-127,0,-123,0,-119,0,-115,0,-2,-1,-111,0,-2,-1,-2,-1,-86,0,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,30,0,33,0,36,0,39,0,42,0,45,0,48,0,51,0,54,0,59,0,64,0,69,0,74,0,79,0,83,0,88,0,93,0,98,0,103,0,108,0,114,0,120,0,126,0,-124,0,-118,0,-112,0,-106,0,-100,0,-94,0,-88,0,-83,0,-78,0,-73,0,-68,0,-63,0,-57,0,-51,0,-45,0,-39,0,-33,0,-27,0,-21,0,-15,0,-9,0,-3,0,3,1,9,1,15,1,21,1,27,1,33,1,39,1,45,1,51,1,57,1,61,1,66,1,71,1,76,1,81,1,86,1,90,1,94,1,98,1,102,1,106,1,112,1,118,1,124,1,-126,1,-120,1,-114,1,-108,1,-103,1,-97,1,-92,1,-89,1,-84,1,-81,1,27,91,63,50,48,48,52,108,0,27,91,63,50,48,48,52,104,0,27,91,51,74,0,27,91,50,48,49,126,0,27,91,50,48,48,126,0,27,91,62,99,0,27,91,50,32,113,0,27,91,37,112,49,37,100,32,113,0,27,91,62,48,113,0,27,91,63,49,48,48,52,108,0,27,91,63,49,48,48,52,104,0,27,91,49,59,50,65,0,27,79,120,0,27,79,116,0,27,79,118,0,27,79,114,0,27,79,69,0,27,79,107,0,27,79,108,0,27,79,111,0,27,79,110,0,27,79,106,0,27,79,109,0,27,79,112,0,27,91,73,0,27,91,79,0,27,92,91,52,49,59,91,49,45,54,93,91,48,45,57,93,91,48,45,57,93,59,48,99,0,27,80,62,92,124,88,84,101,114,109,92,40,91,49,45,57,93,91,48,45,57,93,43,92,41,27,92,92,0,65,88,0,88,70,0,88,84,0,66,68,0,66,69,0,67,114,0,67,115,0,69,51,0,77,115,0,80,69,0,80,83,0,82,86,0,83,101,0,83,115,0,88,77,0,88,82,0,102,100,0,102,101,0,107,68,67,51,0,107,68,67,52,0,107,68,67,53,0,107,68,67,54,0,107,68,67,55,0,107,68,78,0,107,68,78,51,0,107,68,78,52,0,107,68,78,53,0,107,68,78,54,0,107,68,78,55,0,107,69,78,68,51,0,107,69,78,68,52,0,107,69,78,68,53,0,107,69,78,68,54,0,107,69,78,68,55,0,107,72,79,77,51,0,107,72,79,77,52,0,107,72,79,77,53,0,107,72,79,77,54,0,107,72,79,77,55,0,107,73,67,51,0,107,73,67,52,0,107,73,67,53,0,107,73,67,54,0,107,73,67,55,0,107,76,70,84,51,0,107,76,70,84,52,0,107,76,70,84,53,0,107,76,70,84,54,0,107,76,70,84,55,0,107,78,88,84,51,0,107,78,88,84,52,0,107,78,88,84,53,0,107,78,88,84,54,0,107,78,88,84,55,0,107,80,82,86,51,0,107,80,82,86,52,0,107,80,82,86,53,0,107,80,82,86,54,0,107,80,82,86,55,0,107,82,73,84,51,0,107,82,73,84,52,0,107,82,73,84,53,0,107,82,73,84,54,0,107,82,73,84,55,0,107,85,80,0,107,85,80,51,0,107,85,80,52,0,107,85,80,53,0,107,85,80,54,0,107,85,80,55,0,107,97,50,0,107,98,49,0,107,98,51,0,107,99,50,0,107,112,53,0,107,112,65,68,68,0,107,112,67,77,65,0,107,112,68,73,86,0,107,112,68,79,84,0,107,112,77,85,76,0,107,112,83,85,66,0,107,112,90,82,79,0,107,120,73,78,0,107,120,79,85,84,0,114,109,120,120,0,114,118,0,115,109,120,120,0,120,109,0,120,114,0
+static const TerminfoEntry interix_8colour_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 8,
+ .lines = 25,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = NULL,
+ [kTerm_clear_screen] = "\033[2J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\n",
+ [kTerm_cursor_invisible] = NULL,
+ [kTerm_cursor_left] = "\033[D",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = NULL,
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[s\033[1b",
+ [kTerm_enter_italics_mode] = NULL,
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = NULL,
+ [kTerm_exit_attribute_mode] = "\033[0m",
+ [kTerm_exit_ca_mode] = "\033[2b\033[u\r\033[K",
+ [kTerm_from_status_line] = NULL,
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = NULL,
+ [kTerm_keypad_xmit] = NULL,
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[4%p1%dm",
+ [kTerm_set_a_foreground] = "\033[3%p1%dm",
+ [kTerm_set_attributes] = NULL,
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = NULL,
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = NULL,
+ [kTerm_enter_strikethrough_mode] = NULL,
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// cygwin|ANSI emulation for Cygwin,
-// auto_right_margin,
-// has_status_line,
-// move_insert_mode,
-// move_standout_mode,
-// xon_xoff,
-// init_tabs#8,
-// max_colors#8,
-// max_pairs#64,
-// acs_chars=+^P\054^Q-^X.^Y0\333`^Da\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
-// bell=^G,
-// carriage_return=\r,
-// clear_screen=\E[H\E[J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\E[B,
-// cursor_home=\E[H,
-// cursor_left=^H,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// enter_alt_charset_mode=\E[11m,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E7\E[?47h,
-// enter_insert_mode=\E[4h,
-// enter_pc_charset_mode=\E[11m,
-// enter_reverse_mode=\E[7m,
-// enter_secure_mode=\E[8m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// exit_alt_charset_mode=\E[10m,
-// exit_attribute_mode=\E[0;10m,
-// exit_ca_mode=\E[2J\E[?47l\E8,
-// exit_insert_mode=\E[4l,
-// exit_pc_charset_mode=\E[10m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// from_status_line=^G,
-// insert_character=\E[@,
-// insert_line=\E[L,
-// key_b2=\E[G,
-// key_backspace=^H,
-// key_dc=\E[3~,
-// key_down=\E[B,
-// key_end=\E[4~,
-// key_f1=\E[[A,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[25~,
-// key_f14=\E[26~,
-// key_f15=\E[28~,
-// key_f16=\E[29~,
-// key_f17=\E[31~,
-// key_f18=\E[32~,
-// key_f19=\E[33~,
-// key_f2=\E[[B,
-// key_f20=\E[34~,
-// key_f3=\E[[C,
-// key_f4=\E[[D,
-// key_f5=\E[[E,
-// key_f6=\E[17~,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\E[1~,
-// key_ic=\E[2~,
-// key_left=\E[D,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\E[C,
-// key_suspend=^Z,
-// key_up=\E[A,
-// newline=\r\n,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_up_cursor=\E[%p1%dA,
-// reset_1string=\Ec\E]R,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[4%p1%dm,
-// set_a_foreground=\E[3%p1%dm,
-// set_attributes=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
-// tab=^I,
-// to_status_line=\E];,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?6c,
-// user9=\E[c,
-static const int8_t cygwin_terminfo[] = {
- 26,1,33,0,21,0,15,0,125,1,-108,2,99,121,103,119,105,110,124,65,78,83,73,32,101,109,117,108,97,116,105,111,110,32,102,111,114,32,67,121,103,119,105,110,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,-1,-1,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,64,0,-1,-1,0,0,2,0,-1,-1,-1,-1,4,0,11,0,15,0,19,0,-1,-1,30,0,47,0,51,0,-1,-1,55,0,-1,-1,-1,-1,57,0,-1,-1,61,0,-1,-1,65,0,69,0,-1,-1,-1,-1,73,0,-1,-1,79,0,84,0,-1,-1,-1,-1,93,0,98,0,-1,-1,103,0,108,0,113,0,-1,-1,118,0,124,0,-124,0,-1,-1,-111,0,-106,0,-100,0,-1,-1,-1,-1,-94,0,-1,-1,-1,-1,-1,-1,-1,-1,-92,0,-88,0,-1,-1,-84,0,-1,-1,-1,-1,-1,-1,-82,0,-1,-1,-77,0,-1,-1,-1,-1,-1,-1,-1,-1,-73,0,-68,0,-62,0,-57,0,-52,0,-47,0,-42,0,-36,0,-30,0,-24,0,-18,0,-13,0,-1,-1,-8,0,-1,-1,-4,0,1,1,6,1,-1,-1,-1,-1,-1,-1,10,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,14,1,-1,-1,17,1,26,1,35,1,44,1,-1,-1,53,1,62,1,71,1,-1,-1,80,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,89,1,-1,-1,-1,-1,-1,-1,95,1,98,1,109,1,112,1,114,1,117,1,-1,-1,-1,-1,-64,1,-62,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-58,1,-1,-1,-1,-1,-1,-1,-1,-1,-54,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,14,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,16,2,22,2,28,2,34,2,40,2,46,2,52,2,58,2,64,2,70,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,76,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,81,2,92,2,97,2,103,2,107,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,116,2,126,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-120,2,-114,2,7,0,13,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,27,91,66,0,27,91,72,0,8,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,27,91,49,49,109,0,27,91,49,109,0,27,55,27,91,63,52,55,104,0,27,91,52,104,0,27,91,56,109,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,49,48,109,0,27,91,48,59,49,48,109,0,27,91,50,74,27,91,63,52,55,108,27,56,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,7,0,27,91,64,0,27,91,76,0,8,0,27,91,51,126,0,27,91,66,0,27,91,91,65,0,27,91,50,49,126,0,27,91,91,66,0,27,91,91,67,0,27,91,91,68,0,27,91,91,69,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,91,68,0,27,91,54,126,0,27,91,53,126,0,27,91,67,0,27,91,65,0,13,10,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,65,0,27,99,27,93,82,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,59,49,48,37,63,37,112,49,37,116,59,55,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,51,37,116,59,55,37,59,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,55,37,116,59,56,37,59,37,63,37,112,57,37,116,59,49,49,37,59,109,0,9,0,27,93,59,0,27,91,71,0,43,16,44,17,45,24,46,25,48,-37,96,4,97,-79,102,-8,103,-15,104,-80,106,-39,107,-65,108,-38,109,-64,110,-59,111,126,112,-60,113,-60,114,-60,115,95,116,-61,117,-76,118,-63,119,-62,120,-77,121,-13,122,-14,123,-29,124,-40,125,-100,126,-2,0,27,91,52,126,0,26,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,54,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,91,51,37,112,49,37,100,109,0,27,91,52,37,112,49,37,100,109,0,27,91,49,49,109,0,27,91,49,48,109,0
+static const TerminfoEntry iterm_256colour_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\n",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[?25h",
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[?1049h\033[22;0;0t",
+ [kTerm_enter_italics_mode] = "\033[3m",
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = NULL,
+ [kTerm_exit_attribute_mode] = "\033[m\017",
+ [kTerm_exit_ca_mode] = "\033[?1049l\033[23;0;0t",
+ [kTerm_from_status_line] = "\a",
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = "\033[?1l\033>",
+ [kTerm_keypad_xmit] = "\033[?1h\033=",
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
+ [kTerm_set_a_foreground] = "\033[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
+ [kTerm_set_attributes] = "\033[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t^N%e\017%;",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = "\033]2;",
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = NULL,
+ [kTerm_enter_strikethrough_mode] = "\033[9m",
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = "\033[4\072%p1%dm",
+ },
};
-// interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with color,
-// auto_right_margin,
-// back_color_erase,
-// move_standout_mode,
-// columns#80,
-// init_tabs#8,
-// lines#25,
-// max_colors#8,
-// max_pairs#64,
-// no_color_video#3,
-// acs_chars=+^P\054^Q-^X.^Y0\333`^Da\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
-// bell=^G,
-// carriage_return=\r,
-// clear_screen=\E[2J,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\n,
-// cursor_home=\E[H,
-// cursor_left=\E[D,
-// cursor_right=\E[C,
-// cursor_to_ll=\E[U,
-// cursor_up=\E[A,
-// delete_line=\E[M,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[s\E[1b,
-// enter_reverse_mode=\E[7m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// exit_attribute_mode=\E[0m,
-// exit_ca_mode=\E[2b\E[u\r\E[K,
-// exit_standout_mode=\E[m,
-// exit_underline_mode=\E[m,
-// insert_line=\E[L,
-// key_backspace=^H,
-// key_btab=\E[Z,
-// key_dc=\177,
-// key_down=\E[B,
-// key_end=\E[U,
-// key_f0=\EFA,
-// key_f1=\EF1,
-// key_f10=\EFA,
-// key_f11=\EFB,
-// key_f12=\EFC,
-// key_f13=\EFD,
-// key_f14=\EFE,
-// key_f15=\EFF,
-// key_f16=\EFG,
-// key_f17=\EFH,
-// key_f18=\EFI,
-// key_f19=\EFJ,
-// key_f2=\EF2,
-// key_f20=\EFK,
-// key_f21=\EFL,
-// key_f22=\EFM,
-// key_f23=\EFN,
-// key_f24=\EFO,
-// key_f25=\EFP,
-// key_f26=\EFQ,
-// key_f27=\EFR,
-// key_f28=\EFS,
-// key_f29=\EFT,
-// key_f3=\EF3,
-// key_f30=\EFU,
-// key_f31=\EFV,
-// key_f32=\EFW,
-// key_f33=\EFX,
-// key_f34=\EFY,
-// key_f35=\EFZ,
-// key_f36=\EFa,
-// key_f37=\EFb,
-// key_f38=\EFc,
-// key_f39=\EFd,
-// key_f4=\EF4,
-// key_f40=\EFe,
-// key_f41=\EFf,
-// key_f42=\EFg,
-// key_f43=\EFh,
-// key_f44=\EFi,
-// key_f45=\EFj,
-// key_f46=\EFk,
-// key_f47=\EFm,
-// key_f48=\EFn,
-// key_f49=\EFo,
-// key_f5=\EF5,
-// key_f50=\EFp,
-// key_f51=\EFq,
-// key_f52=\EFr,
-// key_f53=\EFs,
-// key_f54=\EFt,
-// key_f55=\EFu,
-// key_f56=\EFv,
-// key_f57=\EFw,
-// key_f58=\EFx,
-// key_f59=\EFy,
-// key_f6=\EF6,
-// key_f60=\EFz,
-// key_f7=\EF7,
-// key_f8=\EF8,
-// key_f9=\EF9,
-// key_home=\E[H,
-// key_ic=\E[L,
-// key_left=\E[D,
-// key_ll=\E[U,
-// key_npage=\E[T,
-// key_ppage=\E[S,
-// key_right=\E[C,
-// key_sf=\EF+,
-// key_sleft=\EF\136,
-// key_sr=\EF-,
-// key_sright=\EF$,
-// key_up=\E[A,
-// newline=\r\n,
-// orig_pair=\E[m,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// reset_1string=\Ec,
-// restore_cursor=\E[u,
-// save_cursor=\E[s,
-// scroll_forward=\E[S,
-// scroll_reverse=\E[T,
-// set_a_background=\E[4%p1%dm,
-// set_a_foreground=\E[3%p1%dm,
-// tab=^I,
-static const int8_t interix_8colour_terminfo[] = {
- 26,1,82,0,29,0,16,0,105,1,96,2,105,110,116,101,114,105,120,124,111,112,101,110,110,116,124,111,112,101,110,110,116,45,50,53,124,110,116,99,111,110,115,111,108,101,124,110,116,99,111,110,115,111,108,101,45,50,53,124,79,112,101,110,78,84,45,116,101,114,109,32,99,111,109,112,97,116,105,98,108,101,32,119,105,116,104,32,99,111,108,111,114,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,80,0,8,0,25,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,64,0,3,0,-1,-1,0,0,2,0,-1,-1,-1,-1,4,0,9,0,13,0,-1,-1,-1,-1,17,0,34,0,36,0,-1,-1,40,0,-1,-1,-1,-1,44,0,48,0,52,0,-1,-1,-1,-1,56,0,-1,-1,-1,-1,-1,-1,-1,-1,60,0,65,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,73,0,78,0,83,0,-1,-1,-1,-1,88,0,93,0,-1,-1,-1,-1,105,0,109,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,113,0,-1,-1,117,0,-1,-1,-1,-1,-1,-1,119,0,-1,-1,121,0,-1,-1,-1,-1,-1,-1,125,0,-127,0,-123,0,-119,0,-115,0,-111,0,-107,0,-103,0,-99,0,-95,0,-91,0,-87,0,-83,0,-1,-1,-79,0,-75,0,-71,0,-67,0,-63,0,-59,0,-55,0,-1,-1,-51,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-47,0,-1,-1,-1,-1,-44,0,-35,0,-1,-1,-26,0,-17,0,-8,0,1,1,10,1,19,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,28,1,-1,-1,-1,-1,-1,-1,31,1,-1,-1,35,1,39,1,43,1,-1,-1,-1,-1,-1,-1,47,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,1,-1,-1,112,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,116,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,120,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,124,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-128,1,-124,1,-120,1,-116,1,-112,1,-108,1,-104,1,-100,1,-96,1,-92,1,-88,1,-84,1,-80,1,-76,1,-72,1,-68,1,-64,1,-60,1,-56,1,-52,1,-48,1,-44,1,-40,1,-36,1,-32,1,-28,1,-24,1,-20,1,-16,1,-12,1,-8,1,-4,1,0,2,4,2,8,2,12,2,16,2,20,2,24,2,28,2,32,2,36,2,40,2,44,2,48,2,52,2,56,2,60,2,64,2,68,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,72,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,76,2,86,2,7,0,13,0,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,68,0,27,91,67,0,27,91,85,0,27,91,65,0,27,91,77,0,27,91,49,109,0,27,91,115,27,91,49,98,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,48,109,0,27,91,50,98,27,91,117,13,27,91,75,0,27,91,109,0,27,91,109,0,27,91,76,0,8,0,127,0,27,91,66,0,27,70,65,0,27,70,49,0,27,70,65,0,27,70,50,0,27,70,51,0,27,70,52,0,27,70,53,0,27,70,54,0,27,70,55,0,27,70,56,0,27,70,57,0,27,91,72,0,27,91,76,0,27,91,68,0,27,91,85,0,27,91,84,0,27,91,83,0,27,91,67,0,27,70,43,0,27,70,45,0,27,91,65,0,13,10,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,27,99,0,27,91,117,0,27,91,115,0,27,91,83,0,27,91,84,0,9,0,43,16,44,17,45,24,46,25,48,-37,96,4,97,-79,102,-8,103,-15,104,-80,106,-39,107,-65,108,-38,109,-64,110,-59,111,126,112,-60,113,-60,114,-60,115,95,116,-61,117,-76,118,-63,119,-62,120,-77,121,-13,122,-14,123,-29,124,-40,125,-100,126,-2,0,27,91,90,0,27,91,85,0,27,70,94,0,27,70,36,0,27,70,66,0,27,70,67,0,27,70,68,0,27,70,69,0,27,70,70,0,27,70,71,0,27,70,72,0,27,70,73,0,27,70,74,0,27,70,75,0,27,70,76,0,27,70,77,0,27,70,78,0,27,70,79,0,27,70,80,0,27,70,81,0,27,70,82,0,27,70,83,0,27,70,84,0,27,70,85,0,27,70,86,0,27,70,87,0,27,70,88,0,27,70,89,0,27,70,90,0,27,70,97,0,27,70,98,0,27,70,99,0,27,70,100,0,27,70,101,0,27,70,102,0,27,70,103,0,27,70,104,0,27,70,105,0,27,70,106,0,27,70,107,0,27,70,109,0,27,70,110,0,27,70,111,0,27,70,112,0,27,70,113,0,27,70,114,0,27,70,115,0,27,70,116,0,27,70,117,0,27,70,118,0,27,70,119,0,27,70,120,0,27,70,121,0,27,70,122,0,27,91,109,0,27,91,51,37,112,49,37,100,109,0,27,91,52,37,112,49,37,100,109,0
+static const TerminfoEntry linux_16colour_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 8,
+ .lines = -1,
+ .columns = -1,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\n",
+ [kTerm_cursor_invisible] = "\033[?25l\033[?1c",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[?25h\033[?0c",
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = NULL,
+ [kTerm_enter_italics_mode] = NULL,
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = "\033[%p1%dX",
+ [kTerm_exit_attribute_mode] = "\033[m\017",
+ [kTerm_exit_ca_mode] = NULL,
+ [kTerm_from_status_line] = NULL,
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = NULL,
+ [kTerm_keypad_xmit] = NULL,
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[4%p1%dm",
+ [kTerm_set_a_foreground] = "\033[3%p1%dm",
+ [kTerm_set_attributes] = "\033[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;m%?%p9%t^N%e\017%;",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = NULL,
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = NULL,
+ [kTerm_enter_strikethrough_mode] = NULL,
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// iTerm2.app|iterm2|terminal emulator for Mac OS X,
-// auto_right_margin,
-// back_color_erase,
-// eat_newline_glitch,
-// has_status_line,
-// move_insert_mode,
-// move_standout_mode,
-// no_pad_char,
-// xon_xoff,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// width_status_line#50,
-// acs_chars=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-// back_tab=\E[Z,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs=\E[3g,
-// clear_screen=\E[H\E[J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\n,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// dis_status_line=\E]2;^G,
-// ena_acs=\E(B\E)0,
-// enter_alt_charset_mode=^N,
-// enter_am_mode=\E[?7h,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[?1049h\E[22;0;0t,
-// enter_dim_mode=\E[2m,
-// enter_insert_mode=\E[4h,
-// enter_italics_mode=\E[3m,
-// enter_reverse_mode=\E[7m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// exit_alt_charset_mode=^O,
-// exit_am_mode=\E[?7l,
-// exit_attribute_mode=\E[m^O,
-// exit_ca_mode=\E[?1049l\E[23;0;0t,
-// exit_insert_mode=\E[4l,
-// exit_italics_mode=\E[23m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen=\E[?5h$<200/>\E[?5l,
-// from_status_line=^G,
-// insert_character=\E[@,
-// insert_line=\E[L,
-// key_a1@,
-// key_a3@,
-// key_b2@,
-// key_backspace=\177,
-// key_btab=\E[Z,
-// key_c1@,
-// key_c3@,
-// key_dc=\E[3~,
-// key_down=\EOB,
-// key_end=\EOF,
-// key_enter@,
-// key_f1=\EOP,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[1;2P,
-// key_f14=\E[1;2Q,
-// key_f15=\E[1;2R,
-// key_f16=\E[1;2S,
-// key_f17=\E[15;2~,
-// key_f18=\E[17;2~,
-// key_f19=\E[18;2~,
-// key_f2=\EOQ,
-// key_f20=\E[19;2~,
-// key_f21=\E[20;2~,
-// key_f22=\E[21;2~,
-// key_f23=\E[23;2~,
-// key_f24=\E[24;2~,
-// key_f3=\EOR,
-// key_f4=\EOS,
-// key_f5=\E[15~,
-// key_f6=\E[17~,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\EOH,
-// key_left=\EOD,
-// key_mouse=\E[M,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\EOC,
-// key_send=\E[1;2F,
-// key_sf=\E[1;2B,
-// key_shome=\E[1;2H,
-// key_sleft=\E[1;2D,
-// key_sr=\E[1;2A,
-// key_sright=\E[1;2C,
-// key_up=\EOA,
-// keypad_local=\E[?1l\E>,
-// keypad_xmit=\E[?1h\E=,
-// newline=\EE,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// reset_2string=\E[\041p\E[?3;4l\E[4l\E>\E[?1000l,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
-// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
-// set_attributes=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t^N%e^O%;,
-// set_tab=\EH,
-// tab=^I,
-// to_status_line=\E]2;,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?%[;0123456789]c,
-// user9=\E[c,
-// BD=\E[?2004l,
-// BE=\E[?2004h,
-// PE=\E[201~,
-// PS=\E[200~,
-// TS=\E]2;,
-// XM=\E[?1000%?%p1%{1}%=%th%el%;,
-// kDN3=\E\E[B,
-// kDN4=\E[1;10B,
-// kDN5=\E[1;5B,
-// kDN6=\E[1;6B,
-// kEND3=\E[1;9F,
-// kEND4=\E[1;10F,
-// kEND5=\E[1;5F,
-// kEND6=\E[1;6F,
-// kEND7=\E[1;13F,
-// kEND8=\E[1;14F,
-// kHOM3=\E[1;9H,
-// kHOM4=\E[1;10H,
-// kHOM5=\E[1;5H,
-// kHOM6=\E[1;6H,
-// kHOM7=\E[1;13H,
-// kHOM8=\E[1;14H,
-// kLFT3=\E\E[D,
-// kLFT4=\E[1;10D,
-// kLFT5=\E[1;5D,
-// kLFT6=\E[1;6D,
-// kNXT3=\E\E[6~,
-// kPRV3=\E\E[5~,
-// kRIT3=\E\E[C,
-// kRIT4=\E[1;10C,
-// kRIT5=\E[1;5C,
-// kRIT6=\E[1;6C,
-// kUP3=\E\E[A,
-// kUP4=\E[1;10A,
-// kUP5=\E[1;5A,
-// kUP6=\E[1;6A,
-// xm=\E[M%?%p4%t%p3%e%{3}%;%' '%+%c%p2%'\041'%+%c%p1%'\041'%+%c,
-static const int8_t iterm_256colour_terminfo[] = {
- 30,2,49,0,29,0,15,0,105,1,-29,3,105,84,101,114,109,50,46,97,112,112,124,105,116,101,114,109,50,124,116,101,114,109,105,110,97,108,32,101,109,117,108,97,116,111,114,32,102,111,114,32,77,97,99,32,79,83,32,88,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,50,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,0,0,4,0,6,0,8,0,25,0,30,0,37,0,41,0,45,0,-1,-1,56,0,73,0,75,0,79,0,86,0,-1,-1,88,0,95,0,-1,-1,99,0,-1,-1,103,0,107,0,111,0,-1,-1,117,0,119,0,124,0,-127,0,-1,-1,-109,0,-104,0,-1,-1,-1,-1,-99,0,-94,0,-89,0,-1,-1,-84,0,-82,0,-77,0,-1,-1,-59,0,-54,0,-48,0,-42,0,-1,-1,-24,0,-1,-1,-1,-1,-1,-1,-1,-1,-22,0,-18,0,-1,-1,-14,0,-1,-1,-1,-1,-1,-1,-12,0,-1,-1,-7,0,-1,-1,-1,-1,-1,-1,-1,-1,-3,0,1,1,7,1,11,1,15,1,19,1,25,1,31,1,37,1,43,1,49,1,-1,-1,-1,-1,53,1,-1,-1,57,1,62,1,67,1,71,1,78,1,-1,-1,85,1,89,1,97,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,105,1,-1,-1,108,1,117,1,126,1,-121,1,-112,1,-103,1,-94,1,-85,1,-76,1,-67,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-58,1,-1,-1,-1,-1,-32,1,-29,1,-18,1,-15,1,-13,1,-10,1,68,2,-1,-1,71,2,73,2,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-1,-1,-1,-1,78,2,-1,-1,-127,2,-1,-1,-1,-1,-123,2,-117,2,-1,-1,-1,-1,-111,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-104,2,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-100,2,-1,-1,-1,-1,-1,-1,-1,-1,-93,2,-1,-1,-86,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-79,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-72,2,-66,2,-60,2,-53,2,-46,2,-39,2,-32,2,-24,2,-16,2,-8,2,0,3,8,3,16,3,24,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,32,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,37,3,48,3,53,3,72,3,76,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,85,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,90,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,96,3,-1,-1,-1,-1,-1,-1,100,3,-93,3,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,27,93,50,59,7,0,14,0,27,91,53,109,0,27,91,49,109,0,27,91,63,49,48,52,57,104,27,91,50,50,59,48,59,48,116,0,27,91,50,109,0,27,91,52,104,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,15,0,27,91,109,15,0,27,91,63,49,48,52,57,108,27,91,50,51,59,48,59,48,116,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,63,53,104,36,60,50,48,48,47,62,27,91,63,53,108,0,7,0,27,91,64,0,27,91,76,0,127,0,27,91,51,126,0,27,79,66,0,27,79,80,0,27,91,50,49,126,0,27,79,81,0,27,79,82,0,27,79,83,0,27,91,49,53,126,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,79,72,0,27,79,68,0,27,91,54,126,0,27,91,53,126,0,27,79,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,79,65,0,27,91,63,49,108,27,62,0,27,91,63,49,104,27,61,0,27,69,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,27,91,33,112,27,91,63,51,59,52,108,27,91,52,108,27,62,27,91,63,49,48,48,48,108,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,37,63,37,112,53,37,116,59,50,37,59,109,37,63,37,112,57,37,116,14,37,101,15,37,59,0,27,72,0,9,0,27,93,50,59,0,96,96,97,97,102,102,103,103,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,91,90,0,27,91,63,55,104,0,27,91,63,55,108,0,27,40,66,27,41,48,0,27,79,70,0,27,91,49,59,50,70,0,27,91,49,59,50,72,0,27,91,49,59,50,68,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,49,59,50,80,0,27,91,49,59,50,81,0,27,91,49,59,50,82,0,27,91,49,59,50,83,0,27,91,49,53,59,50,126,0,27,91,49,55,59,50,126,0,27,91,49,56,59,50,126,0,27,91,49,57,59,50,126,0,27,91,50,48,59,50,126,0,27,91,50,49,59,50,126,0,27,91,50,51,59,50,126,0,27,91,50,52,59,50,126,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,37,91,59,48,49,50,51,52,53,54,55,56,57,93,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,91,51,109,0,27,91,50,51,109,0,27,91,77,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,0,0,0,0,0,37,0,74,0,7,2,0,0,9,0,18,0,25,0,32,0,37,0,64,0,69,0,77,0,84,0,91,0,98,0,106,0,113,0,120,0,-128,0,-120,0,-113,0,-105,0,-98,0,-91,0,-83,0,-75,0,-70,0,-62,0,-55,0,-48,0,-42,0,-36,0,-31,0,-23,0,-16,0,-9,0,-4,0,4,1,11,1,18,1,0,0,3,0,6,0,9,0,12,0,15,0,18,0,23,0,28,0,33,0,38,0,44,0,50,0,56,0,62,0,68,0,74,0,80,0,86,0,92,0,98,0,104,0,110,0,116,0,122,0,-128,0,-122,0,-116,0,-110,0,-104,0,-98,0,-92,0,-86,0,-81,0,-76,0,-71,0,-66,0,27,91,63,50,48,48,52,108,0,27,91,63,50,48,48,52,104,0,27,91,50,48,49,126,0,27,91,50,48,48,126,0,27,93,50,59,0,27,91,63,49,48,48,48,37,63,37,112,49,37,123,49,125,37,61,37,116,104,37,101,108,37,59,0,27,27,91,66,0,27,91,49,59,49,48,66,0,27,91,49,59,53,66,0,27,91,49,59,54,66,0,27,91,49,59,57,70,0,27,91,49,59,49,48,70,0,27,91,49,59,53,70,0,27,91,49,59,54,70,0,27,91,49,59,49,51,70,0,27,91,49,59,49,52,70,0,27,91,49,59,57,72,0,27,91,49,59,49,48,72,0,27,91,49,59,53,72,0,27,91,49,59,54,72,0,27,91,49,59,49,51,72,0,27,91,49,59,49,52,72,0,27,27,91,68,0,27,91,49,59,49,48,68,0,27,91,49,59,53,68,0,27,91,49,59,54,68,0,27,27,91,54,126,0,27,27,91,53,126,0,27,27,91,67,0,27,91,49,59,49,48,67,0,27,91,49,59,53,67,0,27,91,49,59,54,67,0,27,27,91,65,0,27,91,49,59,49,48,65,0,27,91,49,59,53,65,0,27,91,49,59,54,65,0,27,91,77,37,63,37,112,52,37,116,37,112,51,37,101,37,123,51,125,37,59,37,39,32,39,37,43,37,99,37,112,50,37,39,33,39,37,43,37,99,37,112,49,37,39,33,39,37,43,37,99,0,66,68,0,66,69,0,80,69,0,80,83,0,84,83,0,88,77,0,107,68,78,51,0,107,68,78,52,0,107,68,78,53,0,107,68,78,54,0,107,69,78,68,51,0,107,69,78,68,52,0,107,69,78,68,53,0,107,69,78,68,54,0,107,69,78,68,55,0,107,69,78,68,56,0,107,72,79,77,51,0,107,72,79,77,52,0,107,72,79,77,53,0,107,72,79,77,54,0,107,72,79,77,55,0,107,72,79,77,56,0,107,76,70,84,51,0,107,76,70,84,52,0,107,76,70,84,53,0,107,76,70,84,54,0,107,78,88,84,51,0,107,80,82,86,51,0,107,82,73,84,51,0,107,82,73,84,52,0,107,82,73,84,53,0,107,82,73,84,54,0,107,85,80,51,0,107,85,80,52,0,107,85,80,53,0,107,85,80,54,0,120,109,0
+static const TerminfoEntry putty_256colour_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = -1,
+ .columns = -1,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\033D",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[?25h",
+ [kTerm_cursor_up] = "\033M",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[?1049h",
+ [kTerm_enter_italics_mode] = NULL,
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = "\033[%p1%dX",
+ [kTerm_exit_attribute_mode] = "\033[m\017",
+ [kTerm_exit_ca_mode] = "\033[?1049l",
+ [kTerm_from_status_line] = "\a",
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = "\033[?1l\033>",
+ [kTerm_keypad_xmit] = "\033[?1h\033=",
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
+ [kTerm_set_a_foreground] = "\033[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
+ [kTerm_set_attributes] = "\033[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t^N%e\017%;",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = "\033]0;",
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = NULL,
+ [kTerm_enter_strikethrough_mode] = "\033[9m",
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// linux|Linux console,
-// auto_right_margin,
-// back_color_erase,
-// can_change,
-// eat_newline_glitch,
-// erase_overstrike,
-// move_insert_mode,
-// move_standout_mode,
-// xon_xoff,
-// AX,
-// init_tabs#8,
-// max_colors#8,
-// max_pairs#64,
-// no_color_video#18,
-// U8#1,
-// acs_chars=++\054\054--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs=\E[3g,
-// clear_screen=\E[H\E[J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\n,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l\E[?1c,
-// cursor_left=^H,
-// cursor_normal=\E[?25h\E[?0c,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// cursor_visible=\E[?25h\E[?8c,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// ena_acs=\E)0,
-// enter_alt_charset_mode=^N,
-// enter_am_mode=\E[?7h,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_dim_mode=\E[2m,
-// enter_insert_mode=\E[4h,
-// enter_pc_charset_mode=\E[11m,
-// enter_reverse_mode=\E[7m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// erase_chars=\E[%p1%dX,
-// exit_alt_charset_mode=^O,
-// exit_am_mode=\E[?7l,
-// exit_attribute_mode=\E[m^O,
-// exit_insert_mode=\E[4l,
-// exit_pc_charset_mode=\E[10m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen=\E[?5h$<200/>\E[?5l,
-// initialize_color=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
-// insert_character=\E[@,
-// insert_line=\E[L,
-// key_b2=\E[G,
-// key_backspace=\177,
-// key_btab=\E^I,
-// key_dc=\E[3~,
-// key_down=\E[B,
-// key_end=\E[4~,
-// key_f1=\E[[A,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[25~,
-// key_f14=\E[26~,
-// key_f15=\E[28~,
-// key_f16=\E[29~,
-// key_f17=\E[31~,
-// key_f18=\E[32~,
-// key_f19=\E[33~,
-// key_f2=\E[[B,
-// key_f20=\E[34~,
-// key_f3=\E[[C,
-// key_f4=\E[[D,
-// key_f5=\E[[E,
-// key_f6=\E[17~,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\E[1~,
-// key_ic=\E[2~,
-// key_left=\E[D,
-// key_mouse=\E[M,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\E[C,
-// key_suspend=^Z,
-// key_up=\E[A,
-// newline=\r\n,
-// orig_colors=\E]R,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_up_cursor=\E[%p1%dA,
-// reset_1string=\Ec\E]R,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[4%p1%dm,
-// set_a_foreground=\E[3%p1%dm,
-// set_attributes=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;m%?%p9%t^N%e^O%;,
-// set_tab=\EH,
-// tab=^I,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?6c,
-// user9=\E[c,
-// E3=\E[3J,
-// kcbt2=\E[Z,
-static const int8_t linux_16colour_terminfo[] = {
- 26,1,20,0,29,0,16,0,125,1,66,3,108,105,110,117,120,124,76,105,110,117,120,32,99,111,110,115,111,108,101,0,0,1,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,-1,-1,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,64,0,18,0,-1,-1,0,0,2,0,4,0,21,0,26,0,33,0,37,0,41,0,-1,-1,52,0,69,0,71,0,75,0,87,0,-1,-1,89,0,101,0,-1,-1,105,0,109,0,121,0,125,0,-1,-1,-1,-1,-127,0,-125,0,-120,0,-1,-1,-1,-1,-115,0,-110,0,-1,-1,-1,-1,-105,0,-100,0,-95,0,-90,0,-81,0,-79,0,-1,-1,-1,-1,-74,0,-69,0,-63,0,-57,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-39,0,-35,0,-1,-1,-31,0,-1,-1,-1,-1,-1,-1,-29,0,-1,-1,-24,0,-1,-1,-1,-1,-1,-1,-1,-1,-20,0,-15,0,-9,0,-4,0,1,1,6,1,11,1,17,1,23,1,29,1,35,1,40,1,-1,-1,45,1,-1,-1,49,1,54,1,59,1,-1,-1,-1,-1,-1,-1,63,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,67,1,-1,-1,70,1,79,1,88,1,97,1,-1,-1,106,1,115,1,124,1,-1,-1,-123,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-114,1,-1,-1,-1,-1,-1,-1,-108,1,-105,1,-94,1,-91,1,-89,1,-86,1,1,2,-1,-1,4,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,2,-1,-1,-1,-1,-1,-1,-1,-1,10,2,-1,-1,75,2,-1,-1,-1,-1,78,2,84,2,-1,-1,-1,-1,90,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,94,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,99,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,101,2,107,2,113,2,119,2,125,2,-125,2,-119,2,-113,2,-107,2,-101,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-95,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-90,2,-79,2,-74,2,-68,2,-64,2,-55,2,-51,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,30,3,-1,-1,-1,-1,-1,-1,34,3,44,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,54,3,60,3,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,27,91,63,49,99,0,8,0,27,91,63,50,53,104,27,91,63,48,99,0,27,91,67,0,27,91,65,0,27,91,63,50,53,104,27,91,63,56,99,0,27,91,80,0,27,91,77,0,14,0,27,91,53,109,0,27,91,49,109,0,27,91,50,109,0,27,91,52,104,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,15,0,27,91,109,15,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,63,53,104,36,60,50,48,48,47,62,27,91,63,53,108,0,27,91,64,0,27,91,76,0,127,0,27,91,51,126,0,27,91,66,0,27,91,91,65,0,27,91,50,49,126,0,27,91,91,66,0,27,91,91,67,0,27,91,91,68,0,27,91,91,69,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,91,68,0,27,91,54,126,0,27,91,53,126,0,27,91,67,0,27,91,65,0,13,10,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,65,0,27,99,27,93,82,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,59,49,48,37,63,37,112,49,37,116,59,55,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,51,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,37,63,37,112,53,37,116,59,50,37,59,37,63,37,112,54,37,116,59,49,37,59,109,37,63,37,112,57,37,116,14,37,101,15,37,59,0,27,72,0,9,0,27,91,71,0,43,43,44,44,45,45,46,46,48,48,96,96,97,97,102,102,103,103,104,104,105,105,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,9,0,27,91,63,55,104,0,27,91,63,55,108,0,27,41,48,0,27,91,52,126,0,26,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,54,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,93,82,0,27,93,80,37,112,49,37,120,37,112,50,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,48,50,120,37,112,51,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,48,50,120,37,112,52,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,48,50,120,0,27,91,77,0,27,91,51,37,112,49,37,100,109,0,27,91,52,37,112,49,37,100,109,0,27,91,49,49,109,0,27,91,49,48,109,0,1,0,1,0,2,0,6,0,24,0,1,0,1,0,0,0,5,0,0,0,3,0,6,0,9,0,27,91,51,74,0,27,91,90,0,65,88,0,85,56,0,69,51,0,107,99,98,116,50,0
+static const TerminfoEntry rxvt_256colour_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[2J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\n",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[?25h",
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\0337\033[?47h",
+ [kTerm_enter_italics_mode] = NULL,
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = NULL,
+ [kTerm_exit_attribute_mode] = "\033[m\017",
+ [kTerm_exit_ca_mode] = "\033[2J\033[?47l\0338",
+ [kTerm_from_status_line] = NULL,
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = "\033>",
+ [kTerm_keypad_xmit] = "\033=",
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
+ [kTerm_set_a_foreground] = "\033[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
+ [kTerm_set_attributes] = "\033[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t^N%e\017%;",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = NULL,
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = NULL,
+ [kTerm_enter_strikethrough_mode] = NULL,
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// putty-256color|PuTTY 0.58 with xterm 256-colors,
-// auto_left_margin,
-// auto_right_margin,
-// back_color_erase,
-// eat_newline_glitch,
-// has_status_line,
-// move_insert_mode,
-// move_standout_mode,
-// xon_xoff,
-// XT,
-// init_tabs#8,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// no_color_video#22,
-// U8#1,
-// acs_chars=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-// back_tab=\E[Z,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs=\E[3g,
-// clear_screen=\E[H\E[J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\ED,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\EM,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// dis_status_line=\E]0;^G,
-// display_pc_char=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G\342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e%p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G\342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@%e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E%%G\340\202\242\E%%@%e%p1%c%;,
-// ena_acs=\E(B\E)0,
-// enter_alt_charset_mode=^N,
-// enter_am_mode=\E[?7h,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[?1049h,
-// enter_insert_mode=\E[4h,
-// enter_pc_charset_mode=\E[11m,
-// enter_reverse_mode=\E[7m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// erase_chars=\E[%p1%dX,
-// exit_alt_charset_mode=^O,
-// exit_am_mode=\E[?7l,
-// exit_attribute_mode=\E[m^O,
-// exit_ca_mode=\E[?1049l,
-// exit_insert_mode=\E[4l,
-// exit_pc_charset_mode=\E[10m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen=\E[?5h$<100/>\E[?5l,
-// from_status_line=^G,
-// init_2string=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R,
-// insert_line=\E[L,
-// key_a1=\EOq,
-// key_a3=\EOs,
-// key_b2=\EOr,
-// key_backspace=\177,
-// key_btab=\E[Z,
-// key_c1=\EOp,
-// key_c3=\EOn,
-// key_dc=\E[3~,
-// key_down=\EOB,
-// key_end=\E[4~,
-// key_enter=\EOM,
-// key_f0=\EOy,
-// key_f1=\E[11~,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[25~,
-// key_f14=\E[26~,
-// key_f15=\E[28~,
-// key_f16=\E[29~,
-// key_f17=\E[31~,
-// key_f18=\E[32~,
-// key_f19=\E[33~,
-// key_f2=\E[12~,
-// key_f20=\E[34~,
-// key_f3=\E[13~,
-// key_f4=\E[14~,
-// key_f5=\E[15~,
-// key_f6=\E[17~,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\E[1~,
-// key_ic=\E[2~,
-// key_left=\EOD,
-// key_mouse=\E[<,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\EOC,
-// key_sf=\E[B,
-// key_sr=\E[A,
-// key_suspend=^Z,
-// key_up=\EOA,
-// keypad_local=\E[?1l\E>,
-// keypad_xmit=\E[?1h\E=,
-// newline=\r\n,
-// orig_colors=\E]R,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// repeat_char=%p1%c\E[%p2%{1}%-%db,
-// reset_2string=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set0_des_seq=\E[10m,
-// set1_des_seq=\E[11m,
-// set2_des_seq=\E[12m,
-// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
-// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
-// set_attributes=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t^N%e^O%;,
-// set_tab=\EH,
-// tab=^I,
-// to_status_line=\E]0;,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?6c,
-// user9=\E[c,
-// BD=\E[?2004l,
-// BE=\E[?2004h,
-// E3=\E[3J,
-// PE=\E[201~,
-// PS=\E[200~,
-// TS=\E]0;,
-// XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
-// kDN5=\E[B,
-// kLFT5=\E[D,
-// kRIT5=\E[C,
-// kUP5=\E[A,
-// kp1=\EOq,
-// kp2=\EOr,
-// kp3=\EOs,
-// kp4=\EOt,
-// kp5=\EOu,
-// kp6=\EOv,
-// kp7=\EOw,
-// kp8=\EOx,
-// kp9=\EOy,
-// kpADD=\EOl,
-// kpDIV=\EOQ,
-// kpDOT=\EOn,
-// kpMUL=\EOR,
-// kpNUM=\EOP,
-// kpSUB=\EOS,
-// kpZRO=\EOp,
-// rmxx=\E[29m,
-// smxx=\E[9m,
-// xm=\E[<%i%p3%d;%p1%d;%p2%d;%?%p4%tM%em%;,
-static const int8_t putty_256colour_terminfo[] = {
- 30,2,48,0,29,0,16,0,125,1,-70,4,112,117,116,116,121,45,50,53,54,99,111,108,111,114,124,80,117,84,84,89,32,48,46,53,56,32,119,105,116,104,32,120,116,101,114,109,32,50,53,54,45,99,111,108,111,114,115,0,1,1,0,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,-1,-1,-1,-1,8,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,22,0,0,0,0,0,4,0,6,0,8,0,25,0,30,0,37,0,41,0,45,0,-1,-1,56,0,73,0,76,0,80,0,87,0,-1,-1,89,0,96,0,-1,-1,100,0,-1,-1,103,0,107,0,111,0,-1,-1,117,0,119,0,124,0,-127,0,-1,-1,-1,-1,-118,0,-1,-1,-1,-1,-113,0,-108,0,-103,0,-98,0,-89,0,-87,0,-82,0,-1,-1,-73,0,-68,0,-62,0,-56,0,-1,-1,-38,0,-1,-1,-36,0,-1,-1,-1,-1,-1,-1,-2,0,-1,-1,2,1,-1,-1,-1,-1,-1,-1,4,1,-1,-1,9,1,-1,-1,-1,-1,-1,-1,13,1,17,1,23,1,29,1,35,1,41,1,47,1,53,1,59,1,65,1,71,1,77,1,82,1,-1,-1,87,1,-1,-1,91,1,96,1,101,1,105,1,109,1,-1,-1,113,1,117,1,125,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-123,1,-1,-1,-120,1,-111,1,-102,1,-1,-1,-93,1,-84,1,-75,1,-66,1,-57,1,-48,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-39,1,-1,-1,-19,1,-1,-1,-1,-1,14,2,17,2,28,2,31,2,33,2,36,2,108,2,-1,-1,111,2,113,2,-1,-1,-1,-1,-1,-1,118,2,122,2,126,2,-126,2,-122,2,-1,-1,-1,-1,-118,2,-1,-1,-67,2,-1,-1,-1,-1,-63,2,-57,2,-1,-1,-1,-1,-51,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-44,2,-39,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-35,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-33,2,-27,2,-21,2,-15,2,-9,2,-3,2,3,3,9,3,15,3,21,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,27,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,32,3,43,3,48,3,54,3,58,3,67,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,71,3,-1,-1,-1,-1,-1,-1,75,3,-118,3,-1,-1,-1,-1,-1,-1,-54,3,-48,3,-42,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-36,3,-82,4,-76,4,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,27,68,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,50,53,104,0,27,91,67,0,27,77,0,27,91,80,0,27,91,77,0,27,93,48,59,7,0,14,0,27,91,53,109,0,27,91,49,109,0,27,91,63,49,48,52,57,104,0,27,91,52,104,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,15,0,27,91,109,15,0,27,91,63,49,48,52,57,108,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,63,53,104,36,60,49,48,48,47,62,27,91,63,53,108,0,7,0,27,55,27,91,114,27,91,109,27,91,63,55,104,27,91,63,49,59,52,59,54,108,27,91,52,108,27,56,27,62,27,93,82,0,27,91,76,0,127,0,27,91,51,126,0,27,79,66,0,27,79,121,0,27,91,49,49,126,0,27,91,50,49,126,0,27,91,49,50,126,0,27,91,49,51,126,0,27,91,49,52,126,0,27,91,49,53,126,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,79,68,0,27,91,54,126,0,27,91,53,126,0,27,79,67,0,27,91,66,0,27,91,65,0,27,79,65,0,27,91,63,49,108,27,62,0,27,91,63,49,104,27,61,0,13,10,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,37,112,49,37,99,27,91,37,112,50,37,123,49,125,37,45,37,100,98,0,27,60,27,91,34,112,27,91,53,48,59,54,34,112,27,99,27,91,63,51,108,27,93,82,27,91,63,49,48,48,48,108,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,49,37,112,54,37,124,37,116,59,49,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,109,37,63,37,112,57,37,116,14,37,101,15,37,59,0,27,72,0,9,0,27,93,48,59,0,27,79,113,0,27,79,115,0,27,79,114,0,27,79,112,0,27,79,110,0,96,96,97,97,102,102,103,103,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,91,90,0,27,91,63,55,104,0,27,91,63,55,108,0,27,40,66,27,41,48,0,27,91,52,126,0,27,79,77,0,26,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,54,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,93,82,0,27,91,60,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,49,48,109,0,27,91,49,49,109,0,27,91,49,50,109,0,37,63,37,112,49,37,123,56,125,37,61,37,116,27,37,37,71,-30,-105,-104,27,37,37,64,37,101,37,112,49,37,123,49,48,125,37,61,37,116,27,37,37,71,-30,-105,-103,27,37,37,64,37,101,37,112,49,37,123,49,50,125,37,61,37,116,27,37,37,71,-30,-103,-128,27,37,37,64,37,101,37,112,49,37,123,49,51,125,37,61,37,116,27,37,37,71,-30,-103,-86,27,37,37,64,37,101,37,112,49,37,123,49,52,125,37,61,37,116,27,37,37,71,-30,-103,-85,27,37,37,64,37,101,37,112,49,37,123,49,53,125,37,61,37,116,27,37,37,71,-30,-104,-68,27,37,37,64,37,101,37,112,49,37,123,50,55,125,37,61,37,116,27,37,37,71,-30,-122,-112,27,37,37,64,37,101,37,112,49,37,123,49,53,53,125,37,61,37,116,27,37,37,71,-32,-126,-94,27,37,37,64,37,101,37,112,49,37,99,37,59,0,27,91,49,49,109,0,27,91,49,48,109,0,1,0,1,0,30,0,62,0,86,1,1,0,1,0,0,0,0,0,9,0,18,0,23,0,30,0,37,0,42,0,74,0,78,0,82,0,86,0,90,0,94,0,98,0,102,0,106,0,110,0,114,0,118,0,122,0,126,0,-126,0,-122,0,-118,0,-114,0,-110,0,-106,0,-102,0,-96,0,-91,0,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,32,0,38,0,44,0,49,0,53,0,57,0,61,0,65,0,69,0,73,0,77,0,81,0,85,0,91,0,97,0,103,0,109,0,115,0,121,0,127,0,-124,0,-119,0,27,91,63,50,48,48,52,108,0,27,91,63,50,48,48,52,104,0,27,91,51,74,0,27,91,50,48,49,126,0,27,91,50,48,48,126,0,27,93,48,59,0,27,91,63,49,48,48,54,59,49,48,48,48,37,63,37,112,49,37,123,49,125,37,61,37,116,104,37,101,108,37,59,0,27,91,66,0,27,91,68,0,27,91,67,0,27,91,65,0,27,79,113,0,27,79,114,0,27,79,115,0,27,79,116,0,27,79,117,0,27,79,118,0,27,79,119,0,27,79,120,0,27,79,121,0,27,79,108,0,27,79,81,0,27,79,110,0,27,79,82,0,27,79,80,0,27,79,83,0,27,79,112,0,27,91,50,57,109,0,27,91,57,109,0,27,91,60,37,105,37,112,51,37,100,59,37,112,49,37,100,59,37,112,50,37,100,59,37,63,37,112,52,37,116,77,37,101,109,37,59,0,88,84,0,85,56,0,66,68,0,66,69,0,69,51,0,80,69,0,80,83,0,84,83,0,88,77,0,107,68,78,53,0,107,76,70,84,53,0,107,82,73,84,53,0,107,85,80,53,0,107,112,49,0,107,112,50,0,107,112,51,0,107,112,52,0,107,112,53,0,107,112,54,0,107,112,55,0,107,112,56,0,107,112,57,0,107,112,65,68,68,0,107,112,68,73,86,0,107,112,68,79,84,0,107,112,77,85,76,0,107,112,78,85,77,0,107,112,83,85,66,0,107,112,90,82,79,0,114,109,120,120,0,115,109,120,120,0,120,109,0
+static const TerminfoEntry screen_256colour_terminfo = {
+ .bce = false,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\n",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[34h\033[?25h",
+ [kTerm_cursor_up] = "\033M",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[?1049h",
+ [kTerm_enter_italics_mode] = NULL,
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[3m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = NULL,
+ [kTerm_exit_attribute_mode] = "\033[m\017",
+ [kTerm_exit_ca_mode] = "\033[?1049l",
+ [kTerm_from_status_line] = NULL,
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = "\033[?1l\033>",
+ [kTerm_keypad_xmit] = "\033[?1h\033=",
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
+ [kTerm_set_a_foreground] = "\033[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
+ [kTerm_set_attributes] = "\033[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t^N%e\017%;",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = NULL,
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = NULL,
+ [kTerm_enter_strikethrough_mode] = NULL,
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// rxvt-256color|rxvt 2.7.9 with xterm 256-colors,
-// auto_right_margin,
-// back_color_erase,
-// backspaces_with_bs,
-// can_change,
-// eat_newline_glitch,
-// erase_overstrike,
-// move_insert_mode,
-// move_standout_mode,
-// xon_xoff,
-// AX,
-// XT,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// acs_chars=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs=\E[3g,
-// clear_screen=\E[H\E[2J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\n,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// delete_line=\E[M,
-// ena_acs=\E(B\E)0,
-// enter_alt_charset_mode=^N,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E7\E[?47h,
-// enter_insert_mode=\E[4h,
-// enter_reverse_mode=\E[7m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// exit_alt_charset_mode=^O,
-// exit_attribute_mode=\E[m^O,
-// exit_ca_mode=\E[2J\E[?47l\E8,
-// exit_insert_mode=\E[4l,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen=\E[?5h$<100/>\E[?5l,
-// init_1string=\E[?47l\E=\E[?1l,
-// init_2string=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
-// initialize_color=\E]4;%p1%d;rgb\072%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\,
-// insert_line=\E[L,
-// key_a1=\EOw,
-// key_a3=\EOy,
-// key_b2=\EOu,
-// key_backspace=^H,
-// key_btab=\E[Z,
-// key_c1=\EOq,
-// key_c3=\EOs,
-// key_dc=\E[3~,
-// key_down=\E[B,
-// key_end=\E[8~,
-// key_enter=\EOM,
-// key_eol=\E[8\136,
-// key_f0=\E[21~,
-// key_f1=\E[11~,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[25~,
-// key_f14=\E[26~,
-// key_f15=\E[28~,
-// key_f16=\E[29~,
-// key_f17=\E[31~,
-// key_f18=\E[32~,
-// key_f19=\E[33~,
-// key_f2=\E[12~,
-// key_f20=\E[34~,
-// key_f21=\E[23$,
-// key_f22=\E[24$,
-// key_f23=\E[11\136,
-// key_f24=\E[12\136,
-// key_f25=\E[13\136,
-// key_f26=\E[14\136,
-// key_f27=\E[15\136,
-// key_f28=\E[17\136,
-// key_f29=\E[18\136,
-// key_f3=\E[13~,
-// key_f30=\E[19\136,
-// key_f31=\E[20\136,
-// key_f32=\E[21\136,
-// key_f33=\E[23\136,
-// key_f34=\E[24\136,
-// key_f35=\E[25\136,
-// key_f36=\E[26\136,
-// key_f37=\E[28\136,
-// key_f38=\E[29\136,
-// key_f39=\E[31\136,
-// key_f4=\E[14~,
-// key_f40=\E[32\136,
-// key_f41=\E[33\136,
-// key_f42=\E[34\136,
-// key_f43=\E[23@,
-// key_f44=\E[24@,
-// key_f5=\E[15~,
-// key_f6=\E[17~,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_find=\E[1~,
-// key_home=\E[7~,
-// key_ic=\E[2~,
-// key_left=\E[D,
-// key_mouse=\E[M,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\E[C,
-// key_sdc=\E[3$,
-// key_select=\E[4~,
-// key_send=\E[8$,
-// key_sf=\E[a,
-// key_shome=\E[7$,
-// key_sic=\E[2$,
-// key_sleft=\E[d,
-// key_snext=\E[6$,
-// key_sprevious=\E[5$,
-// key_sr=\E[b,
-// key_sright=\E[c,
-// key_up=\E[A,
-// keypad_local=\E>,
-// keypad_xmit=\E=,
-// orig_colors=\E]104^G,
-// orig_pair=\E[39;49m,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_up_cursor=\E[%p1%dA,
-// reset_1string=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
-// reset_2string=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set0_des_seq=\E(B,
-// set1_des_seq=\E(0,
-// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
-// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
-// set_attributes=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t^N%e^O%;,
-// set_tab=\EH,
-// tab=^I,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?1;2c,
-// user9=\E[c,
-// kDC5=\E[3\136,
-// kDC6=\E[3@,
-// kDN=\E[b,
-// kDN5=\EOb,
-// kEND5=\E[8\136,
-// kEND6=\E[8@,
-// kHOM5=\E[7\136,
-// kHOM6=\E[7@,
-// kIC5=\E[2\136,
-// kIC6=\E[2@,
-// kLFT5=\EOd,
-// kNXT5=\E[6\136,
-// kNXT6=\E[6@,
-// kPRV5=\E[5\136,
-// kPRV6=\E[5@,
-// kRIT5=\EOc,
-// kUP=\E[a,
-// kUP5=\EOa,
-// ka2=\EOx,
-// kb1=\EOt,
-// kb3=\EOv,
-// kc2=\EOr,
-static const int8_t rxvt_256colour_terminfo[] = {
- 30,2,47,0,38,0,15,0,110,1,-35,4,114,120,118,116,45,50,53,54,99,111,108,111,114,124,114,120,118,116,32,50,46,55,46,57,32,119,105,116,104,32,120,116,101,114,109,32,50,53,54,45,99,111,108,111,114,115,0,0,1,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,-1,-1,0,0,2,0,4,0,21,0,26,0,34,0,38,0,42,0,-1,-1,53,0,70,0,72,0,76,0,83,0,-1,-1,85,0,92,0,-1,-1,96,0,-1,-1,-1,-1,100,0,-1,-1,-1,-1,104,0,106,0,111,0,116,0,-1,-1,-1,-1,125,0,-1,-1,-1,-1,-126,0,-121,0,-116,0,-1,-1,-111,0,-109,0,-104,0,-1,-1,-91,0,-86,0,-80,0,-74,0,-1,-1,-1,-1,-56,0,-42,0,-1,-1,-1,-1,-1,-1,-8,0,-1,-1,-4,0,-1,-1,-1,-1,-1,-1,-2,0,-1,-1,3,1,-1,-1,7,1,-1,-1,12,1,18,1,24,1,30,1,36,1,42,1,48,1,54,1,60,1,66,1,72,1,78,1,83,1,-1,-1,88,1,-1,-1,92,1,97,1,102,1,106,1,110,1,-1,-1,114,1,118,1,121,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,124,1,-123,1,-114,1,-1,-1,-105,1,-96,1,-87,1,-1,-1,-78,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-69,1,-36,1,-1,-1,-1,-1,14,2,17,2,28,2,31,2,33,2,36,2,103,2,-1,-1,106,2,-1,-1,-1,-1,-1,-1,-1,-1,108,2,112,2,116,2,120,2,124,2,-1,-1,-1,-1,-128,2,-1,-1,-77,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-73,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-66,2,-61,2,-1,-1,-57,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-52,2,-1,-1,-47,2,-42,2,-1,-1,-1,-1,-1,-1,-1,-1,-37,2,-32,2,-27,2,-1,-1,-1,-1,-23,2,-1,-1,-18,2,-1,-1,-1,-1,-1,-1,-13,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-9,2,-3,2,3,3,9,3,15,3,21,3,27,3,33,3,39,3,45,3,51,3,57,3,63,3,69,3,75,3,81,3,87,3,93,3,99,3,105,3,111,3,117,3,123,3,-127,3,-121,3,-115,3,-109,3,-103,3,-97,3,-91,3,-85,3,-79,3,-73,3,-67,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-61,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-56,3,-45,3,-40,3,-32,3,-28,3,-19,3,-12,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,82,4,-1,-1,-1,-1,-1,-1,86,4,-107,4,-1,-1,-1,-1,-1,-1,-43,4,-39,4,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,77,0,14,0,27,91,53,109,0,27,91,49,109,0,27,55,27,91,63,52,55,104,0,27,91,52,104,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,15,0,27,91,109,15,0,27,91,50,74,27,91,63,52,55,108,27,56,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,63,53,104,36,60,49,48,48,47,62,27,91,63,53,108,0,27,91,63,52,55,108,27,61,27,91,63,49,108,0,27,91,114,27,91,109,27,91,50,74,27,91,72,27,91,63,55,104,27,91,63,49,59,51,59,52,59,54,108,27,91,52,108,0,27,91,76,0,8,0,27,91,51,126,0,27,91,66,0,27,91,56,94,0,27,91,50,49,126,0,27,91,49,49,126,0,27,91,50,49,126,0,27,91,49,50,126,0,27,91,49,51,126,0,27,91,49,52,126,0,27,91,49,53,126,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,55,126,0,27,91,50,126,0,27,91,68,0,27,91,54,126,0,27,91,53,126,0,27,91,67,0,27,91,97,0,27,91,98,0,27,91,65,0,27,62,0,27,61,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,65,0,27,62,27,91,49,59,51,59,52,59,53,59,54,108,27,91,63,55,104,27,91,109,27,91,114,27,91,50,74,27,91,72,0,27,91,114,27,91,109,27,91,50,74,27,91,72,27,91,63,55,104,27,91,63,49,59,51,59,52,59,54,108,27,91,52,108,27,62,27,91,63,49,48,48,48,108,27,91,63,50,53,104,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,109,37,63,37,112,57,37,116,14,37,101,15,37,59,0,27,72,0,9,0,27,79,119,0,27,79,121,0,27,79,117,0,27,79,113,0,27,79,115,0,96,96,97,97,102,102,103,103,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,91,90,0,27,40,66,27,41,48,0,27,91,56,126,0,27,79,77,0,27,91,49,126,0,27,91,51,36,0,27,91,52,126,0,27,91,56,36,0,27,91,55,36,0,27,91,50,36,0,27,91,100,0,27,91,54,36,0,27,91,53,36,0,27,91,99,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,50,51,36,0,27,91,50,52,36,0,27,91,49,49,94,0,27,91,49,50,94,0,27,91,49,51,94,0,27,91,49,52,94,0,27,91,49,53,94,0,27,91,49,55,94,0,27,91,49,56,94,0,27,91,49,57,94,0,27,91,50,48,94,0,27,91,50,49,94,0,27,91,50,51,94,0,27,91,50,52,94,0,27,91,50,53,94,0,27,91,50,54,94,0,27,91,50,56,94,0,27,91,50,57,94,0,27,91,51,49,94,0,27,91,51,50,94,0,27,91,51,51,94,0,27,91,51,52,94,0,27,91,50,51,64,0,27,91,50,52,64,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,49,59,50,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,93,49,48,52,7,0,27,93,52,59,37,112,49,37,100,59,114,103,98,58,37,112,50,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,51,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,52,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,27,92,0,27,91,77,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,27,40,66,0,27,40,48,0,0,2,0,0,0,22,0,46,0,-36,0,1,1,0,0,5,0,10,0,14,0,18,0,23,0,28,0,33,0,38,0,43,0,48,0,52,0,57,0,62,0,67,0,72,0,76,0,80,0,84,0,88,0,92,0,96,0,0,0,3,0,6,0,11,0,16,0,20,0,25,0,31,0,37,0,43,0,49,0,54,0,59,0,65,0,71,0,77,0,83,0,89,0,95,0,99,0,104,0,108,0,112,0,116,0,27,91,51,94,0,27,91,51,64,0,27,91,98,0,27,79,98,0,27,91,56,94,0,27,91,56,64,0,27,91,55,94,0,27,91,55,64,0,27,91,50,94,0,27,91,50,64,0,27,79,100,0,27,91,54,94,0,27,91,54,64,0,27,91,53,94,0,27,91,53,64,0,27,79,99,0,27,91,97,0,27,79,97,0,27,79,120,0,27,79,116,0,27,79,118,0,27,79,114,0,65,88,0,88,84,0,107,68,67,53,0,107,68,67,54,0,107,68,78,0,107,68,78,53,0,107,69,78,68,53,0,107,69,78,68,54,0,107,72,79,77,53,0,107,72,79,77,54,0,107,73,67,53,0,107,73,67,54,0,107,76,70,84,53,0,107,78,88,84,53,0,107,78,88,84,54,0,107,80,82,86,53,0,107,80,82,86,54,0,107,82,73,84,53,0,107,85,80,0,107,85,80,53,0,107,97,50,0,107,98,49,0,107,98,51,0,107,99,50,0
+static const TerminfoEntry st_256colour_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[2J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\n",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[?25h",
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[?1049h",
+ [kTerm_enter_italics_mode] = "\033[3m",
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = "\033[%p1%dX",
+ [kTerm_exit_attribute_mode] = "\033[0m",
+ [kTerm_exit_ca_mode] = "\033[?1049l",
+ [kTerm_from_status_line] = "\a",
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = "\033[?1l\033>",
+ [kTerm_keypad_xmit] = "\033[?1h\033=",
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
+ [kTerm_set_a_foreground] = "\033[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
+ [kTerm_set_attributes] = "%?%p9%t\033(0%e\033(B%;\033[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = "\033]0;",
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = "\033[%p1%d q",
+ [kTerm_enter_strikethrough_mode] = "\033[9m",
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = "\033]12;%p1%s\a",
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// screen-256color|GNU Screen with 256 colors,
-// auto_right_margin,
-// backspaces_with_bs,
-// eat_newline_glitch,
-// has_hardware_tabs,
-// has_meta_key,
-// move_insert_mode,
-// move_standout_mode,
-// AX,
-// G0,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// U8#1,
-// acs_chars=++\054\054--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-// back_tab=\E[Z,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs=\E[3g,
-// clear_screen=\E[H\E[J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\n,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[34h\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\EM,
-// cursor_visible=\E[34l,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// ena_acs=\E(B\E)0,
-// enter_alt_charset_mode=^N,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[?1049h,
-// enter_dim_mode=\E[2m,
-// enter_insert_mode=\E[4h,
-// enter_reverse_mode=\E[7m,
-// enter_standout_mode=\E[3m,
-// enter_underline_mode=\E[4m,
-// exit_alt_charset_mode=^O,
-// exit_attribute_mode=\E[m^O,
-// exit_ca_mode=\E[?1049l,
-// exit_insert_mode=\E[4l,
-// exit_standout_mode=\E[23m,
-// exit_underline_mode=\E[24m,
-// flash_screen=\Eg,
-// init_2string=\E)0,
-// insert_line=\E[L,
-// key_backspace=^H,
-// key_btab=\E[Z,
-// key_dc=\E[3~,
-// key_down=\EOB,
-// key_end=\E[4~,
-// key_f1=\EOP,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f2=\EOQ,
-// key_f3=\EOR,
-// key_f4=\EOS,
-// key_f5=\E[15~,
-// key_f6=\E[17~,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\E[1~,
-// key_ic=\E[2~,
-// key_left=\EOD,
-// key_mouse=\E[M,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\EOC,
-// key_up=\EOA,
-// keypad_local=\E[?1l\E>,
-// keypad_xmit=\E[?1h\E=,
-// newline=\EE,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// reset_2string=\Ec\E[?1000l\E[?25h,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
-// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
-// set_attributes=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t^N%e^O%;,
-// set_tab=\EH,
-// tab=^I,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?1;2c,
-// user9=\E[c,
-// E0=\E(B,
-// S0=\E(%p1%c,
-static const int8_t screen_256colour_terminfo[] = {
- 30,2,43,0,43,0,15,0,105,1,41,3,115,99,114,101,101,110,45,50,53,54,99,111,108,111,114,124,71,78,85,32,83,99,114,101,101,110,32,119,105,116,104,32,50,53,54,32,99,111,108,111,114,115,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,0,0,4,0,6,0,8,0,25,0,30,0,37,0,41,0,45,0,-1,-1,56,0,73,0,75,0,79,0,86,0,-1,-1,88,0,100,0,-1,-1,104,0,107,0,113,0,117,0,-1,-1,-1,-1,121,0,123,0,-128,0,-123,0,-1,-1,-114,0,-109,0,-1,-1,-1,-1,-104,0,-99,0,-94,0,-1,-1,-89,0,-87,0,-82,0,-1,-1,-73,0,-68,0,-62,0,-56,0,-1,-1,-1,-1,-1,-1,-53,0,-1,-1,-1,-1,-1,-1,-49,0,-1,-1,-45,0,-1,-1,-1,-1,-1,-1,-43,0,-1,-1,-38,0,-1,-1,-1,-1,-1,-1,-1,-1,-34,0,-30,0,-24,0,-20,0,-16,0,-12,0,-6,0,0,1,6,1,12,1,18,1,23,1,-1,-1,28,1,-1,-1,32,1,37,1,42,1,-1,-1,-1,-1,-1,-1,46,1,50,1,58,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,66,1,-1,-1,69,1,78,1,87,1,96,1,105,1,114,1,123,1,-124,1,-115,1,-106,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-97,1,-1,-1,-1,-1,-80,1,-77,1,-66,1,-63,1,-61,1,-58,1,26,2,-1,-1,29,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,31,2,-1,-1,96,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,100,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,107,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,112,2,118,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,124,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-127,2,-116,2,-111,2,-103,2,-99,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-90,2,-1,-1,-1,-1,-1,-1,-86,2,-23,2,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,51,52,104,27,91,63,50,53,104,0,27,91,67,0,27,77,0,27,91,51,52,108,0,27,91,80,0,27,91,77,0,14,0,27,91,53,109,0,27,91,49,109,0,27,91,63,49,48,52,57,104,0,27,91,50,109,0,27,91,52,104,0,27,91,55,109,0,27,91,51,109,0,27,91,52,109,0,15,0,27,91,109,15,0,27,91,63,49,48,52,57,108,0,27,91,52,108,0,27,91,50,51,109,0,27,91,50,52,109,0,27,103,0,27,41,48,0,27,91,76,0,8,0,27,91,51,126,0,27,79,66,0,27,79,80,0,27,91,50,49,126,0,27,79,81,0,27,79,82,0,27,79,83,0,27,91,49,53,126,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,79,68,0,27,91,54,126,0,27,91,53,126,0,27,79,67,0,27,79,65,0,27,91,63,49,108,27,62,0,27,91,63,49,104,27,61,0,27,69,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,27,99,27,91,63,49,48,48,48,108,27,91,63,50,53,104,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,49,37,116,59,51,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,51,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,37,63,37,112,53,37,116,59,50,37,59,109,37,63,37,112,57,37,116,14,37,101,15,37,59,0,27,72,0,9,0,43,43,44,44,45,45,46,46,48,48,96,96,97,97,102,102,103,103,104,104,105,105,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,91,90,0,27,40,66,27,41,48,0,27,91,52,126,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,49,59,50,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,91,77,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,0,2,0,1,0,2,0,7,0,27,0,1,1,1,0,0,0,0,0,4,0,0,0,3,0,6,0,9,0,12,0,27,40,66,0,27,40,37,112,49,37,99,0,65,88,0,71,48,0,85,56,0,69,48,0,83,48,0
+static const TerminfoEntry tmux_256colour_terminfo = {
+ .bce = false,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\n",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[34h\033[?25h",
+ [kTerm_cursor_up] = "\033M",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[?1049h",
+ [kTerm_enter_italics_mode] = "\033[3m",
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = NULL,
+ [kTerm_exit_attribute_mode] = "\033[m\017",
+ [kTerm_exit_ca_mode] = "\033[?1049l",
+ [kTerm_from_status_line] = "\a",
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = "\033[?1l\033>",
+ [kTerm_keypad_xmit] = "\033[?1h\033=",
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
+ [kTerm_set_a_foreground] = "\033[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
+ [kTerm_set_attributes] = "\033[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t^N%e\017%;",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = "\033]0;",
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = "\033[%p1%d q",
+ [kTerm_enter_strikethrough_mode] = "\033[9m",
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = "\033]12;%p1%s\a",
+ [kTerm_reset_cursor_color] = "\033]112\a",
+ [kTerm_set_underline_style] = "\033[4\072%p1%dm",
+ },
};
-// st-256color|stterm-256color|simpleterm with 256 colors,
-// auto_right_margin,
-// back_color_erase,
-// can_change,
-// eat_newline_glitch,
-// has_status_line,
-// move_insert_mode,
-// move_standout_mode,
-// no_pad_char,
-// XT,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// acs_chars=+C\054D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-// back_tab=\E[Z,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs=\E[3g,
-// clear_screen=\E[H\E[2J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\n,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// dis_status_line=\E]0;^G,
-// ena_acs=\E)0,
-// enter_alt_charset_mode=\E(0,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[?1049h,
-// enter_dim_mode=\E[2m,
-// enter_insert_mode=\E[4h,
-// enter_italics_mode=\E[3m,
-// enter_reverse_mode=\E[7m,
-// enter_secure_mode=\E[8m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// erase_chars=\E[%p1%dX,
-// exit_alt_charset_mode=\E(B,
-// exit_attribute_mode=\E[0m,
-// exit_ca_mode=\E[?1049l,
-// exit_insert_mode=\E[4l,
-// exit_italics_mode=\E[23m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen=\E[?5h$<100/>\E[?5l,
-// from_status_line=^G,
-// init_2string=\E[4l\E>\E[?1034l,
-// initialize_color=\E]4;%p1%d;rgb\072%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\,
-// insert_line=\E[L,
-// key_a1=\E[1~,
-// key_a3=\E[5~,
-// key_b2=\EOu,
-// key_backspace=\177,
-// key_c1=\E[4~,
-// key_c3=\E[6~,
-// key_clear=\E[3;5~,
-// key_dc=\E[3~,
-// key_dl=\E[3;2~,
-// key_down=\EOB,
-// key_eic=\E[2;2~,
-// key_end=\E[4~,
-// key_eol=\E[1;2F,
-// key_eos=\E[1;5F,
-// key_f1=\EOP,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[1;2P,
-// key_f14=\E[1;2Q,
-// key_f15=\E[1;2R,
-// key_f16=\E[1;2S,
-// key_f17=\E[15;2~,
-// key_f18=\E[17;2~,
-// key_f19=\E[18;2~,
-// key_f2=\EOQ,
-// key_f20=\E[19;2~,
-// key_f21=\E[20;2~,
-// key_f22=\E[21;2~,
-// key_f23=\E[23;2~,
-// key_f24=\E[24;2~,
-// key_f25=\E[1;5P,
-// key_f26=\E[1;5Q,
-// key_f27=\E[1;5R,
-// key_f28=\E[1;5S,
-// key_f29=\E[15;5~,
-// key_f3=\EOR,
-// key_f30=\E[17;5~,
-// key_f31=\E[18;5~,
-// key_f32=\E[19;5~,
-// key_f33=\E[20;5~,
-// key_f34=\E[21;5~,
-// key_f35=\E[23;5~,
-// key_f36=\E[24;5~,
-// key_f37=\E[1;6P,
-// key_f38=\E[1;6Q,
-// key_f39=\E[1;6R,
-// key_f4=\EOS,
-// key_f40=\E[1;6S,
-// key_f41=\E[15;6~,
-// key_f42=\E[17;6~,
-// key_f43=\E[18;6~,
-// key_f44=\E[19;6~,
-// key_f45=\E[20;6~,
-// key_f46=\E[21;6~,
-// key_f47=\E[23;6~,
-// key_f48=\E[24;6~,
-// key_f49=\E[1;3P,
-// key_f5=\E[15~,
-// key_f50=\E[1;3Q,
-// key_f51=\E[1;3R,
-// key_f52=\E[1;3S,
-// key_f53=\E[15;3~,
-// key_f54=\E[17;3~,
-// key_f55=\E[18;3~,
-// key_f56=\E[19;3~,
-// key_f57=\E[20;3~,
-// key_f58=\E[21;3~,
-// key_f59=\E[23;3~,
-// key_f6=\E[17~,
-// key_f60=\E[24;3~,
-// key_f61=\E[1;4P,
-// key_f62=\E[1;4Q,
-// key_f63=\E[1;4R,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\E[1~,
-// key_ic=\E[2~,
-// key_il=\E[2;5~,
-// key_left=\EOD,
-// key_mouse=\E[M,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\EOC,
-// key_sdc=\E[3;2~,
-// key_send=\E[1;2F,
-// key_sf=\E[1;2B,
-// key_shome=\E[1;2H,
-// key_sic=\E[2;2~,
-// key_sleft=\E[1;2D,
-// key_snext=\E[6;2~,
-// key_sprevious=\E[5;2~,
-// key_sr=\E[1;2A,
-// key_sright=\E[1;2C,
-// key_up=\EOA,
-// keypad_local=\E[?1l\E>,
-// keypad_xmit=\E[?1h\E=,
-// orig_colors=\E]104^G,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// print_screen=\E[i,
-// prtr_off=\E[4i,
-// prtr_on=\E[5i,
-// reset_1string=\Ec,
-// reset_2string=\E[4l\E>\E[?1034l,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
-// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
-// set_attributes=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m,
-// set_tab=\EH,
-// tab=^I,
-// to_status_line=\E]0;,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?1;2c,
-// user9=\E[c,
-// BD=\E[?2004l,
-// BE=\E[?2004h,
-// Ms=\E]52;%p1%s;%p2%s^G,
-// PE=\E[201~,
-// PS=\E[200~,
-// Se=\E[2 q,
-// Ss=\E[%p1%d q,
-// TS=\E]0;,
-// kDN3=\E[1;3B,
-// kDN5=\E[1;5B,
-// kLFT3=\E[1;3D,
-// kLFT5=\E[1;5D,
-// kNXT3=\E[6;3~,
-// kNXT5=\E[6;5~,
-// kPRV3=\E[5;3~,
-// kPRV5=\E[5;5~,
-// kRIT3=\E[1;3C,
-// kRIT5=\E[1;5C,
-// kUP3=\E[1;3A,
-// kUP5=\E[1;5A,
-// rmxx=\E[29m,
-// smxx=\E[9m,
-static const int8_t st_256colour_terminfo[] = {
- 30,2,55,0,29,0,15,0,105,1,-28,5,115,116,45,50,53,54,99,111,108,111,114,124,115,116,116,101,114,109,45,50,53,54,99,111,108,111,114,124,115,105,109,112,108,101,116,101,114,109,32,119,105,116,104,32,50,53,54,32,99,111,108,111,114,115,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,0,0,4,0,6,0,8,0,25,0,30,0,38,0,42,0,46,0,-1,-1,57,0,74,0,76,0,80,0,87,0,-1,-1,89,0,96,0,-1,-1,100,0,-1,-1,104,0,108,0,112,0,-1,-1,118,0,122,0,127,0,-124,0,-1,-1,-115,0,-110,0,-105,0,-1,-1,-100,0,-95,0,-90,0,-85,0,-76,0,-72,0,-67,0,-1,-1,-58,0,-53,0,-47,0,-41,0,-1,-1,-23,0,-1,-1,-21,0,-1,-1,-1,-1,-1,-1,-6,0,-1,-1,-2,0,-1,-1,0,1,-1,-1,7,1,12,1,19,1,23,1,30,1,37,1,-1,-1,44,1,48,1,54,1,58,1,62,1,66,1,72,1,78,1,84,1,90,1,96,1,101,1,106,1,113,1,-1,-1,117,1,122,1,127,1,-125,1,-118,1,-1,-1,-111,1,-107,1,-99,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-91,1,-82,1,-73,1,-64,1,-55,1,-46,1,-37,1,-28,1,-19,1,-10,1,-1,-1,-1,-1,-1,-1,-1,1,3,2,8,2,-1,-1,13,2,16,2,-1,-1,-1,-1,31,2,34,2,45,2,48,2,50,2,53,2,-110,2,-1,-1,-107,2,-105,2,-1,-1,-1,-1,-1,-1,-100,2,-95,2,-90,2,-86,2,-81,2,-1,-1,-1,-1,-76,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-7,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,2,-1,-1,-1,-1,5,3,-1,-1,-1,-1,-1,-1,-1,-1,12,3,19,3,26,3,-1,-1,-1,-1,33,3,-1,-1,40,3,-1,-1,-1,-1,-1,-1,47,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,54,3,60,3,66,3,73,3,80,3,87,3,94,3,102,3,110,3,118,3,126,3,-122,3,-114,3,-106,3,-98,3,-91,3,-84,3,-77,3,-70,3,-62,3,-54,3,-46,3,-38,3,-30,3,-22,3,-14,3,-6,3,1,4,8,4,15,4,22,4,30,4,38,4,46,4,54,4,62,4,70,4,78,4,86,4,93,4,100,4,107,4,114,4,122,4,-126,4,-118,4,-110,4,-102,4,-94,4,-86,4,-78,4,-71,4,-64,4,-57,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-52,4,-41,4,-36,4,-28,4,-24,4,-15,4,-8,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,86,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,91,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,5,-1,-1,-1,-1,-1,-1,101,5,-92,5,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,27,93,48,59,7,0,27,40,48,0,27,91,53,109,0,27,91,49,109,0,27,91,63,49,48,52,57,104,0,27,91,50,109,0,27,91,52,104,0,27,91,56,109,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,27,40,66,0,27,91,48,109,0,27,91,63,49,48,52,57,108,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,63,53,104,36,60,49,48,48,47,62,27,91,63,53,108,0,7,0,27,91,52,108,27,62,27,91,63,49,48,51,52,108,0,27,91,76,0,127,0,27,91,51,59,53,126,0,27,91,51,126,0,27,91,51,59,50,126,0,27,79,66,0,27,91,50,59,50,126,0,27,91,49,59,50,70,0,27,91,49,59,53,70,0,27,79,80,0,27,91,50,49,126,0,27,79,81,0,27,79,82,0,27,79,83,0,27,91,49,53,126,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,91,50,59,53,126,0,27,79,68,0,27,91,54,126,0,27,91,53,126,0,27,79,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,79,65,0,27,91,63,49,108,27,62,0,27,91,63,49,104,27,61,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,27,91,105,0,27,91,52,105,0,27,91,53,105,0,27,99,0,27,91,52,108,27,62,27,91,63,49,48,51,52,108,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,37,63,37,112,57,37,116,27,40,48,37,101,27,40,66,37,59,27,91,48,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,37,63,37,112,53,37,116,59,50,37,59,37,63,37,112,55,37,116,59,56,37,59,109,0,27,72,0,9,0,27,93,48,59,0,27,91,49,126,0,27,91,53,126,0,27,79,117,0,27,91,52,126,0,27,91,54,126,0,43,67,44,68,45,65,46,66,48,69,96,96,97,97,102,102,103,103,104,70,105,71,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,41,48,0,27,91,52,126,0,27,91,51,59,50,126,0,27,91,49,59,50,70,0,27,91,49,59,50,72,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,49,59,50,80,0,27,91,49,59,50,81,0,27,91,49,59,50,82,0,27,91,49,59,50,83,0,27,91,49,53,59,50,126,0,27,91,49,55,59,50,126,0,27,91,49,56,59,50,126,0,27,91,49,57,59,50,126,0,27,91,50,48,59,50,126,0,27,91,50,49,59,50,126,0,27,91,50,51,59,50,126,0,27,91,50,52,59,50,126,0,27,91,49,59,53,80,0,27,91,49,59,53,81,0,27,91,49,59,53,82,0,27,91,49,59,53,83,0,27,91,49,53,59,53,126,0,27,91,49,55,59,53,126,0,27,91,49,56,59,53,126,0,27,91,49,57,59,53,126,0,27,91,50,48,59,53,126,0,27,91,50,49,59,53,126,0,27,91,50,51,59,53,126,0,27,91,50,52,59,53,126,0,27,91,49,59,54,80,0,27,91,49,59,54,81,0,27,91,49,59,54,82,0,27,91,49,59,54,83,0,27,91,49,53,59,54,126,0,27,91,49,55,59,54,126,0,27,91,49,56,59,54,126,0,27,91,49,57,59,54,126,0,27,91,50,48,59,54,126,0,27,91,50,49,59,54,126,0,27,91,50,51,59,54,126,0,27,91,50,52,59,54,126,0,27,91,49,59,51,80,0,27,91,49,59,51,81,0,27,91,49,59,51,82,0,27,91,49,59,51,83,0,27,91,49,53,59,51,126,0,27,91,49,55,59,51,126,0,27,91,49,56,59,51,126,0,27,91,49,57,59,51,126,0,27,91,50,48,59,51,126,0,27,91,50,49,59,51,126,0,27,91,50,51,59,51,126,0,27,91,50,52,59,51,126,0,27,91,49,59,52,80,0,27,91,49,59,52,81,0,27,91,49,59,52,82,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,49,59,50,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,93,49,48,52,7,0,27,93,52,59,37,112,49,37,100,59,114,103,98,58,37,112,50,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,51,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,52,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,27,92,0,27,91,51,109,0,27,91,50,51,109,0,27,91,77,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,1,0,0,0,22,0,45,0,15,1,1,0,0,0,9,0,18,0,36,0,43,0,50,0,56,0,66,0,71,0,78,0,85,0,92,0,99,0,106,0,113,0,120,0,127,0,-122,0,-115,0,-108,0,-101,0,-95,0,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,32,0,37,0,43,0,49,0,55,0,61,0,67,0,73,0,79,0,85,0,90,0,95,0,100,0,27,91,63,50,48,48,52,108,0,27,91,63,50,48,48,52,104,0,27,93,53,50,59,37,112,49,37,115,59,37,112,50,37,115,7,0,27,91,50,48,49,126,0,27,91,50,48,48,126,0,27,91,50,32,113,0,27,91,37,112,49,37,100,32,113,0,27,93,48,59,0,27,91,49,59,51,66,0,27,91,49,59,53,66,0,27,91,49,59,51,68,0,27,91,49,59,53,68,0,27,91,54,59,51,126,0,27,91,54,59,53,126,0,27,91,53,59,51,126,0,27,91,53,59,53,126,0,27,91,49,59,51,67,0,27,91,49,59,53,67,0,27,91,49,59,51,65,0,27,91,49,59,53,65,0,27,91,50,57,109,0,27,91,57,109,0,88,84,0,66,68,0,66,69,0,77,115,0,80,69,0,80,83,0,83,101,0,83,115,0,84,83,0,107,68,78,51,0,107,68,78,53,0,107,76,70,84,51,0,107,76,70,84,53,0,107,78,88,84,51,0,107,78,88,84,53,0,107,80,82,86,51,0,107,80,82,86,53,0,107,82,73,84,51,0,107,82,73,84,53,0,107,85,80,51,0,107,85,80,53,0,114,109,120,120,0,115,109,120,120,0
+static const TerminfoEntry vte_256colour_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[2J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\n",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[?25h",
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[?1049h\033[22;0;0t",
+ [kTerm_enter_italics_mode] = "\033[3m",
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = "\033[%p1%dX",
+ [kTerm_exit_attribute_mode] = "\033[0m\017",
+ [kTerm_exit_ca_mode] = "\033[?1049l\033[23;0;0t",
+ [kTerm_from_status_line] = NULL,
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = "\033[?1l\033>",
+ [kTerm_keypad_xmit] = "\033[?1h\033=",
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
+ [kTerm_set_a_foreground] = "\033[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
+ [kTerm_set_attributes] = "\033[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;%?%p1%p3%|%t;7%;m%?%p9%t^N%e\017%;",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = NULL,
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = "\033[%p1%d q",
+ [kTerm_enter_strikethrough_mode] = "\033[9m",
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = "\033]12;%p1%s\a",
+ [kTerm_reset_cursor_color] = "\033]112\a",
+ [kTerm_set_underline_style] = "\033[4\072%p1%dm",
+ },
};
-// tmux-256color|tmux with 256 colors,
-// auto_right_margin,
-// backspaces_with_bs,
-// eat_newline_glitch,
-// has_hardware_tabs,
-// has_meta_key,
-// has_status_line,
-// move_insert_mode,
-// move_standout_mode,
-// AX,
-// G0,
-// XF,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// U8#1,
-// acs_chars=++\054\054--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-// back_tab=\E[Z,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs=\E[3g,
-// clear_screen=\E[H\E[J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\n,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[34h\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\EM,
-// cursor_visible=\E[34l,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// dis_status_line=\E]0;^G,
-// ena_acs=\E(B\E)0,
-// enter_alt_charset_mode=^N,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[?1049h,
-// enter_dim_mode=\E[2m,
-// enter_insert_mode=\E[4h,
-// enter_italics_mode=\E[3m,
-// enter_reverse_mode=\E[7m,
-// enter_secure_mode=\E[8m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// exit_alt_charset_mode=^O,
-// exit_attribute_mode=\E[m^O,
-// exit_ca_mode=\E[?1049l,
-// exit_insert_mode=\E[4l,
-// exit_italics_mode=\E[23m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen=\Eg,
-// from_status_line=^G,
-// init_2string=\E)0,
-// insert_line=\E[L,
-// key_backspace=^H,
-// key_btab=\E[Z,
-// key_dc=\E[3~,
-// key_down=\EOB,
-// key_end=\E[4~,
-// key_f1=\EOP,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[1;2P,
-// key_f14=\E[1;2Q,
-// key_f15=\E[1;2R,
-// key_f16=\E[1;2S,
-// key_f17=\E[15;2~,
-// key_f18=\E[17;2~,
-// key_f19=\E[18;2~,
-// key_f2=\EOQ,
-// key_f20=\E[19;2~,
-// key_f21=\E[20;2~,
-// key_f22=\E[21;2~,
-// key_f23=\E[23;2~,
-// key_f24=\E[24;2~,
-// key_f25=\E[1;5P,
-// key_f26=\E[1;5Q,
-// key_f27=\E[1;5R,
-// key_f28=\E[1;5S,
-// key_f29=\E[15;5~,
-// key_f3=\EOR,
-// key_f30=\E[17;5~,
-// key_f31=\E[18;5~,
-// key_f32=\E[19;5~,
-// key_f33=\E[20;5~,
-// key_f34=\E[21;5~,
-// key_f35=\E[23;5~,
-// key_f36=\E[24;5~,
-// key_f37=\E[1;6P,
-// key_f38=\E[1;6Q,
-// key_f39=\E[1;6R,
-// key_f4=\EOS,
-// key_f40=\E[1;6S,
-// key_f41=\E[15;6~,
-// key_f42=\E[17;6~,
-// key_f43=\E[18;6~,
-// key_f44=\E[19;6~,
-// key_f45=\E[20;6~,
-// key_f46=\E[21;6~,
-// key_f47=\E[23;6~,
-// key_f48=\E[24;6~,
-// key_f49=\E[1;3P,
-// key_f5=\E[15~,
-// key_f50=\E[1;3Q,
-// key_f51=\E[1;3R,
-// key_f52=\E[1;3S,
-// key_f53=\E[15;3~,
-// key_f54=\E[17;3~,
-// key_f55=\E[18;3~,
-// key_f56=\E[19;3~,
-// key_f57=\E[20;3~,
-// key_f58=\E[21;3~,
-// key_f59=\E[23;3~,
-// key_f6=\E[17~,
-// key_f60=\E[24;3~,
-// key_f61=\E[1;4P,
-// key_f62=\E[1;4Q,
-// key_f63=\E[1;4R,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\E[1~,
-// key_ic=\E[2~,
-// key_left=\EOD,
-// key_mouse=\E[M,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\EOC,
-// key_sdc=\E[3;2~,
-// key_send=\E[1;2F,
-// key_sf=\E[1;2B,
-// key_shome=\E[1;2H,
-// key_sic=\E[2;2~,
-// key_sleft=\E[1;2D,
-// key_snext=\E[6;2~,
-// key_sprevious=\E[5;2~,
-// key_sr=\E[1;2A,
-// key_sright=\E[1;2C,
-// key_up=\EOA,
-// keypad_local=\E[?1l\E>,
-// keypad_xmit=\E[?1h\E=,
-// newline=\EE,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// reset_2string=\Ec\E[?1000l\E[?25h,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
-// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
-// set_attributes=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t^N%e^O%;,
-// set_tab=\EH,
-// tab=^I,
-// to_status_line=\E]0;,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?1;2c,
-// user9=\E[c,
-// BD=\E[?2004l,
-// BE=\E[?2004h,
-// Cr=\E]112^G,
-// Cs=\E]12;%p1%s^G,
-// E0=\E(B,
-// E3=\E[3J,
-// Ms=\E]52;%p1%s;%p2%s^G,
-// PE=\E[201~,
-// PS=\E[200~,
-// RV=\E[>c,
-// S0=\E(%p1%c,
-// Se=\E[2 q,
-// Smulx=\E[4\072%p1%dm,
-// Ss=\E[%p1%d q,
-// TS=\E]0;,
-// XR=\E[>0q,
-// fd=\E[?1004l,
-// fe=\E[?1004h,
-// kDC3=\E[3;3~,
-// kDC4=\E[3;4~,
-// kDC5=\E[3;5~,
-// kDC6=\E[3;6~,
-// kDC7=\E[3;7~,
-// kDN=\E[1;2B,
-// kDN3=\E[1;3B,
-// kDN4=\E[1;4B,
-// kDN5=\E[1;5B,
-// kDN6=\E[1;6B,
-// kDN7=\E[1;7B,
-// kEND3=\E[1;3F,
-// kEND4=\E[1;4F,
-// kEND5=\E[1;5F,
-// kEND6=\E[1;6F,
-// kEND7=\E[1;7F,
-// kHOM3=\E[1;3H,
-// kHOM4=\E[1;4H,
-// kHOM5=\E[1;5H,
-// kHOM6=\E[1;6H,
-// kHOM7=\E[1;7H,
-// kIC3=\E[2;3~,
-// kIC4=\E[2;4~,
-// kIC5=\E[2;5~,
-// kIC6=\E[2;6~,
-// kIC7=\E[2;7~,
-// kLFT3=\E[1;3D,
-// kLFT4=\E[1;4D,
-// kLFT5=\E[1;5D,
-// kLFT6=\E[1;6D,
-// kLFT7=\E[1;7D,
-// kNXT3=\E[6;3~,
-// kNXT4=\E[6;4~,
-// kNXT5=\E[6;5~,
-// kNXT6=\E[6;6~,
-// kNXT7=\E[6;7~,
-// kPRV3=\E[5;3~,
-// kPRV4=\E[5;4~,
-// kPRV5=\E[5;5~,
-// kPRV6=\E[5;6~,
-// kPRV7=\E[5;7~,
-// kRIT3=\E[1;3C,
-// kRIT4=\E[1;4C,
-// kRIT5=\E[1;5C,
-// kRIT6=\E[1;6C,
-// kRIT7=\E[1;7C,
-// kUP=\E[1;2A,
-// kUP3=\E[1;3A,
-// kUP4=\E[1;4A,
-// kUP5=\E[1;5A,
-// kUP6=\E[1;6A,
-// kUP7=\E[1;7A,
-// kxIN=\E[I,
-// kxOUT=\E[O,
-// rmxx=\E[29m,
-// rv=\E\[[0-9]+;[0-9]+;[0-9]+c,
-// smxx=\E[9m,
-// xr=\EP>\|[ -~]+\E\\,
-static const int8_t tmux_256colour_terminfo[] = {
- 30,2,35,0,43,0,15,0,105,1,22,5,116,109,117,120,45,50,53,54,99,111,108,111,114,124,116,109,117,120,32,119,105,116,104,32,50,53,54,32,99,111,108,111,114,115,0,0,1,0,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,0,0,4,0,6,0,8,0,25,0,30,0,37,0,41,0,45,0,-1,-1,56,0,73,0,75,0,79,0,86,0,-1,-1,88,0,100,0,-1,-1,104,0,107,0,113,0,117,0,121,0,-1,-1,127,0,-127,0,-122,0,-117,0,-1,-1,-108,0,-103,0,-98,0,-1,-1,-93,0,-88,0,-83,0,-1,-1,-78,0,-76,0,-71,0,-1,-1,-62,0,-57,0,-51,0,-45,0,-1,-1,-42,0,-1,-1,-40,0,-1,-1,-1,-1,-1,-1,-36,0,-1,-1,-32,0,-1,-1,-1,-1,-1,-1,-30,0,-1,-1,-25,0,-1,-1,-1,-1,-1,-1,-1,-1,-21,0,-17,0,-11,0,-7,0,-3,0,1,1,7,1,13,1,19,1,25,1,31,1,36,1,-1,-1,41,1,-1,-1,45,1,50,1,55,1,59,1,66,1,-1,-1,73,1,77,1,85,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,93,1,-1,-1,96,1,105,1,114,1,123,1,-124,1,-115,1,-106,1,-97,1,-88,1,-79,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-70,1,-1,-1,-1,-1,-53,1,-50,1,-39,1,-36,1,-34,1,-31,1,58,2,-1,-1,61,2,63,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,68,2,-1,-1,-123,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-119,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-112,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-107,2,-1,-1,-1,-1,-100,2,-1,-1,-1,-1,-1,-1,-1,-1,-93,2,-86,2,-79,2,-1,-1,-1,-1,-72,2,-1,-1,-65,2,-1,-1,-1,-1,-1,-1,-58,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-51,2,-45,2,-39,2,-32,2,-25,2,-18,2,-11,2,-3,2,5,3,13,3,21,3,29,3,37,3,45,3,53,3,60,3,67,3,74,3,81,3,89,3,97,3,105,3,113,3,121,3,-127,3,-119,3,-111,3,-104,3,-97,3,-90,3,-83,3,-75,3,-67,3,-59,3,-51,3,-43,3,-35,3,-27,3,-19,3,-12,3,-5,3,2,4,9,4,17,4,25,4,33,4,41,4,49,4,57,4,65,4,73,4,80,4,87,4,94,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,99,4,110,4,115,4,123,4,127,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-120,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-115,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-109,4,-1,-1,-1,-1,-1,-1,-105,4,-42,4,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,51,52,104,27,91,63,50,53,104,0,27,91,67,0,27,77,0,27,91,51,52,108,0,27,91,80,0,27,91,77,0,27,93,48,59,7,0,14,0,27,91,53,109,0,27,91,49,109,0,27,91,63,49,48,52,57,104,0,27,91,50,109,0,27,91,52,104,0,27,91,56,109,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,15,0,27,91,109,15,0,27,91,63,49,48,52,57,108,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,103,0,7,0,27,41,48,0,27,91,76,0,8,0,27,91,51,126,0,27,79,66,0,27,79,80,0,27,91,50,49,126,0,27,79,81,0,27,79,82,0,27,79,83,0,27,91,49,53,126,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,79,68,0,27,91,54,126,0,27,91,53,126,0,27,79,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,79,65,0,27,91,63,49,108,27,62,0,27,91,63,49,104,27,61,0,27,69,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,27,99,27,91,63,49,48,48,48,108,27,91,63,50,53,104,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,37,63,37,112,53,37,116,59,50,37,59,37,63,37,112,55,37,116,59,56,37,59,109,37,63,37,112,57,37,116,14,37,101,15,37,59,0,27,72,0,9,0,27,93,48,59,0,43,43,44,44,45,45,46,46,48,48,96,96,97,97,102,102,103,103,104,104,105,105,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,91,90,0,27,40,66,27,41,48,0,27,91,52,126,0,27,91,51,59,50,126,0,27,91,49,59,50,70,0,27,91,49,59,50,72,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,49,59,50,80,0,27,91,49,59,50,81,0,27,91,49,59,50,82,0,27,91,49,59,50,83,0,27,91,49,53,59,50,126,0,27,91,49,55,59,50,126,0,27,91,49,56,59,50,126,0,27,91,49,57,59,50,126,0,27,91,50,48,59,50,126,0,27,91,50,49,59,50,126,0,27,91,50,51,59,50,126,0,27,91,50,52,59,50,126,0,27,91,49,59,53,80,0,27,91,49,59,53,81,0,27,91,49,59,53,82,0,27,91,49,59,53,83,0,27,91,49,53,59,53,126,0,27,91,49,55,59,53,126,0,27,91,49,56,59,53,126,0,27,91,49,57,59,53,126,0,27,91,50,48,59,53,126,0,27,91,50,49,59,53,126,0,27,91,50,51,59,53,126,0,27,91,50,52,59,53,126,0,27,91,49,59,54,80,0,27,91,49,59,54,81,0,27,91,49,59,54,82,0,27,91,49,59,54,83,0,27,91,49,53,59,54,126,0,27,91,49,55,59,54,126,0,27,91,49,56,59,54,126,0,27,91,49,57,59,54,126,0,27,91,50,48,59,54,126,0,27,91,50,49,59,54,126,0,27,91,50,51,59,54,126,0,27,91,50,52,59,54,126,0,27,91,49,59,51,80,0,27,91,49,59,51,81,0,27,91,49,59,51,82,0,27,91,49,59,51,83,0,27,91,49,53,59,51,126,0,27,91,49,55,59,51,126,0,27,91,49,56,59,51,126,0,27,91,49,57,59,51,126,0,27,91,50,48,59,51,126,0,27,91,50,49,59,51,126,0,27,91,50,51,59,51,126,0,27,91,50,52,59,51,126,0,27,91,49,59,52,80,0,27,91,49,59,52,81,0,27,91,49,59,52,82,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,49,59,50,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,91,51,109,0,27,91,50,51,109,0,27,91,77,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,3,0,1,0,76,0,-100,0,-70,3,1,1,1,0,1,0,0,0,0,0,9,0,18,0,25,0,37,0,41,0,46,0,64,0,71,0,78,0,83,0,91,0,97,0,108,0,118,0,123,0,-127,0,-118,0,-109,0,-102,0,-95,0,-88,0,-81,0,-74,0,-67,0,-60,0,-53,0,-46,0,-39,0,-32,0,-25,0,-18,0,-11,0,-4,0,3,1,10,1,17,1,24,1,31,1,38,1,45,1,52,1,59,1,66,1,73,1,80,1,87,1,94,1,101,1,108,1,115,1,122,1,-127,1,-120,1,-113,1,-106,1,-99,1,-92,1,-85,1,-78,1,-71,1,-64,1,-57,1,-50,1,-43,1,-36,1,-29,1,-22,1,-15,1,-8,1,-1,1,3,2,7,2,13,2,38,2,43,2,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,30,0,33,0,36,0,39,0,42,0,45,0,48,0,54,0,57,0,60,0,63,0,66,0,69,0,74,0,79,0,84,0,89,0,94,0,98,0,103,0,108,0,113,0,118,0,123,0,-127,0,-121,0,-115,0,-109,0,-103,0,-97,0,-91,0,-85,0,-79,0,-73,0,-68,0,-63,0,-58,0,-53,0,-48,0,-42,0,-36,0,-30,0,-24,0,-18,0,-12,0,-6,0,0,1,6,1,12,1,18,1,24,1,30,1,36,1,42,1,48,1,54,1,60,1,66,1,72,1,76,1,81,1,86,1,91,1,96,1,101,1,106,1,112,1,117,1,120,1,125,1,27,91,63,50,48,48,52,108,0,27,91,63,50,48,48,52,104,0,27,93,49,49,50,7,0,27,93,49,50,59,37,112,49,37,115,7,0,27,40,66,0,27,91,51,74,0,27,93,53,50,59,37,112,49,37,115,59,37,112,50,37,115,7,0,27,91,50,48,49,126,0,27,91,50,48,48,126,0,27,91,62,99,0,27,40,37,112,49,37,99,0,27,91,50,32,113,0,27,91,52,58,37,112,49,37,100,109,0,27,91,37,112,49,37,100,32,113,0,27,93,48,59,0,27,91,62,48,113,0,27,91,63,49,48,48,52,108,0,27,91,63,49,48,48,52,104,0,27,91,51,59,51,126,0,27,91,51,59,52,126,0,27,91,51,59,53,126,0,27,91,51,59,54,126,0,27,91,51,59,55,126,0,27,91,49,59,50,66,0,27,91,49,59,51,66,0,27,91,49,59,52,66,0,27,91,49,59,53,66,0,27,91,49,59,54,66,0,27,91,49,59,55,66,0,27,91,49,59,51,70,0,27,91,49,59,52,70,0,27,91,49,59,53,70,0,27,91,49,59,54,70,0,27,91,49,59,55,70,0,27,91,49,59,51,72,0,27,91,49,59,52,72,0,27,91,49,59,53,72,0,27,91,49,59,54,72,0,27,91,49,59,55,72,0,27,91,50,59,51,126,0,27,91,50,59,52,126,0,27,91,50,59,53,126,0,27,91,50,59,54,126,0,27,91,50,59,55,126,0,27,91,49,59,51,68,0,27,91,49,59,52,68,0,27,91,49,59,53,68,0,27,91,49,59,54,68,0,27,91,49,59,55,68,0,27,91,54,59,51,126,0,27,91,54,59,52,126,0,27,91,54,59,53,126,0,27,91,54,59,54,126,0,27,91,54,59,55,126,0,27,91,53,59,51,126,0,27,91,53,59,52,126,0,27,91,53,59,53,126,0,27,91,53,59,54,126,0,27,91,53,59,55,126,0,27,91,49,59,51,67,0,27,91,49,59,52,67,0,27,91,49,59,53,67,0,27,91,49,59,54,67,0,27,91,49,59,55,67,0,27,91,49,59,50,65,0,27,91,49,59,51,65,0,27,91,49,59,52,65,0,27,91,49,59,53,65,0,27,91,49,59,54,65,0,27,91,49,59,55,65,0,27,91,73,0,27,91,79,0,27,91,50,57,109,0,27,92,91,91,48,45,57,93,43,59,91,48,45,57,93,43,59,91,48,45,57,93,43,99,0,27,91,57,109,0,27,80,62,92,124,91,32,45,126,93,43,27,92,92,0,65,88,0,71,48,0,88,70,0,85,56,0,66,68,0,66,69,0,67,114,0,67,115,0,69,48,0,69,51,0,77,115,0,80,69,0,80,83,0,82,86,0,83,48,0,83,101,0,83,109,117,108,120,0,83,115,0,84,83,0,88,82,0,102,100,0,102,101,0,107,68,67,51,0,107,68,67,52,0,107,68,67,53,0,107,68,67,54,0,107,68,67,55,0,107,68,78,0,107,68,78,51,0,107,68,78,52,0,107,68,78,53,0,107,68,78,54,0,107,68,78,55,0,107,69,78,68,51,0,107,69,78,68,52,0,107,69,78,68,53,0,107,69,78,68,54,0,107,69,78,68,55,0,107,72,79,77,51,0,107,72,79,77,52,0,107,72,79,77,53,0,107,72,79,77,54,0,107,72,79,77,55,0,107,73,67,51,0,107,73,67,52,0,107,73,67,53,0,107,73,67,54,0,107,73,67,55,0,107,76,70,84,51,0,107,76,70,84,52,0,107,76,70,84,53,0,107,76,70,84,54,0,107,76,70,84,55,0,107,78,88,84,51,0,107,78,88,84,52,0,107,78,88,84,53,0,107,78,88,84,54,0,107,78,88,84,55,0,107,80,82,86,51,0,107,80,82,86,52,0,107,80,82,86,53,0,107,80,82,86,54,0,107,80,82,86,55,0,107,82,73,84,51,0,107,82,73,84,52,0,107,82,73,84,53,0,107,82,73,84,54,0,107,82,73,84,55,0,107,85,80,0,107,85,80,51,0,107,85,80,52,0,107,85,80,53,0,107,85,80,54,0,107,85,80,55,0,107,120,73,78,0,107,120,79,85,84,0,114,109,120,120,0,114,118,0,115,109,120,120,0,120,114,0
+static const TerminfoEntry xterm_256colour_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[2J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\n",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[?12l\033[?25h",
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[?1049h\033[22;0;0t",
+ [kTerm_enter_italics_mode] = "\033[3m",
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = "\033[%p1%dX",
+ [kTerm_exit_attribute_mode] = "\033(B\033[m",
+ [kTerm_exit_ca_mode] = "\033[?1049l\033[23;0;0t",
+ [kTerm_from_status_line] = NULL,
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = "\033[?1l\033>",
+ [kTerm_keypad_xmit] = "\033[?1h\033=",
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
+ [kTerm_set_a_foreground] = "\033[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
+ [kTerm_set_attributes] = "%?%p9%t\033(0%e\033(B%;\033[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m",
+ [kTerm_set_lr_margin] = "\033[?69h\033[%i%p1%d;%p2%ds",
+ [kTerm_to_status_line] = NULL,
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = "\033[%p1%d q",
+ [kTerm_enter_strikethrough_mode] = "\033[9m",
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = "\033]12;%p1%s\a",
+ [kTerm_reset_cursor_color] = "\033]112\a",
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// vte-256color|VTE with xterm 256-colors,
-// auto_right_margin,
-// back_color_erase,
-// backspaces_with_bs,
-// can_change,
-// eat_newline_glitch,
-// move_insert_mode,
-// move_standout_mode,
-// AX,
-// XT,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// acs_chars=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-// back_tab=\E[Z,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs=\E[3g,
-// clear_screen=\E[H\E[2J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\n,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// ena_acs=\E(B\E)0,
-// enter_alt_charset_mode=^N,
-// enter_am_mode=\E[?7h,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[?1049h\E[22;0;0t,
-// enter_dim_mode=\E[2m,
-// enter_insert_mode=\E[4h,
-// enter_italics_mode=\E[3m,
-// enter_reverse_mode=\E[7m,
-// enter_secure_mode=\E[8m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// erase_chars=\E[%p1%dX,
-// exit_alt_charset_mode=^O,
-// exit_am_mode=\E[?7l,
-// exit_attribute_mode=\E[0m^O,
-// exit_ca_mode=\E[?1049l\E[23;0;0t,
-// exit_insert_mode=\E[4l,
-// exit_italics_mode=\E[23m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen=\E[?5h$<100/>\E[?5l,
-// init_2string=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
-// initialize_color=\E]4;%p1%d;rgb\072%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\,
-// insert_line=\E[L,
-// key_b2=\E[E,
-// key_backspace=\177,
-// key_btab=\E[Z,
-// key_dc=\E[3~,
-// key_down=\EOB,
-// key_end=\EOF,
-// key_enter=\EOM,
-// key_f1=\EOP,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[1;2P,
-// key_f14=\E[1;2Q,
-// key_f15=\E[1;2R,
-// key_f16=\E[1;2S,
-// key_f17=\E[15;2~,
-// key_f18=\E[17;2~,
-// key_f19=\E[18;2~,
-// key_f2=\EOQ,
-// key_f20=\E[19;2~,
-// key_f21=\E[20;2~,
-// key_f22=\E[21;2~,
-// key_f23=\E[23;2~,
-// key_f24=\E[24;2~,
-// key_f25=\E[1;5P,
-// key_f26=\E[1;5Q,
-// key_f27=\E[1;5R,
-// key_f28=\E[1;5S,
-// key_f29=\E[15;5~,
-// key_f3=\EOR,
-// key_f30=\E[17;5~,
-// key_f31=\E[18;5~,
-// key_f32=\E[19;5~,
-// key_f33=\E[20;5~,
-// key_f34=\E[21;5~,
-// key_f35=\E[23;5~,
-// key_f36=\E[24;5~,
-// key_f37=\E[1;6P,
-// key_f38=\E[1;6Q,
-// key_f39=\E[1;6R,
-// key_f4=\EOS,
-// key_f40=\E[1;6S,
-// key_f41=\E[15;6~,
-// key_f42=\E[17;6~,
-// key_f43=\E[18;6~,
-// key_f44=\E[19;6~,
-// key_f45=\E[20;6~,
-// key_f46=\E[21;6~,
-// key_f47=\E[23;6~,
-// key_f48=\E[24;6~,
-// key_f49=\E[1;3P,
-// key_f5=\E[15~,
-// key_f50=\E[1;3Q,
-// key_f51=\E[1;3R,
-// key_f52=\E[1;3S,
-// key_f53=\E[15;3~,
-// key_f54=\E[17;3~,
-// key_f55=\E[18;3~,
-// key_f56=\E[19;3~,
-// key_f57=\E[20;3~,
-// key_f58=\E[21;3~,
-// key_f59=\E[23;3~,
-// key_f6=\E[17~,
-// key_f60=\E[24;3~,
-// key_f61=\E[1;4P,
-// key_f62=\E[1;4Q,
-// key_f63=\E[1;4R,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_find=\E[1~,
-// key_home=\EOH,
-// key_ic=\E[2~,
-// key_left=\EOD,
-// key_mouse=\E[<,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\EOC,
-// key_sdc=\E[3;2~,
-// key_select=\E[4~,
-// key_send=\E[1;2F,
-// key_sf=\E[1;2B,
-// key_shome=\E[1;2H,
-// key_sic=\E[2;2~,
-// key_sleft=\E[1;2D,
-// key_snext=\E[6;2~,
-// key_sprevious=\E[5;2~,
-// key_sr=\E[1;2A,
-// key_sright=\E[1;2C,
-// key_up=\EOA,
-// keypad_local=\E[?1l\E>,
-// keypad_xmit=\E[?1h\E=,
-// memory_lock=\El,
-// memory_unlock=\Em,
-// newline=\EE,
-// orig_colors=\E]104^G,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// repeat_char=%p1%c\E[%p2%{1}%-%db,
-// reset_1string=\Ec,
-// reset_2string=\E7\E[r\E8\E[m\E[?7h\E[\041p\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
-// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
-// set_attributes=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;%?%p1%p3%|%t;7%;m%?%p9%t^N%e^O%;,
-// set_tab=\EH,
-// tab=^I,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?%[;0123456789]c,
-// user9=\E[c,
-// BD=\E[?2004l,
-// BE=\E[?2004h,
-// Cr=\E]112^G,
-// Cs=\E]12;%p1%s^G,
-// Ms=\E]52;%p1%s;%p2%s^G,
-// PE=\E[201~,
-// PS=\E[200~,
-// Rmol=\E[55m,
-// Se=\E[1 q,
-// Smol=\E[53m,
-// Smulx=\E[4\072%p1%dm,
-// Ss=\E[%p1%d q,
-// XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
-// kDC3=\E[3;3~,
-// kDC4=\E[3;4~,
-// kDC5=\E[3;5~,
-// kDC6=\E[3;6~,
-// kDC7=\E[3;7~,
-// kDN=\E[1;2B,
-// kDN3=\E[1;3B,
-// kDN4=\E[1;4B,
-// kDN5=\E[1;5B,
-// kDN6=\E[1;6B,
-// kDN7=\E[1;7B,
-// kEND3=\E[1;3F,
-// kEND4=\E[1;4F,
-// kEND5=\E[1;5F,
-// kEND6=\E[1;6F,
-// kEND7=\E[1;7F,
-// kHOM3=\E[1;3H,
-// kHOM4=\E[1;4H,
-// kHOM5=\E[1;5H,
-// kHOM6=\E[1;6H,
-// kHOM7=\E[1;7H,
-// kIC3=\E[2;3~,
-// kIC4=\E[2;4~,
-// kIC5=\E[2;5~,
-// kIC6=\E[2;6~,
-// kIC7=\E[2;7~,
-// kLFT3=\E[1;3D,
-// kLFT4=\E[1;4D,
-// kLFT5=\E[1;5D,
-// kLFT6=\E[1;6D,
-// kLFT7=\E[1;7D,
-// kNXT3=\E[6;3~,
-// kNXT4=\E[6;4~,
-// kNXT5=\E[6;5~,
-// kNXT6=\E[6;6~,
-// kNXT7=\E[6;7~,
-// kPRV3=\E[5;3~,
-// kPRV4=\E[5;4~,
-// kPRV5=\E[5;5~,
-// kPRV6=\E[5;6~,
-// kPRV7=\E[5;7~,
-// kRIT3=\E[1;3C,
-// kRIT4=\E[1;4C,
-// kRIT5=\E[1;5C,
-// kRIT6=\E[1;6C,
-// kRIT7=\E[1;7C,
-// kUP=\E[1;2A,
-// kUP3=\E[1;3A,
-// kUP4=\E[1;4A,
-// kUP5=\E[1;5A,
-// kUP6=\E[1;6A,
-// kUP7=\E[1;7A,
-// rmxx=\E[29m,
-// setal=\E[58\0722\072\072%p1%{65536}%/%d\072%p1%{256}%/%{255}%&%d\072%p1%{255}%&%dm,
-// smxx=\E[9m,
-// xm=\E[<%i%p3%d;%p1%d;%p2%d;%?%p4%tM%em%;,
-static const int8_t vte_256colour_terminfo[] = {
- 30,2,39,0,38,0,15,0,-99,1,7,6,118,116,101,45,50,53,54,99,111,108,111,114,124,86,84,69,32,119,105,116,104,32,120,116,101,114,109,32,50,53,54,45,99,111,108,111,114,115,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,0,0,4,0,6,0,8,0,25,0,30,0,38,0,42,0,46,0,-1,-1,57,0,74,0,76,0,80,0,87,0,-1,-1,89,0,96,0,-1,-1,100,0,-1,-1,104,0,108,0,-1,-1,-1,-1,112,0,114,0,119,0,124,0,-1,-1,-114,0,-109,0,-104,0,-1,-1,-99,0,-94,0,-89,0,-84,0,-75,0,-73,0,-67,0,-1,-1,-49,0,-44,0,-38,0,-32,0,-1,-1,-1,-1,-1,-1,-14,0,-1,-1,-1,-1,-1,-1,19,1,-1,-1,23,1,-1,-1,-1,-1,-1,-1,25,1,-1,-1,30,1,-1,-1,-1,-1,-1,-1,-1,-1,34,1,38,1,44,1,48,1,52,1,56,1,62,1,68,1,74,1,80,1,86,1,90,1,-1,-1,95,1,-1,-1,99,1,104,1,109,1,113,1,120,1,-1,-1,127,1,-125,1,-117,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-109,1,-1,-1,-106,1,-97,1,-88,1,-79,1,-70,1,-61,1,-52,1,-43,1,-34,1,-25,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16,1,4,2,7,2,-1,-1,-1,-1,58,2,61,2,72,2,75,2,77,2,80,2,-87,2,-1,-1,-84,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-82,2,-1,-1,-1,-1,-1,-1,-1,-1,-78,2,-1,-1,-25,2,-1,-1,-1,-1,-21,2,-15,2,-1,-1,-1,-1,-9,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,2,2,3,-1,-1,6,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,3,-1,-1,18,3,23,3,-1,-1,-1,-1,-1,-1,-1,-1,30,3,37,3,44,3,-1,-1,-1,-1,51,3,-1,-1,58,3,-1,-1,-1,-1,-1,-1,65,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,72,3,78,3,84,3,91,3,98,3,105,3,112,3,120,3,-128,3,-120,3,-112,3,-104,3,-96,3,-88,3,-80,3,-73,3,-66,3,-59,3,-52,3,-44,3,-36,3,-28,3,-20,3,-12,3,-4,3,4,4,12,4,19,4,26,4,33,4,40,4,48,4,56,4,64,4,72,4,80,4,88,4,96,4,104,4,111,4,118,4,125,4,-124,4,-116,4,-108,4,-100,4,-92,4,-84,4,-76,4,-68,4,-60,4,-53,4,-46,4,-39,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-34,4,-23,4,-18,4,1,5,5,5,14,5,21,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,115,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,120,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,126,5,-1,-1,-1,-1,-1,-1,-126,5,-63,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,6,4,6,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,14,0,27,91,53,109,0,27,91,49,109,0,27,91,63,49,48,52,57,104,27,91,50,50,59,48,59,48,116,0,27,91,50,109,0,27,91,52,104,0,27,91,56,109,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,15,0,27,91,48,109,15,0,27,91,63,49,48,52,57,108,27,91,50,51,59,48,59,48,116,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,63,53,104,36,60,49,48,48,47,62,27,91,63,53,108,0,27,91,109,27,91,63,55,104,27,91,52,108,27,62,27,55,27,91,114,27,91,63,49,59,51,59,52,59,54,108,27,56,0,27,91,76,0,127,0,27,91,51,126,0,27,79,66,0,27,79,80,0,27,91,50,49,126,0,27,79,81,0,27,79,82,0,27,79,83,0,27,91,49,53,126,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,79,72,0,27,91,50,126,0,27,79,68,0,27,91,54,126,0,27,91,53,126,0,27,79,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,79,65,0,27,91,63,49,108,27,62,0,27,91,63,49,104,27,61,0,27,69,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,37,112,49,37,99,27,91,37,112,50,37,123,49,125,37,45,37,100,98,0,27,99,0,27,55,27,91,114,27,56,27,91,109,27,91,63,55,104,27,91,33,112,27,91,63,49,59,51,59,52,59,54,108,27,91,52,108,27,62,27,91,63,49,48,48,48,108,27,91,63,50,53,104,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,52,37,116,59,53,37,59,37,63,37,112,53,37,116,59,50,37,59,37,63,37,112,55,37,116,59,56,37,59,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,109,37,63,37,112,57,37,116,14,37,101,15,37,59,0,27,72,0,9,0,27,91,69,0,96,96,97,97,102,102,103,103,105,105,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,91,90,0,27,91,63,55,104,0,27,91,63,55,108,0,27,40,66,27,41,48,0,27,79,70,0,27,79,77,0,27,91,49,126,0,27,91,51,59,50,126,0,27,91,52,126,0,27,91,49,59,50,70,0,27,91,49,59,50,72,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,49,59,50,80,0,27,91,49,59,50,81,0,27,91,49,59,50,82,0,27,91,49,59,50,83,0,27,91,49,53,59,50,126,0,27,91,49,55,59,50,126,0,27,91,49,56,59,50,126,0,27,91,49,57,59,50,126,0,27,91,50,48,59,50,126,0,27,91,50,49,59,50,126,0,27,91,50,51,59,50,126,0,27,91,50,52,59,50,126,0,27,91,49,59,53,80,0,27,91,49,59,53,81,0,27,91,49,59,53,82,0,27,91,49,59,53,83,0,27,91,49,53,59,53,126,0,27,91,49,55,59,53,126,0,27,91,49,56,59,53,126,0,27,91,49,57,59,53,126,0,27,91,50,48,59,53,126,0,27,91,50,49,59,53,126,0,27,91,50,51,59,53,126,0,27,91,50,52,59,53,126,0,27,91,49,59,54,80,0,27,91,49,59,54,81,0,27,91,49,59,54,82,0,27,91,49,59,54,83,0,27,91,49,53,59,54,126,0,27,91,49,55,59,54,126,0,27,91,49,56,59,54,126,0,27,91,49,57,59,54,126,0,27,91,50,48,59,54,126,0,27,91,50,49,59,54,126,0,27,91,50,51,59,54,126,0,27,91,50,52,59,54,126,0,27,91,49,59,51,80,0,27,91,49,59,51,81,0,27,91,49,59,51,82,0,27,91,49,59,51,83,0,27,91,49,53,59,51,126,0,27,91,49,55,59,51,126,0,27,91,49,56,59,51,126,0,27,91,49,57,59,51,126,0,27,91,50,48,59,51,126,0,27,91,50,49,59,51,126,0,27,91,50,51,59,51,126,0,27,91,50,52,59,51,126,0,27,91,49,59,52,80,0,27,91,49,59,52,81,0,27,91,49,59,52,82,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,37,91,59,48,49,50,51,52,53,54,55,56,57,93,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,93,49,48,52,7,0,27,93,52,59,37,112,49,37,100,59,114,103,98,58,37,112,50,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,51,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,52,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,27,92,0,27,91,51,109,0,27,91,50,51,109,0,27,91,60,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,27,108,0,27,109,0,0,2,0,0,0,69,0,-116,0,-52,3,1,1,0,0,9,0,18,0,25,0,37,0,55,0,62,0,69,0,75,0,81,0,87,0,98,0,108,0,-116,0,-109,0,-102,0,-95,0,-88,0,-81,0,-74,0,-67,0,-60,0,-53,0,-46,0,-39,0,-32,0,-25,0,-18,0,-11,0,-4,0,3,1,10,1,17,1,24,1,31,1,38,1,45,1,52,1,59,1,66,1,73,1,80,1,87,1,94,1,101,1,108,1,115,1,122,1,-127,1,-120,1,-113,1,-106,1,-99,1,-92,1,-85,1,-78,1,-71,1,-64,1,-57,1,-50,1,-43,1,-36,1,-29,1,-22,1,-15,1,-8,1,-2,1,59,2,64,2,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,32,0,35,0,40,0,46,0,49,0,52,0,57,0,62,0,67,0,72,0,77,0,81,0,86,0,91,0,96,0,101,0,106,0,112,0,118,0,124,0,-126,0,-120,0,-114,0,-108,0,-102,0,-96,0,-90,0,-85,0,-80,0,-75,0,-70,0,-65,0,-59,0,-53,0,-47,0,-41,0,-35,0,-29,0,-23,0,-17,0,-11,0,-5,0,1,1,7,1,13,1,19,1,25,1,31,1,37,1,43,1,49,1,55,1,59,1,64,1,69,1,74,1,79,1,84,1,89,1,95,1,100,1,27,91,63,50,48,48,52,108,0,27,91,63,50,48,48,52,104,0,27,93,49,49,50,7,0,27,93,49,50,59,37,112,49,37,115,7,0,27,93,53,50,59,37,112,49,37,115,59,37,112,50,37,115,7,0,27,91,50,48,49,126,0,27,91,50,48,48,126,0,27,91,53,53,109,0,27,91,49,32,113,0,27,91,53,51,109,0,27,91,52,58,37,112,49,37,100,109,0,27,91,37,112,49,37,100,32,113,0,27,91,63,49,48,48,54,59,49,48,48,48,37,63,37,112,49,37,123,49,125,37,61,37,116,104,37,101,108,37,59,0,27,91,51,59,51,126,0,27,91,51,59,52,126,0,27,91,51,59,53,126,0,27,91,51,59,54,126,0,27,91,51,59,55,126,0,27,91,49,59,50,66,0,27,91,49,59,51,66,0,27,91,49,59,52,66,0,27,91,49,59,53,66,0,27,91,49,59,54,66,0,27,91,49,59,55,66,0,27,91,49,59,51,70,0,27,91,49,59,52,70,0,27,91,49,59,53,70,0,27,91,49,59,54,70,0,27,91,49,59,55,70,0,27,91,49,59,51,72,0,27,91,49,59,52,72,0,27,91,49,59,53,72,0,27,91,49,59,54,72,0,27,91,49,59,55,72,0,27,91,50,59,51,126,0,27,91,50,59,52,126,0,27,91,50,59,53,126,0,27,91,50,59,54,126,0,27,91,50,59,55,126,0,27,91,49,59,51,68,0,27,91,49,59,52,68,0,27,91,49,59,53,68,0,27,91,49,59,54,68,0,27,91,49,59,55,68,0,27,91,54,59,51,126,0,27,91,54,59,52,126,0,27,91,54,59,53,126,0,27,91,54,59,54,126,0,27,91,54,59,55,126,0,27,91,53,59,51,126,0,27,91,53,59,52,126,0,27,91,53,59,53,126,0,27,91,53,59,54,126,0,27,91,53,59,55,126,0,27,91,49,59,51,67,0,27,91,49,59,52,67,0,27,91,49,59,53,67,0,27,91,49,59,54,67,0,27,91,49,59,55,67,0,27,91,49,59,50,65,0,27,91,49,59,51,65,0,27,91,49,59,52,65,0,27,91,49,59,53,65,0,27,91,49,59,54,65,0,27,91,49,59,55,65,0,27,91,50,57,109,0,27,91,53,56,58,50,58,58,37,112,49,37,123,54,53,53,51,54,125,37,47,37,100,58,37,112,49,37,123,50,53,54,125,37,47,37,123,50,53,53,125,37,38,37,100,58,37,112,49,37,123,50,53,53,125,37,38,37,100,109,0,27,91,57,109,0,27,91,60,37,105,37,112,51,37,100,59,37,112,49,37,100,59,37,112,50,37,100,59,37,63,37,112,52,37,116,77,37,101,109,37,59,0,65,88,0,88,84,0,66,68,0,66,69,0,67,114,0,67,115,0,77,115,0,80,69,0,80,83,0,82,109,111,108,0,83,101,0,83,109,111,108,0,83,109,117,108,120,0,83,115,0,88,77,0,107,68,67,51,0,107,68,67,52,0,107,68,67,53,0,107,68,67,54,0,107,68,67,55,0,107,68,78,0,107,68,78,51,0,107,68,78,52,0,107,68,78,53,0,107,68,78,54,0,107,68,78,55,0,107,69,78,68,51,0,107,69,78,68,52,0,107,69,78,68,53,0,107,69,78,68,54,0,107,69,78,68,55,0,107,72,79,77,51,0,107,72,79,77,52,0,107,72,79,77,53,0,107,72,79,77,54,0,107,72,79,77,55,0,107,73,67,51,0,107,73,67,52,0,107,73,67,53,0,107,73,67,54,0,107,73,67,55,0,107,76,70,84,51,0,107,76,70,84,52,0,107,76,70,84,53,0,107,76,70,84,54,0,107,76,70,84,55,0,107,78,88,84,51,0,107,78,88,84,52,0,107,78,88,84,53,0,107,78,88,84,54,0,107,78,88,84,55,0,107,80,82,86,51,0,107,80,82,86,52,0,107,80,82,86,53,0,107,80,82,86,54,0,107,80,82,86,55,0,107,82,73,84,51,0,107,82,73,84,52,0,107,82,73,84,53,0,107,82,73,84,54,0,107,82,73,84,55,0,107,85,80,0,107,85,80,51,0,107,85,80,52,0,107,85,80,53,0,107,85,80,54,0,107,85,80,55,0,114,109,120,120,0,115,101,116,97,108,0,115,109,120,120,0,120,109,0
+static const TerminfoEntry cygwin_terminfo = {
+ .bce = false,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 8,
+ .lines = -1,
+ .columns = -1,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = NULL,
+ [kTerm_clear_screen] = "\033[H\033[J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\033[B",
+ [kTerm_cursor_invisible] = NULL,
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = NULL,
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\0337\033[?47h",
+ [kTerm_enter_italics_mode] = NULL,
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = NULL,
+ [kTerm_exit_attribute_mode] = "\033[0;10m",
+ [kTerm_exit_ca_mode] = "\033[2J\033[?47l\0338",
+ [kTerm_from_status_line] = "\a",
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = NULL,
+ [kTerm_keypad_xmit] = NULL,
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[4%p1%dm",
+ [kTerm_set_a_foreground] = "\033[3%p1%dm",
+ [kTerm_set_attributes] = "\033[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = "\033];",
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = NULL,
+ [kTerm_enter_strikethrough_mode] = NULL,
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// vtpcon|ANSI emulation for console virtual terminal sequence with libuv,
-// auto_right_margin,
-// back_color_erase,
-// backspaces_with_bs,
-// has_meta_key,
-// has_status_line,
-// move_insert_mode,
-// move_standout_mode,
-// no_pad_char,
-// AX,
-// XF,
-// XT,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// acs_chars=jjkkllmmnnqqttuuvvwwxx,
-// back_tab=\E[Z,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs@,
-// clear_margins=\E[?69l,
-// clear_screen=\E[H\E[2J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\E[B,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[?12l\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// cursor_visible@,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// dis_status_line=\E]0;^G,
-// enter_alt_charset_mode=\E(0,
-// enter_am_mode@,
-// enter_blink_mode@,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[?1049h,
-// enter_dim_mode@,
-// enter_insert_mode@,
-// enter_italics_mode=\E[3m,
-// enter_reverse_mode=\E[7m,
-// enter_secure_mode@,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// erase_chars=\E[%p1%dX,
-// exit_alt_charset_mode=\E(B,
-// exit_am_mode@,
-// exit_attribute_mode=\E[0m,
-// exit_ca_mode=\E[?1049l,
-// exit_insert_mode@,
-// exit_italics_mode=\E[23m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen@,
-// from_status_line=^G,
-// init_2string=\E[\041p\E[?3l,
-// initialize_color=\E]4;%p1%d;rgb\072%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E,
-// insert_line=\E[L,
-// key_a1=\EOw,
-// key_a3=\EOy,
-// key_b2=\E[G,
-// key_backspace=^H,
-// key_beg=\EOE,
-// key_btab=\E[Z,
-// key_c1=\EOq,
-// key_c3=\EOs,
-// key_dc=\E[3~,
-// key_down=\E[B,
-// key_end=\E[4~,
-// key_enter=\EOM,
-// key_f1=\E[[A,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[25~,
-// key_f14=\E[26~,
-// key_f15=\E[28~,
-// key_f16=\E[29~,
-// key_f17=\E[31~,
-// key_f18=\E[32~,
-// key_f19=\E[33~,
-// key_f2=\E[[B,
-// key_f20=\E[34~,
-// key_f21=\E[23$,
-// key_f22=\E[24$,
-// key_f23=\E[11\136,
-// key_f24=\E[12\136,
-// key_f25=\E[13\136,
-// key_f26=\E[14\136,
-// key_f27=\E[15\136,
-// key_f28=\E[17\136,
-// key_f29=\E[18\136,
-// key_f3=\E[[C,
-// key_f30=\E[19\136,
-// key_f31=\E[20\136,
-// key_f32=\E[21\136,
-// key_f33=\E[23\136,
-// key_f34=\E[24\136,
-// key_f35=\E[25\136,
-// key_f36=\E[26\136,
-// key_f37=\E[28\136,
-// key_f38=\E[29\136,
-// key_f39=\E[31\136,
-// key_f4=\E[[D,
-// key_f40=\E[1;6S,
-// key_f41=\E[32\136,
-// key_f42=\E[33\136,
-// key_f43=\E[34\136,
-// key_f44=\E[23@,
-// key_f45=\E[24@,
-// key_f46@,
-// key_f47@,
-// key_f48@,
-// key_f49@,
-// key_f5=\E[[E,
-// key_f50@,
-// key_f51@,
-// key_f52@,
-// key_f53@,
-// key_f54@,
-// key_f55@,
-// key_f56@,
-// key_f57@,
-// key_f58@,
-// key_f59@,
-// key_f6=\E[17~,
-// key_f60@,
-// key_f61@,
-// key_f62@,
-// key_f63@,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\E[1~,
-// key_ic=\E[2~,
-// key_left=\E[D,
-// key_mouse@,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\E[C,
-// key_sdc=\E[3;2~,
-// key_send=\E[4;2~,
-// key_sf=\E[1;2B,
-// key_shome=\E[1;2~,
-// key_sic=\E[2;2~,
-// key_sleft=\E[1;2D,
-// key_snext=\E[6;2~,
-// key_sprevious=\E[5;2~,
-// key_sr=\E[1;2A,
-// key_sright=\E[1;2C,
-// key_up=\E[A,
-// keypad_local@,
-// keypad_xmit@,
-// memory_lock@,
-// memory_unlock@,
-// meta_off@,
-// meta_on@,
-// newline=\EE,
-// orig_colors@,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// print_screen@,
-// prtr_off@,
-// prtr_on@,
-// repeat_char=%p1%c\E[%p2%{1}%-%db,
-// reset_1string@,
-// reset_2string@,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
-// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
-// set_attributes=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p6%t;1%;m,
-// set_left_margin_parm@,
-// set_lr_margin@,
-// set_right_margin_parm@,
-// set_tab=\EH,
-// tab=^I,
-// to_status_line=\E]0;,
-// user6@,
-// user7@,
-// user8@,
-// user9@,
-// BD=\E[?2004l,
-// BE=\E[?2004h,
-// Cr@,
-// Cs@,
-// E3=\E[3J,
-// Ms@,
-// PE=\E[201~,
-// PS=\E[200~,
-// RV=\E[>c,
-// Se=\E[2 q,
-// Ss=\E[%p1%d q,
-// TS=\E]0;,
-// XM@,
-// XR=\E[>0q,
-// fd=\E[?1004l,
-// fe=\E[?1004h,
-// kDC3@,
-// kDC4@,
-// kDC5@,
-// kDC6@,
-// kDC7@,
-// kDN@,
-// kDN3@,
-// kDN4@,
-// kDN5@,
-// kDN6@,
-// kDN7@,
-// kEND3@,
-// kEND4@,
-// kEND5@,
-// kEND6@,
-// kEND7@,
-// kHOM3@,
-// kHOM4@,
-// kHOM5@,
-// kHOM6@,
-// kHOM7@,
-// kIC3@,
-// kIC4@,
-// kIC5@,
-// kIC6@,
-// kIC7@,
-// kLFT3@,
-// kLFT4@,
-// kLFT5@,
-// kLFT6@,
-// kLFT7@,
-// kNXT3@,
-// kNXT4@,
-// kNXT5@,
-// kNXT6@,
-// kNXT7@,
-// kPRV3@,
-// kPRV4@,
-// kPRV5@,
-// kPRV6@,
-// kPRV7@,
-// kRIT3@,
-// kRIT4@,
-// kRIT5@,
-// kRIT6@,
-// kRIT7@,
-// kUP=\E[1;2A,
-// kUP3@,
-// kUP4@,
-// kUP5@,
-// kUP6@,
-// kUP7@,
-// ka2=\EOx,
-// kb1=\EOt,
-// kb3=\EOv,
-// kc2=\EOr,
-// kp5=\EOE,
-// kpADD=\EOk,
-// kpCMA=\EOl,
-// kpDIV=\EOo,
-// kpDOT=\EOn,
-// kpMUL=\EOj,
-// kpSUB=\EOm,
-// kpZRO=\EOp,
-// kxIN=\E[I,
-// kxOUT=\E[O,
-// rmxx@,
-// rv=\E\[41;[1-6][0-9][0-9];0c,
-// smxx@,
-// xm@,
-// xr=\EP>\|XTerm\([1-9][0-9]+\)\E\\,
-static const int8_t vtpcon_terminfo[] = {
- 30,2,71,0,38,0,15,0,-99,1,64,4,118,116,112,99,111,110,124,65,78,83,73,32,101,109,117,108,97,116,105,111,110,32,102,111,114,32,99,111,110,115,111,108,101,32,118,105,114,116,117,97,108,32,116,101,114,109,105,110,97,108,32,115,101,113,117,101,110,99,101,32,119,105,116,104,32,108,105,98,117,118,0,0,1,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,0,0,4,0,6,0,8,0,-2,-1,25,0,33,0,37,0,41,0,-1,-1,52,0,69,0,73,0,77,0,84,0,-1,-1,86,0,99,0,-1,-1,103,0,-2,-1,107,0,111,0,115,0,-1,-1,121,0,-2,-1,125,0,-126,0,-1,-1,-2,-1,-2,-1,-2,-1,-1,-1,-117,0,-112,0,-107,0,-102,0,-93,0,-89,0,-84,0,-1,-1,-2,-1,-75,0,-69,0,-2,-1,-1,-1,-63,0,-1,-1,-61,0,-1,-1,-1,-1,-1,-1,-51,0,-1,-1,-47,0,-1,-1,-1,-1,-1,-1,-45,0,-1,-1,-40,0,-1,-1,-1,-1,-1,-1,-1,-1,-36,0,-31,0,-25,0,-20,0,-15,0,-10,0,-5,0,1,1,7,1,13,1,19,1,24,1,-1,-1,29,1,-1,-1,33,1,38,1,43,1,47,1,54,1,-1,-1,61,1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,65,1,-1,-1,68,1,77,1,86,1,95,1,104,1,113,1,122,1,-125,1,-116,1,-107,1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-98,1,-2,-1,-2,-1,-1,-1,-1,-1,-78,1,-75,1,-64,1,-61,1,-59,1,-56,1,-13,1,-1,-1,-10,1,-8,1,-1,-1,-1,-1,-1,-1,-3,1,1,2,5,2,9,2,13,2,-1,-1,-1,-1,17,2,-1,-1,40,2,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,44,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,2,53,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,57,2,-1,-1,-1,-1,64,2,-1,-1,-1,-1,-1,-1,-1,-1,71,2,78,2,85,2,-1,-1,-1,-1,92,2,-1,-1,99,2,-1,-1,-1,-1,-1,-1,106,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,113,2,119,2,125,2,-125,2,-119,2,-113,2,-107,2,-101,2,-95,2,-89,2,-83,2,-77,2,-71,2,-65,2,-59,2,-53,2,-47,2,-41,2,-35,2,-29,2,-23,2,-17,2,-11,2,-5,2,1,3,7,3,13,3,19,3,25,3,31,3,38,3,44,3,50,3,56,3,62,3,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,68,3,73,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,80,3,-2,-1,89,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-74,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-69,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-63,3,0,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,72,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,27,91,66,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,49,50,108,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,27,93,48,59,7,0,27,40,48,0,27,91,49,109,0,27,91,63,49,48,52,57,104,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,27,40,66,0,27,91,48,109,0,27,91,63,49,48,52,57,108,0,27,91,50,55,109,0,27,91,50,52,109,0,7,0,27,91,33,112,27,91,63,51,108,0,27,91,76,0,8,0,27,91,51,126,0,27,91,66,0,27,91,91,65,0,27,91,50,49,126,0,27,91,91,66,0,27,91,91,67,0,27,91,91,68,0,27,91,91,69,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,91,68,0,27,91,54,126,0,27,91,53,126,0,27,91,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,91,65,0,27,69,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,37,112,49,37,99,27,91,37,112,50,37,123,49,125,37,45,37,100,98,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,54,37,116,59,49,37,59,109,0,27,72,0,9,0,27,93,48,59,0,27,79,119,0,27,79,121,0,27,91,71,0,27,79,113,0,27,79,115,0,106,106,107,107,108,108,109,109,110,110,113,113,116,116,117,117,118,118,119,119,120,120,0,27,91,90,0,27,79,69,0,27,91,52,126,0,27,79,77,0,27,91,51,59,50,126,0,27,91,52,59,50,126,0,27,91,49,59,50,126,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,50,51,36,0,27,91,50,52,36,0,27,91,49,49,94,0,27,91,49,50,94,0,27,91,49,51,94,0,27,91,49,52,94,0,27,91,49,53,94,0,27,91,49,55,94,0,27,91,49,56,94,0,27,91,49,57,94,0,27,91,50,48,94,0,27,91,50,49,94,0,27,91,50,51,94,0,27,91,50,52,94,0,27,91,50,53,94,0,27,91,50,54,94,0,27,91,50,56,94,0,27,91,50,57,94,0,27,91,51,49,94,0,27,91,49,59,54,83,0,27,91,51,50,94,0,27,91,51,51,94,0,27,91,51,52,94,0,27,91,50,51,64,0,27,91,50,52,64,0,27,91,49,75,0,27,91,63,54,57,108,0,27,91,51,57,59,52,57,109,0,27,93,52,59,37,112,49,37,100,59,114,103,98,58,37,112,50,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,51,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,52,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,27,0,27,91,51,109,0,27,91,50,51,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,3,0,0,0,87,0,119,0,-127,2,1,1,1,0,0,0,9,0,-2,-1,-2,-1,18,0,-2,-1,23,0,30,0,37,0,42,0,48,0,58,0,-2,-1,63,0,69,0,78,0,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,87,0,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,94,0,98,0,102,0,106,0,110,0,114,0,118,0,122,0,126,0,-126,0,-122,0,-118,0,-114,0,-110,0,-2,-1,-106,0,-2,-1,-2,-1,-81,0,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,30,0,33,0,36,0,39,0,42,0,45,0,48,0,51,0,54,0,57,0,62,0,67,0,72,0,77,0,82,0,86,0,91,0,96,0,101,0,106,0,111,0,117,0,123,0,-127,0,-121,0,-115,0,-109,0,-103,0,-97,0,-91,0,-85,0,-80,0,-75,0,-70,0,-65,0,-60,0,-54,0,-48,0,-42,0,-36,0,-30,0,-24,0,-18,0,-12,0,-6,0,0,1,6,1,12,1,18,1,24,1,30,1,36,1,42,1,48,1,54,1,60,1,64,1,69,1,74,1,79,1,84,1,89,1,93,1,97,1,101,1,105,1,109,1,115,1,121,1,127,1,-123,1,-117,1,-111,1,-105,1,-100,1,-94,1,-89,1,-86,1,-81,1,-78,1,27,91,63,50,48,48,52,108,0,27,91,63,50,48,48,52,104,0,27,91,51,74,0,27,91,50,48,49,126,0,27,91,50,48,48,126,0,27,91,62,99,0,27,91,50,32,113,0,27,91,37,112,49,37,100,32,113,0,27,93,48,59,0,27,91,62,48,113,0,27,91,63,49,48,48,52,108,0,27,91,63,49,48,48,52,104,0,27,91,49,59,50,65,0,27,79,120,0,27,79,116,0,27,79,118,0,27,79,114,0,27,79,69,0,27,79,107,0,27,79,108,0,27,79,111,0,27,79,110,0,27,79,106,0,27,79,109,0,27,79,112,0,27,91,73,0,27,91,79,0,27,92,91,52,49,59,91,49,45,54,93,91,48,45,57,93,91,48,45,57,93,59,48,99,0,27,80,62,92,124,88,84,101,114,109,92,40,91,49,45,57,93,91,48,45,57,93,43,92,41,27,92,92,0,65,88,0,88,70,0,88,84,0,66,68,0,66,69,0,67,114,0,67,115,0,69,51,0,77,115,0,80,69,0,80,83,0,82,86,0,83,101,0,83,115,0,84,83,0,88,77,0,88,82,0,102,100,0,102,101,0,107,68,67,51,0,107,68,67,52,0,107,68,67,53,0,107,68,67,54,0,107,68,67,55,0,107,68,78,0,107,68,78,51,0,107,68,78,52,0,107,68,78,53,0,107,68,78,54,0,107,68,78,55,0,107,69,78,68,51,0,107,69,78,68,52,0,107,69,78,68,53,0,107,69,78,68,54,0,107,69,78,68,55,0,107,72,79,77,51,0,107,72,79,77,52,0,107,72,79,77,53,0,107,72,79,77,54,0,107,72,79,77,55,0,107,73,67,51,0,107,73,67,52,0,107,73,67,53,0,107,73,67,54,0,107,73,67,55,0,107,76,70,84,51,0,107,76,70,84,52,0,107,76,70,84,53,0,107,76,70,84,54,0,107,76,70,84,55,0,107,78,88,84,51,0,107,78,88,84,52,0,107,78,88,84,53,0,107,78,88,84,54,0,107,78,88,84,55,0,107,80,82,86,51,0,107,80,82,86,52,0,107,80,82,86,53,0,107,80,82,86,54,0,107,80,82,86,55,0,107,82,73,84,51,0,107,82,73,84,52,0,107,82,73,84,53,0,107,82,73,84,54,0,107,82,73,84,55,0,107,85,80,0,107,85,80,51,0,107,85,80,52,0,107,85,80,53,0,107,85,80,54,0,107,85,80,55,0,107,97,50,0,107,98,49,0,107,98,51,0,107,99,50,0,107,112,53,0,107,112,65,68,68,0,107,112,67,77,65,0,107,112,68,73,86,0,107,112,68,79,84,0,107,112,77,85,76,0,107,112,83,85,66,0,107,112,90,82,79,0,107,120,73,78,0,107,120,79,85,84,0,114,109,120,120,0,114,118,0,115,109,120,120,0,120,109,0,120,114,0
+static const TerminfoEntry win32con_terminfo = {
+ .bce = false,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 8,
+ .lines = -1,
+ .columns = -1,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = NULL,
+ [kTerm_clear_screen] = "\033[H\033[J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\033[B",
+ [kTerm_cursor_invisible] = NULL,
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = NULL,
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = NULL,
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\0337\033[?47h",
+ [kTerm_enter_italics_mode] = NULL,
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = NULL,
+ [kTerm_erase_chars] = NULL,
+ [kTerm_exit_attribute_mode] = "\033[0m",
+ [kTerm_exit_ca_mode] = "\033[2J\033[?47l\0338",
+ [kTerm_from_status_line] = NULL,
+ [kTerm_insert_line] = NULL,
+ [kTerm_keypad_local] = NULL,
+ [kTerm_keypad_xmit] = NULL,
+ [kTerm_parm_delete_line] = NULL,
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = NULL,
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[4%p1%dm",
+ [kTerm_set_a_foreground] = "\033[3%p1%dm",
+ [kTerm_set_attributes] = "\033[0%?%p1%t;7%;%?%p3%t;7%;%?%p6%t;1%;m",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = NULL,
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = "\033[%p1%d q",
+ [kTerm_enter_strikethrough_mode] = NULL,
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// win32con|ANSI emulation for libuv on legacy console,
-// auto_right_margin,
-// move_insert_mode,
-// move_standout_mode,
-// init_tabs#8,
-// max_colors#8,
-// max_pairs#64,
-// acs_chars@,
-// bell=^G,
-// carriage_return=\r,
-// clear_screen=\E[H\E[J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\E[B,
-// cursor_home=\E[H,
-// cursor_left=^H,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// delete_character@,
-// delete_line@,
-// enter_alt_charset_mode@,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E7\E[?47h,
-// enter_insert_mode@,
-// enter_pc_charset_mode@,
-// enter_reverse_mode=\E[7m,
-// enter_secure_mode@,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode@,
-// exit_alt_charset_mode@,
-// exit_attribute_mode=\E[0m,
-// exit_ca_mode=\E[2J\E[?47l\E8,
-// exit_insert_mode@,
-// exit_pc_charset_mode=\E[10m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode@,
-// from_status_line@,
-// insert_character@,
-// insert_line@,
-// key_b2=\E[G,
-// key_backspace=^H,
-// key_dc=\E[3~,
-// key_down=\E[B,
-// key_end=\E[4~,
-// key_f1=\E[[A,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[25~,
-// key_f14=\E[26~,
-// key_f15=\E[28~,
-// key_f16=\E[29~,
-// key_f17=\E[31~,
-// key_f18=\E[32~,
-// key_f19=\E[33~,
-// key_f2=\E[[B,
-// key_f20=\E[34~,
-// key_f21=\E[23$,
-// key_f22=\E[24$,
-// key_f23=\E[11\136,
-// key_f24=\E[12\136,
-// key_f25=\E[13\136,
-// key_f26=\E[14\136,
-// key_f27=\E[15\136,
-// key_f28=\E[17\136,
-// key_f29=\E[18\136,
-// key_f3=\E[[C,
-// key_f30=\E[19\136,
-// key_f31=\E[20\136,
-// key_f32=\E[21\136,
-// key_f33=\E[23\136,
-// key_f34=\E[24\136,
-// key_f35=\E[25\136,
-// key_f36=\E[26\136,
-// key_f37=\E[28\136,
-// key_f38=\E[29\136,
-// key_f39=\E[31\136,
-// key_f4=\E[[D,
-// key_f41=\E[32\136,
-// key_f42=\E[33\136,
-// key_f43=\E[34\136,
-// key_f44=\E[23@,
-// key_f45=\E[24@,
-// key_f5=\E[[E,
-// key_f6=\E[17~,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\E[1~,
-// key_ic=\E[2~,
-// key_left=\E[D,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\E[C,
-// key_sdc=\E[3;2~,
-// key_send=\E[4;2~,
-// key_shome=\E[1;2~,
-// key_sic=\E[2;2~,
-// key_sleft=\E[1;2D,
-// key_snext=\E[6;2~,
-// key_sprevious=\E[5;2~,
-// key_sright=\E[1;2C,
-// key_suspend=^Z,
-// key_up=\E[A,
-// newline=\r\n,
-// orig_pair=\E[39;49m,
-// parm_dch@,
-// parm_delete_line@,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich@,
-// parm_insert_line@,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_up_cursor=\E[%p1%dA,
-// reset_1string@,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward@,
-// scroll_reverse@,
-// set_a_background=\E[4%p1%dm,
-// set_a_foreground=\E[3%p1%dm,
-// set_attributes=\E[0%?%p1%t;7%;%?%p3%t;7%;%?%p6%t;1%;m,
-// tab=^I,
-// to_status_line@,
-// user6@,
-// user7@,
-// user8@,
-// user9@,
-// Se=\E[0 q,
-// Ss=\E[%p1%d q,
-static const int8_t win32con_terminfo[] = {
- 26,1,52,0,15,0,15,0,125,1,106,2,119,105,110,51,50,99,111,110,124,65,78,83,73,32,101,109,117,108,97,116,105,111,110,32,102,111,114,32,108,105,98,117,118,32,111,110,32,108,101,103,97,99,121,32,99,111,110,115,111,108,101,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,-1,-1,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,64,0,-1,-1,0,0,2,0,-1,-1,-1,-1,4,0,11,0,15,0,19,0,-1,-1,30,0,47,0,51,0,-1,-1,55,0,-1,-1,-1,-1,57,0,-1,-1,61,0,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,-2,-1,-1,-1,65,0,70,0,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,79,0,84,0,-2,-1,-1,-1,-2,-1,89,0,94,0,-1,-1,-2,-1,107,0,-2,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,113,0,-1,-1,-1,-1,-1,-1,115,0,-1,-1,120,0,-1,-1,-1,-1,-1,-1,-1,-1,124,0,-127,0,-121,0,-116,0,-111,0,-106,0,-101,0,-95,0,-89,0,-83,0,-77,0,-72,0,-1,-1,-67,0,-1,-1,-63,0,-58,0,-53,0,-1,-1,-1,-1,-1,-1,-49,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-45,0,-1,-1,-2,-1,-2,-1,-42,0,-2,-1,-1,-1,-2,-1,-33,0,-24,0,-1,-1,-15,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-6,0,-3,0,8,1,-2,-1,-2,-1,11,1,-1,-1,-1,-1,49,1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,51,1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,55,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,60,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,1,-1,-1,-1,-1,69,1,-1,-1,-1,-1,-1,-1,-1,-1,76,1,83,1,90,1,-1,-1,-1,-1,97,1,-1,-1,104,1,-1,-1,-1,-1,-1,-1,111,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,118,1,124,1,-126,1,-120,1,-114,1,-108,1,-102,1,-96,1,-90,1,-84,1,-78,1,-72,1,-66,1,-60,1,-54,1,-48,1,-42,1,-36,1,-30,1,-24,1,-18,1,-12,1,-6,1,0,2,6,2,12,2,18,2,24,2,30,2,-1,-1,36,2,42,2,48,2,54,2,60,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,66,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,71,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,2,90,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,100,2,7,0,13,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,27,91,66,0,27,91,72,0,8,0,27,91,67,0,27,91,65,0,27,91,49,109,0,27,55,27,91,63,52,55,104,0,27,91,55,109,0,27,91,55,109,0,27,91,48,109,0,27,91,50,74,27,91,63,52,55,108,27,56,0,27,91,50,55,109,0,8,0,27,91,51,126,0,27,91,66,0,27,91,91,65,0,27,91,50,49,126,0,27,91,91,66,0,27,91,91,67,0,27,91,91,68,0,27,91,91,69,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,91,68,0,27,91,54,126,0,27,91,53,126,0,27,91,67,0,27,91,65,0,13,10,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,65,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,27,91,48,37,63,37,112,49,37,116,59,55,37,59,37,63,37,112,51,37,116,59,55,37,59,37,63,37,112,54,37,116,59,49,37,59,109,0,9,0,27,91,71,0,27,91,52,126,0,26,0,27,91,51,59,50,126,0,27,91,52,59,50,126,0,27,91,49,59,50,126,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,50,51,36,0,27,91,50,52,36,0,27,91,49,49,94,0,27,91,49,50,94,0,27,91,49,51,94,0,27,91,49,52,94,0,27,91,49,53,94,0,27,91,49,55,94,0,27,91,49,56,94,0,27,91,49,57,94,0,27,91,50,48,94,0,27,91,50,49,94,0,27,91,50,51,94,0,27,91,50,52,94,0,27,91,50,53,94,0,27,91,50,54,94,0,27,91,50,56,94,0,27,91,50,57,94,0,27,91,51,49,94,0,27,91,51,50,94,0,27,91,51,51,94,0,27,91,51,52,94,0,27,91,50,51,64,0,27,91,50,52,64,0,27,91,49,75,0,27,91,51,57,59,52,57,109,0,27,91,51,37,112,49,37,100,109,0,27,91,52,37,112,49,37,100,109,0,27,91,49,48,109,0,0,0,0,0,2,0,4,0,22,0,0,0,6,0,0,0,3,0,27,91,48,32,113,0,27,91,37,112,49,37,100,32,113,0,83,101,0,83,115,0
+static const TerminfoEntry conemu_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[2J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\033[B",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[?25h",
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[?1049h",
+ [kTerm_enter_italics_mode] = "\033[3m",
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = "\033[%p1%dX",
+ [kTerm_exit_attribute_mode] = "\033[0m",
+ [kTerm_exit_ca_mode] = "\033[?1049l",
+ [kTerm_from_status_line] = NULL,
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = NULL,
+ [kTerm_keypad_xmit] = NULL,
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[48;5;%p1%dm",
+ [kTerm_set_a_foreground] = "\033[38;5;%p1%dm",
+ [kTerm_set_attributes] = "\033[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p6%t;1%;m",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = NULL,
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = "\033[%p1%d q",
+ [kTerm_enter_strikethrough_mode] = NULL,
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
-// xterm-256color|xterm with 256 colors,
-// auto_right_margin,
-// back_color_erase,
-// backspaces_with_bs,
-// can_change,
-// eat_newline_glitch,
-// has_meta_key,
-// move_insert_mode,
-// move_standout_mode,
-// no_pad_char,
-// prtr_silent,
-// AX,
-// XF,
-// XT,
-// columns#80,
-// init_tabs#8,
-// lines#24,
-// max_colors#0x100,
-// max_pairs#0x10000,
-// acs_chars=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-// back_tab=\E[Z,
-// bell=^G,
-// carriage_return=\r,
-// change_scroll_region=\E[%i%p1%d;%p2%dr,
-// clear_all_tabs=\E[3g,
-// clear_margins=\E[?69l,
-// clear_screen=\E[H\E[2J,
-// clr_bol=\E[1K,
-// clr_eol=\E[K,
-// clr_eos=\E[J,
-// column_address=\E[%i%p1%dG,
-// cursor_address=\E[%i%p1%d;%p2%dH,
-// cursor_down=\n,
-// cursor_home=\E[H,
-// cursor_invisible=\E[?25l,
-// cursor_left=^H,
-// cursor_normal=\E[?12l\E[?25h,
-// cursor_right=\E[C,
-// cursor_up=\E[A,
-// cursor_visible=\E[?12;25h,
-// delete_character=\E[P,
-// delete_line=\E[M,
-// enter_alt_charset_mode=\E(0,
-// enter_am_mode=\E[?7h,
-// enter_blink_mode=\E[5m,
-// enter_bold_mode=\E[1m,
-// enter_ca_mode=\E[?1049h\E[22;0;0t,
-// enter_dim_mode=\E[2m,
-// enter_insert_mode=\E[4h,
-// enter_italics_mode=\E[3m,
-// enter_reverse_mode=\E[7m,
-// enter_secure_mode=\E[8m,
-// enter_standout_mode=\E[7m,
-// enter_underline_mode=\E[4m,
-// erase_chars=\E[%p1%dX,
-// exit_alt_charset_mode=\E(B,
-// exit_am_mode=\E[?7l,
-// exit_attribute_mode=\E(B\E[m,
-// exit_ca_mode=\E[?1049l\E[23;0;0t,
-// exit_insert_mode=\E[4l,
-// exit_italics_mode=\E[23m,
-// exit_standout_mode=\E[27m,
-// exit_underline_mode=\E[24m,
-// flash_screen=\E[?5h$<100/>\E[?5l,
-// init_2string=\E[\041p\E[?3;4l\E[4l\E>,
-// initialize_color=\E]4;%p1%d;rgb\072%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\,
-// insert_line=\E[L,
-// key_a1=\EOw,
-// key_a3=\EOy,
-// key_b2=\EOu,
-// key_backspace=^H,
-// key_beg=\EOE,
-// key_btab=\E[Z,
-// key_c1=\EOq,
-// key_c3=\EOs,
-// key_dc=\E[3~,
-// key_down=\EOB,
-// key_end=\EOF,
-// key_enter=\EOM,
-// key_f1=\EOP,
-// key_f10=\E[21~,
-// key_f11=\E[23~,
-// key_f12=\E[24~,
-// key_f13=\E[1;2P,
-// key_f14=\E[1;2Q,
-// key_f15=\E[1;2R,
-// key_f16=\E[1;2S,
-// key_f17=\E[15;2~,
-// key_f18=\E[17;2~,
-// key_f19=\E[18;2~,
-// key_f2=\EOQ,
-// key_f20=\E[19;2~,
-// key_f21=\E[20;2~,
-// key_f22=\E[21;2~,
-// key_f23=\E[23;2~,
-// key_f24=\E[24;2~,
-// key_f25=\E[1;5P,
-// key_f26=\E[1;5Q,
-// key_f27=\E[1;5R,
-// key_f28=\E[1;5S,
-// key_f29=\E[15;5~,
-// key_f3=\EOR,
-// key_f30=\E[17;5~,
-// key_f31=\E[18;5~,
-// key_f32=\E[19;5~,
-// key_f33=\E[20;5~,
-// key_f34=\E[21;5~,
-// key_f35=\E[23;5~,
-// key_f36=\E[24;5~,
-// key_f37=\E[1;6P,
-// key_f38=\E[1;6Q,
-// key_f39=\E[1;6R,
-// key_f4=\EOS,
-// key_f40=\E[1;6S,
-// key_f41=\E[15;6~,
-// key_f42=\E[17;6~,
-// key_f43=\E[18;6~,
-// key_f44=\E[19;6~,
-// key_f45=\E[20;6~,
-// key_f46=\E[21;6~,
-// key_f47=\E[23;6~,
-// key_f48=\E[24;6~,
-// key_f49=\E[1;3P,
-// key_f5=\E[15~,
-// key_f50=\E[1;3Q,
-// key_f51=\E[1;3R,
-// key_f52=\E[1;3S,
-// key_f53=\E[15;3~,
-// key_f54=\E[17;3~,
-// key_f55=\E[18;3~,
-// key_f56=\E[19;3~,
-// key_f57=\E[20;3~,
-// key_f58=\E[21;3~,
-// key_f59=\E[23;3~,
-// key_f6=\E[17~,
-// key_f60=\E[24;3~,
-// key_f61=\E[1;4P,
-// key_f62=\E[1;4Q,
-// key_f63=\E[1;4R,
-// key_f7=\E[18~,
-// key_f8=\E[19~,
-// key_f9=\E[20~,
-// key_home=\EOH,
-// key_ic=\E[2~,
-// key_left=\EOD,
-// key_mouse=\E[<,
-// key_npage=\E[6~,
-// key_ppage=\E[5~,
-// key_right=\EOC,
-// key_sdc=\E[3;2~,
-// key_send=\E[1;2F,
-// key_sf=\E[1;2B,
-// key_shome=\E[1;2H,
-// key_sic=\E[2;2~,
-// key_sleft=\E[1;2D,
-// key_snext=\E[6;2~,
-// key_sprevious=\E[5;2~,
-// key_sr=\E[1;2A,
-// key_sright=\E[1;2C,
-// key_up=\EOA,
-// keypad_local=\E[?1l\E>,
-// keypad_xmit=\E[?1h\E=,
-// memory_lock=\El,
-// memory_unlock=\Em,
-// meta_off=\E[?1034l,
-// meta_on=\E[?1034h,
-// newline=\EE,
-// orig_colors=\E]104^G,
-// orig_pair=\E[39;49m,
-// parm_dch=\E[%p1%dP,
-// parm_delete_line=\E[%p1%dM,
-// parm_down_cursor=\E[%p1%dB,
-// parm_ich=\E[%p1%d@,
-// parm_index=\E[%p1%dS,
-// parm_insert_line=\E[%p1%dL,
-// parm_left_cursor=\E[%p1%dD,
-// parm_right_cursor=\E[%p1%dC,
-// parm_rindex=\E[%p1%dT,
-// parm_up_cursor=\E[%p1%dA,
-// print_screen=\E[i,
-// prtr_off=\E[4i,
-// prtr_on=\E[5i,
-// repeat_char=%p1%c\E[%p2%{1}%-%db,
-// reset_1string=\Ec\E]104^G,
-// reset_2string=\E[\041p\E[?3;4l\E[4l\E>,
-// restore_cursor=\E8,
-// row_address=\E[%i%p1%dd,
-// save_cursor=\E7,
-// scroll_forward=\n,
-// scroll_reverse=\EM,
-// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
-// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
-// set_attributes=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
-// set_left_margin_parm=\E[?69h\E[%i%p1%ds,
-// set_lr_margin=\E[?69h\E[%i%p1%d;%p2%ds,
-// set_right_margin_parm=\E[?69h\E[%i;%p1%ds,
-// set_tab=\EH,
-// tab=^I,
-// user6=\E[%i%d;%dR,
-// user7=\E[6n,
-// user8=\E[?%[;0123456789]c,
-// user9=\E[c,
-// BD=\E[?2004l,
-// BE=\E[?2004h,
-// Cr=\E]112^G,
-// Cs=\E]12;%p1%s^G,
-// E3=\E[3J,
-// Ms=\E]52;%p1%s;%p2%s^G,
-// PE=\E[201~,
-// PS=\E[200~,
-// RV=\E[>c,
-// Se=\E[2 q,
-// Ss=\E[%p1%d q,
-// XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
-// XR=\E[>0q,
-// fd=\E[?1004l,
-// fe=\E[?1004h,
-// kDC3=\E[3;3~,
-// kDC4=\E[3;4~,
-// kDC5=\E[3;5~,
-// kDC6=\E[3;6~,
-// kDC7=\E[3;7~,
-// kDN=\E[1;2B,
-// kDN3=\E[1;3B,
-// kDN4=\E[1;4B,
-// kDN5=\E[1;5B,
-// kDN6=\E[1;6B,
-// kDN7=\E[1;7B,
-// kEND3=\E[1;3F,
-// kEND4=\E[1;4F,
-// kEND5=\E[1;5F,
-// kEND6=\E[1;6F,
-// kEND7=\E[1;7F,
-// kHOM3=\E[1;3H,
-// kHOM4=\E[1;4H,
-// kHOM5=\E[1;5H,
-// kHOM6=\E[1;6H,
-// kHOM7=\E[1;7H,
-// kIC3=\E[2;3~,
-// kIC4=\E[2;4~,
-// kIC5=\E[2;5~,
-// kIC6=\E[2;6~,
-// kIC7=\E[2;7~,
-// kLFT3=\E[1;3D,
-// kLFT4=\E[1;4D,
-// kLFT5=\E[1;5D,
-// kLFT6=\E[1;6D,
-// kLFT7=\E[1;7D,
-// kNXT3=\E[6;3~,
-// kNXT4=\E[6;4~,
-// kNXT5=\E[6;5~,
-// kNXT6=\E[6;6~,
-// kNXT7=\E[6;7~,
-// kPRV3=\E[5;3~,
-// kPRV4=\E[5;4~,
-// kPRV5=\E[5;5~,
-// kPRV6=\E[5;6~,
-// kPRV7=\E[5;7~,
-// kRIT3=\E[1;3C,
-// kRIT4=\E[1;4C,
-// kRIT5=\E[1;5C,
-// kRIT6=\E[1;6C,
-// kRIT7=\E[1;7C,
-// kUP=\E[1;2A,
-// kUP3=\E[1;3A,
-// kUP4=\E[1;4A,
-// kUP5=\E[1;5A,
-// kUP6=\E[1;6A,
-// kUP7=\E[1;7A,
-// ka2=\EOx,
-// kb1=\EOt,
-// kb3=\EOv,
-// kc2=\EOr,
-// kp5=\EOE,
-// kpADD=\EOk,
-// kpCMA=\EOl,
-// kpDIV=\EOo,
-// kpDOT=\EOn,
-// kpMUL=\EOj,
-// kpSUB=\EOm,
-// kpZRO=\EOp,
-// kxIN=\E[I,
-// kxOUT=\E[O,
-// rmxx=\E[29m,
-// rv=\E\[41;[1-6][0-9][0-9];0c,
-// smxx=\E[9m,
-// xm=\E[<%i%p3%d;%p1%d;%p2%d;%?%p4%tM%em%;,
-// xr=\EP>\|XTerm\([1-9][0-9]+\)\E\\,
-static const int8_t xterm_256colour_terminfo[] = {
- 30,2,37,0,38,0,15,0,-99,1,90,6,120,116,101,114,109,45,50,53,54,99,111,108,111,114,124,120,116,101,114,109,32,119,105,116,104,32,50,53,54,32,99,111,108,111,114,115,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,0,0,4,0,6,0,8,0,25,0,30,0,38,0,42,0,46,0,-1,-1,57,0,74,0,76,0,80,0,87,0,-1,-1,89,0,102,0,-1,-1,106,0,110,0,120,0,124,0,-1,-1,-1,-1,-128,0,-124,0,-119,0,-114,0,-1,-1,-96,0,-91,0,-86,0,-1,-1,-81,0,-76,0,-71,0,-66,0,-57,0,-53,0,-46,0,-1,-1,-28,0,-23,0,-17,0,-11,0,-1,-1,-1,-1,-1,-1,7,1,-1,-1,-1,-1,-1,-1,25,1,-1,-1,29,1,-1,-1,-1,-1,-1,-1,31,1,-1,-1,36,1,-1,-1,-1,-1,-1,-1,-1,-1,40,1,44,1,50,1,54,1,58,1,62,1,68,1,74,1,80,1,86,1,92,1,96,1,-1,-1,101,1,-1,-1,105,1,110,1,115,1,119,1,126,1,-1,-1,-123,1,-119,1,-111,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-103,1,-94,1,-85,1,-1,-1,-82,1,-73,1,-64,1,-55,1,-46,1,-37,1,-28,1,-19,1,-10,1,-1,1,-1,-1,-1,-1,-1,-1,8,2,12,2,17,2,22,2,42,2,51,2,-1,-1,-1,-1,69,2,72,2,83,2,86,2,88,2,91,2,-72,2,-1,-1,-69,2,-1,-1,-1,-1,-1,-1,-1,-1,-67,2,-63,2,-59,2,-55,2,-51,2,-1,-1,-1,-1,-47,2,-1,-1,6,3,-1,-1,-1,-1,10,3,16,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,22,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,26,3,30,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,34,3,-1,-1,-1,-1,41,3,-1,-1,-1,-1,-1,-1,-1,-1,48,3,55,3,62,3,-1,-1,-1,-1,69,3,-1,-1,76,3,-1,-1,-1,-1,-1,-1,83,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,90,3,96,3,102,3,109,3,116,3,123,3,-126,3,-118,3,-110,3,-102,3,-94,3,-86,3,-78,3,-70,3,-62,3,-55,3,-48,3,-41,3,-34,3,-26,3,-18,3,-10,3,-2,3,6,4,14,4,22,4,30,4,37,4,44,4,51,4,58,4,66,4,74,4,82,4,90,4,98,4,106,4,114,4,122,4,-127,4,-120,4,-113,4,-106,4,-98,4,-90,4,-82,4,-74,4,-66,4,-58,4,-50,4,-42,4,-35,4,-28,4,-21,4,-16,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-9,4,2,5,7,5,26,5,30,5,39,5,46,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-116,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-111,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-105,5,-88,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-70,5,-1,-1,-1,-1,-1,-1,-66,5,-3,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,61,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,84,6,87,6,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,49,50,108,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,63,49,50,59,50,53,104,0,27,91,80,0,27,91,77,0,27,40,48,0,27,91,53,109,0,27,91,49,109,0,27,91,63,49,48,52,57,104,27,91,50,50,59,48,59,48,116,0,27,91,50,109,0,27,91,52,104,0,27,91,56,109,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,27,40,66,0,27,40,66,27,91,109,0,27,91,63,49,48,52,57,108,27,91,50,51,59,48,59,48,116,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,63,53,104,36,60,49,48,48,47,62,27,91,63,53,108,0,27,91,33,112,27,91,63,51,59,52,108,27,91,52,108,27,62,0,27,91,76,0,8,0,27,91,51,126,0,27,79,66,0,27,79,80,0,27,91,50,49,126,0,27,79,81,0,27,79,82,0,27,79,83,0,27,91,49,53,126,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,79,72,0,27,91,50,126,0,27,79,68,0,27,91,54,126,0,27,91,53,126,0,27,79,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,79,65,0,27,91,63,49,108,27,62,0,27,91,63,49,104,27,61,0,27,91,63,49,48,51,52,108,0,27,91,63,49,48,51,52,104,0,27,69,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,27,91,105,0,27,91,52,105,0,27,91,53,105,0,37,112,49,37,99,27,91,37,112,50,37,123,49,125,37,45,37,100,98,0,27,99,27,93,49,48,52,7,0,27,91,33,112,27,91,63,51,59,52,108,27,91,52,108,27,62,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,37,63,37,112,57,37,116,27,40,48,37,101,27,40,66,37,59,27,91,48,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,53,37,116,59,50,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,37,63,37,112,55,37,116,59,56,37,59,109,0,27,72,0,9,0,27,79,119,0,27,79,121,0,27,79,117,0,27,79,113,0,27,79,115,0,96,96,97,97,102,102,103,103,105,105,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,91,90,0,27,91,63,55,104,0,27,91,63,55,108,0,27,79,69,0,27,79,70,0,27,79,77,0,27,91,51,59,50,126,0,27,91,49,59,50,70,0,27,91,49,59,50,72,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,49,59,50,80,0,27,91,49,59,50,81,0,27,91,49,59,50,82,0,27,91,49,59,50,83,0,27,91,49,53,59,50,126,0,27,91,49,55,59,50,126,0,27,91,49,56,59,50,126,0,27,91,49,57,59,50,126,0,27,91,50,48,59,50,126,0,27,91,50,49,59,50,126,0,27,91,50,51,59,50,126,0,27,91,50,52,59,50,126,0,27,91,49,59,53,80,0,27,91,49,59,53,81,0,27,91,49,59,53,82,0,27,91,49,59,53,83,0,27,91,49,53,59,53,126,0,27,91,49,55,59,53,126,0,27,91,49,56,59,53,126,0,27,91,49,57,59,53,126,0,27,91,50,48,59,53,126,0,27,91,50,49,59,53,126,0,27,91,50,51,59,53,126,0,27,91,50,52,59,53,126,0,27,91,49,59,54,80,0,27,91,49,59,54,81,0,27,91,49,59,54,82,0,27,91,49,59,54,83,0,27,91,49,53,59,54,126,0,27,91,49,55,59,54,126,0,27,91,49,56,59,54,126,0,27,91,49,57,59,54,126,0,27,91,50,48,59,54,126,0,27,91,50,49,59,54,126,0,27,91,50,51,59,54,126,0,27,91,50,52,59,54,126,0,27,91,49,59,51,80,0,27,91,49,59,51,81,0,27,91,49,59,51,82,0,27,91,49,59,51,83,0,27,91,49,53,59,51,126,0,27,91,49,55,59,51,126,0,27,91,49,56,59,51,126,0,27,91,49,57,59,51,126,0,27,91,50,48,59,51,126,0,27,91,50,49,59,51,126,0,27,91,50,51,59,51,126,0,27,91,50,52,59,51,126,0,27,91,49,59,52,80,0,27,91,49,59,52,81,0,27,91,49,59,52,82,0,27,91,49,75,0,27,91,63,54,57,108,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,37,91,59,48,49,50,51,52,53,54,55,56,57,93,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,93,49,48,52,7,0,27,93,52,59,37,112,49,37,100,59,114,103,98,58,37,112,50,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,51,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,52,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,27,92,0,27,91,51,109,0,27,91,50,51,109,0,27,91,63,54,57,104,27,91,37,105,37,112,49,37,100,115,0,27,91,63,54,57,104,27,91,37,105,59,37,112,49,37,100,115,0,27,91,60,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,63,54,57,104,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,115,0,27,108,0,27,109,0,3,0,0,0,86,0,-81,0,83,4,1,1,1,0,0,0,9,0,18,0,25,0,37,0,42,0,60,0,67,0,74,0,79,0,85,0,95,0,127,0,-123,0,-114,0,-105,0,-98,0,-91,0,-84,0,-77,0,-70,0,-63,0,-56,0,-49,0,-42,0,-35,0,-28,0,-21,0,-14,0,-7,0,0,1,7,1,14,1,21,1,28,1,35,1,42,1,49,1,56,1,63,1,70,1,77,1,84,1,91,1,98,1,105,1,112,1,119,1,126,1,-123,1,-116,1,-109,1,-102,1,-95,1,-88,1,-81,1,-74,1,-67,1,-60,1,-53,1,-46,1,-39,1,-32,1,-25,1,-18,1,-11,1,-4,1,3,2,7,2,11,2,15,2,19,2,23,2,27,2,31,2,35,2,39,2,43,2,47,2,51,2,55,2,59,2,65,2,90,2,95,2,-124,2,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,30,0,33,0,36,0,39,0,42,0,45,0,48,0,51,0,54,0,59,0,64,0,69,0,74,0,79,0,83,0,88,0,93,0,98,0,103,0,108,0,114,0,120,0,126,0,-124,0,-118,0,-112,0,-106,0,-100,0,-94,0,-88,0,-83,0,-78,0,-73,0,-68,0,-63,0,-57,0,-51,0,-45,0,-39,0,-33,0,-27,0,-21,0,-15,0,-9,0,-3,0,3,1,9,1,15,1,21,1,27,1,33,1,39,1,45,1,51,1,57,1,61,1,66,1,71,1,76,1,81,1,86,1,90,1,94,1,98,1,102,1,106,1,112,1,118,1,124,1,-126,1,-120,1,-114,1,-108,1,-103,1,-97,1,-92,1,-89,1,-84,1,-81,1,27,91,63,50,48,48,52,108,0,27,91,63,50,48,48,52,104,0,27,93,49,49,50,7,0,27,93,49,50,59,37,112,49,37,115,7,0,27,91,51,74,0,27,93,53,50,59,37,112,49,37,115,59,37,112,50,37,115,7,0,27,91,50,48,49,126,0,27,91,50,48,48,126,0,27,91,62,99,0,27,91,50,32,113,0,27,91,37,112,49,37,100,32,113,0,27,91,63,49,48,48,54,59,49,48,48,48,37,63,37,112,49,37,123,49,125,37,61,37,116,104,37,101,108,37,59,0,27,91,62,48,113,0,27,91,63,49,48,48,52,108,0,27,91,63,49,48,48,52,104,0,27,91,51,59,51,126,0,27,91,51,59,52,126,0,27,91,51,59,53,126,0,27,91,51,59,54,126,0,27,91,51,59,55,126,0,27,91,49,59,50,66,0,27,91,49,59,51,66,0,27,91,49,59,52,66,0,27,91,49,59,53,66,0,27,91,49,59,54,66,0,27,91,49,59,55,66,0,27,91,49,59,51,70,0,27,91,49,59,52,70,0,27,91,49,59,53,70,0,27,91,49,59,54,70,0,27,91,49,59,55,70,0,27,91,49,59,51,72,0,27,91,49,59,52,72,0,27,91,49,59,53,72,0,27,91,49,59,54,72,0,27,91,49,59,55,72,0,27,91,50,59,51,126,0,27,91,50,59,52,126,0,27,91,50,59,53,126,0,27,91,50,59,54,126,0,27,91,50,59,55,126,0,27,91,49,59,51,68,0,27,91,49,59,52,68,0,27,91,49,59,53,68,0,27,91,49,59,54,68,0,27,91,49,59,55,68,0,27,91,54,59,51,126,0,27,91,54,59,52,126,0,27,91,54,59,53,126,0,27,91,54,59,54,126,0,27,91,54,59,55,126,0,27,91,53,59,51,126,0,27,91,53,59,52,126,0,27,91,53,59,53,126,0,27,91,53,59,54,126,0,27,91,53,59,55,126,0,27,91,49,59,51,67,0,27,91,49,59,52,67,0,27,91,49,59,53,67,0,27,91,49,59,54,67,0,27,91,49,59,55,67,0,27,91,49,59,50,65,0,27,91,49,59,51,65,0,27,91,49,59,52,65,0,27,91,49,59,53,65,0,27,91,49,59,54,65,0,27,91,49,59,55,65,0,27,79,120,0,27,79,116,0,27,79,118,0,27,79,114,0,27,79,69,0,27,79,107,0,27,79,108,0,27,79,111,0,27,79,110,0,27,79,106,0,27,79,109,0,27,79,112,0,27,91,73,0,27,91,79,0,27,91,50,57,109,0,27,92,91,52,49,59,91,49,45,54,93,91,48,45,57,93,91,48,45,57,93,59,48,99,0,27,91,57,109,0,27,91,60,37,105,37,112,51,37,100,59,37,112,49,37,100,59,37,112,50,37,100,59,37,63,37,112,52,37,116,77,37,101,109,37,59,0,27,80,62,92,124,88,84,101,114,109,92,40,91,49,45,57,93,91,48,45,57,93,43,92,41,27,92,92,0,65,88,0,88,70,0,88,84,0,66,68,0,66,69,0,67,114,0,67,115,0,69,51,0,77,115,0,80,69,0,80,83,0,82,86,0,83,101,0,83,115,0,88,77,0,88,82,0,102,100,0,102,101,0,107,68,67,51,0,107,68,67,52,0,107,68,67,53,0,107,68,67,54,0,107,68,67,55,0,107,68,78,0,107,68,78,51,0,107,68,78,52,0,107,68,78,53,0,107,68,78,54,0,107,68,78,55,0,107,69,78,68,51,0,107,69,78,68,52,0,107,69,78,68,53,0,107,69,78,68,54,0,107,69,78,68,55,0,107,72,79,77,51,0,107,72,79,77,52,0,107,72,79,77,53,0,107,72,79,77,54,0,107,72,79,77,55,0,107,73,67,51,0,107,73,67,52,0,107,73,67,53,0,107,73,67,54,0,107,73,67,55,0,107,76,70,84,51,0,107,76,70,84,52,0,107,76,70,84,53,0,107,76,70,84,54,0,107,76,70,84,55,0,107,78,88,84,51,0,107,78,88,84,52,0,107,78,88,84,53,0,107,78,88,84,54,0,107,78,88,84,55,0,107,80,82,86,51,0,107,80,82,86,52,0,107,80,82,86,53,0,107,80,82,86,54,0,107,80,82,86,55,0,107,82,73,84,51,0,107,82,73,84,52,0,107,82,73,84,53,0,107,82,73,84,54,0,107,82,73,84,55,0,107,85,80,0,107,85,80,51,0,107,85,80,52,0,107,85,80,53,0,107,85,80,54,0,107,85,80,55,0,107,97,50,0,107,98,49,0,107,98,51,0,107,99,50,0,107,112,53,0,107,112,65,68,68,0,107,112,67,77,65,0,107,112,68,73,86,0,107,112,68,79,84,0,107,112,77,85,76,0,107,112,83,85,66,0,107,112,90,82,79,0,107,120,73,78,0,107,120,79,85,84,0,114,109,120,120,0,114,118,0,115,109,120,120,0,120,109,0,120,114,0
+static const TerminfoEntry vtpcon_terminfo = {
+ .bce = true,
+ .has_Tc_or_RGB = false,
+ .Su = false,
+ .max_colors = 0x100,
+ .lines = 24,
+ .columns = 80,
+ .defs = {
+ [kTerm_carriage_return] = "\r",
+ [kTerm_change_scroll_region] = "\033[%i%p1%d;%p2%dr",
+ [kTerm_clear_screen] = "\033[H\033[2J",
+ [kTerm_clr_eol] = "\033[K",
+ [kTerm_clr_eos] = "\033[J",
+ [kTerm_cursor_address] = "\033[%i%p1%d;%p2%dH",
+ [kTerm_cursor_down] = "\033[B",
+ [kTerm_cursor_invisible] = "\033[?25l",
+ [kTerm_cursor_left] = "\b",
+ [kTerm_cursor_home] = "\033[H",
+ [kTerm_cursor_normal] = "\033[?12l\033[?25h",
+ [kTerm_cursor_up] = "\033[A",
+ [kTerm_cursor_right] = "\033[C",
+ [kTerm_delete_line] = "\033[M",
+ [kTerm_enter_bold_mode] = "\033[1m",
+ [kTerm_enter_ca_mode] = "\033[?1049h",
+ [kTerm_enter_italics_mode] = "\033[3m",
+ [kTerm_enter_reverse_mode] = "\033[7m",
+ [kTerm_enter_standout_mode] = "\033[7m",
+ [kTerm_enter_underline_mode] = "\033[4m",
+ [kTerm_erase_chars] = "\033[%p1%dX",
+ [kTerm_exit_attribute_mode] = "\033[0m",
+ [kTerm_exit_ca_mode] = "\033[?1049l",
+ [kTerm_from_status_line] = "\a",
+ [kTerm_insert_line] = "\033[L",
+ [kTerm_keypad_local] = NULL,
+ [kTerm_keypad_xmit] = NULL,
+ [kTerm_parm_delete_line] = "\033[%p1%dM",
+ [kTerm_parm_down_cursor] = "\033[%p1%dB",
+ [kTerm_parm_insert_line] = "\033[%p1%dL",
+ [kTerm_parm_left_cursor] = "\033[%p1%dD",
+ [kTerm_parm_right_cursor] = "\033[%p1%dC",
+ [kTerm_parm_up_cursor] = "\033[%p1%dA",
+ [kTerm_set_a_background] = "\033[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m",
+ [kTerm_set_a_foreground] = "\033[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
+ [kTerm_set_attributes] = "\033[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p6%t;1%;m",
+ [kTerm_set_lr_margin] = NULL,
+ [kTerm_to_status_line] = "\033]0;",
+ [kTerm_reset_cursor_style] = NULL,
+ [kTerm_set_cursor_style] = "\033[%p1%d q",
+ [kTerm_enter_strikethrough_mode] = NULL,
+ [kTerm_set_rgb_foreground] = NULL,
+ [kTerm_set_rgb_background] = NULL,
+ [kTerm_set_cursor_color] = NULL,
+ [kTerm_reset_cursor_color] = NULL,
+ [kTerm_set_underline_style] = NULL,
+ },
};
+
+#define XLIST_TERMINFO_BUILTIN \
+ X(carriage_return) \
+ X(change_scroll_region) \
+ X(clear_screen) \
+ X(clr_eol) \
+ X(clr_eos) \
+ X(cursor_address) \
+ X(cursor_down) \
+ X(cursor_invisible) \
+ X(cursor_left) \
+ X(cursor_home) \
+ X(cursor_normal) \
+ X(cursor_up) \
+ X(cursor_right) \
+ X(delete_line) \
+ X(enter_bold_mode) \
+ X(enter_ca_mode) \
+ X(enter_italics_mode) \
+ X(enter_reverse_mode) \
+ X(enter_standout_mode) \
+ X(enter_underline_mode) \
+ X(erase_chars) \
+ X(exit_attribute_mode) \
+ X(exit_ca_mode) \
+ X(from_status_line) \
+ X(insert_line) \
+ X(keypad_local) \
+ X(keypad_xmit) \
+ X(parm_delete_line) \
+ X(parm_down_cursor) \
+ X(parm_insert_line) \
+ X(parm_left_cursor) \
+ X(parm_right_cursor) \
+ X(parm_up_cursor) \
+ X(set_a_background) \
+ X(set_a_foreground) \
+ X(set_attributes) \
+ X(set_lr_margin) \
+ X(to_status_line) \
+// end of list
+
+#define XLIST_TERMINFO_EXT \
+ X(reset_cursor_style, se) \
+ X(set_cursor_style, Ss) \
+ X(enter_strikethrough_mode, smxx) \
+ X(set_rgb_foreground, setrgbf) \
+ X(set_rgb_background, setrgbb) \
+ X(set_cursor_color, Cs) \
+ X(reset_cursor_color, Cr) \
+ X(set_underline_style, Smulx) \
+// end of list
diff --git a/src/nvim/tui/terminfo_enum_defs.h b/src/nvim/tui/terminfo_enum_defs.h
@@ -0,0 +1,54 @@
+// genenerated by src/gen/gen_terminfo.lua
+
+#pragma once
+
+typedef enum {
+ kTerm_carriage_return,
+ kTerm_change_scroll_region,
+ kTerm_clear_screen,
+ kTerm_clr_eol,
+ kTerm_clr_eos,
+ kTerm_cursor_address,
+ kTerm_cursor_down,
+ kTerm_cursor_invisible,
+ kTerm_cursor_left,
+ kTerm_cursor_home,
+ kTerm_cursor_normal,
+ kTerm_cursor_up,
+ kTerm_cursor_right,
+ kTerm_delete_line,
+ kTerm_enter_bold_mode,
+ kTerm_enter_ca_mode,
+ kTerm_enter_italics_mode,
+ kTerm_enter_reverse_mode,
+ kTerm_enter_standout_mode,
+ kTerm_enter_underline_mode,
+ kTerm_erase_chars,
+ kTerm_exit_attribute_mode,
+ kTerm_exit_ca_mode,
+ kTerm_from_status_line,
+ kTerm_insert_line,
+ kTerm_keypad_local,
+ kTerm_keypad_xmit,
+ kTerm_parm_delete_line,
+ kTerm_parm_down_cursor,
+ kTerm_parm_insert_line,
+ kTerm_parm_left_cursor,
+ kTerm_parm_right_cursor,
+ kTerm_parm_up_cursor,
+ kTerm_set_a_background,
+ kTerm_set_a_foreground,
+ kTerm_set_attributes,
+ kTerm_set_lr_margin,
+ kTerm_to_status_line,
+#define kTermExtOffset kTerm_reset_cursor_style
+ kTerm_reset_cursor_style,
+ kTerm_set_cursor_style,
+ kTerm_enter_strikethrough_mode,
+ kTerm_set_rgb_foreground,
+ kTerm_set_rgb_background,
+ kTerm_set_cursor_color,
+ kTerm_reset_cursor_color,
+ kTerm_set_underline_style,
+ kTermCount, // sentinel
+} TerminfoDef;
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
@@ -7,7 +7,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <unibilium.h>
#include <uv.h>
#include "auto/config.h"
@@ -62,28 +61,18 @@
#define LINUXSET0C "\x1b[?0c"
#define LINUXSET1C "\x1b[?1c"
-#define UNIBI_SET_NUM_VAR(var, num) \
- do { \
- (var) = unibi_var_from_num((num)); \
- } while (0)
-#define UNIBI_SET_STR_VAR(var, str) \
- do { \
- (var) = unibi_var_from_str((str)); \
- } while (0)
-
typedef struct {
int top, bot, left, right;
} Rect;
struct TUIData {
Loop *loop;
- unibi_var_t params[9];
char buf[OUTBUF_SIZE];
char *buf_to_flush; ///< If non-null, flush this instead of buf[].
size_t bufpos;
TermInput input;
uv_loop_t write_loop;
- unibi_term *ut;
+ TerminfoEntry ti;
char *term; ///< value of $TERM
union {
uv_tty_t tty;
@@ -99,6 +88,7 @@ struct TUIData {
int pending_resize_events;
bool can_change_scroll_region;
bool has_left_and_right_margin_mode;
+ bool has_sync_mode;
bool can_set_lr_margin; // smglr
bool can_scroll;
bool can_erase_chars;
@@ -110,7 +100,6 @@ struct TUIData {
bool title_enabled;
bool sync_output;
bool busy, is_invisible, want_invisible;
- bool cork, overflow;
bool set_cursor_color_as_str;
bool cursor_has_color;
bool is_starting;
@@ -134,34 +123,33 @@ struct TUIData {
ModeShape showing_mode;
Integer verbose;
struct {
- int enter_strikethrough_mode;
- int enter_altfont_mode;
- int set_rgb_foreground, set_rgb_background;
- int set_cursor_color;
- int reset_cursor_color;
- int enable_focus_reporting, disable_focus_reporting;
- int resize_screen;
- int reset_scroll_region;
- int set_cursor_style, reset_cursor_style;
- int save_title, restore_title, set_title;
- int set_underline_style;
- int set_underline_color;
- int sync;
- } unibi_ext;
- char *set_title;
- char *space_buf;
- size_t space_buf_len;
+ char *enable_focus_reporting;
+ char *disable_focus_reporting;
+ char *reset_scroll_region;
+ char *enter_altfont_mode;
+ } terminfo_ext;
+ bool can_set_title;
+ bool can_set_underline_color;
+ bool can_resize_screen;
bool stopped;
int width;
int height;
bool rgb;
+ bool screen_or_tmux;
int url; ///< Index of URL currently being printed, if any
StringBuilder urlbuf; ///< Re-usable buffer for writing OSC 8 control sequences
+ Arena ti_arena;
};
static bool cursor_style_enabled = false;
#include "tui/tui.c.generated.h"
+#define TERMINFO_SEQ_LIMIT 128
+
+#define terminfo_print_num1(tui, what, num) terminfo_print_num(tui, what, num, 0, 0)
+#define terminfo_print_num2(tui, what, num1, num2) terminfo_print_num(tui, what, num1, num2, 0)
+#define terminfo_print_num3 terminfo_print_num
+
static Set(cstr_t) urls = SET_INIT;
void tui_start(TUIData **tui_p, int *width, int *height, char **term, bool *rgb)
@@ -246,8 +234,7 @@ void tui_handle_term_mode(TUIData *tui, TermMode mode, TermModeState state)
switch (mode) {
case kTermModeSynchronizedOutput:
// Ref: https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036
- tui->unibi_ext.sync = (int)unibi_add_ext_str(tui->ut, "Sync",
- "\x1b[?2026%?%p1%{1}%-%tl%eh%;");
+ tui->has_sync_mode = true;
break;
case kTermModeGraphemeClusters:
if (!is_set) {
@@ -290,13 +277,8 @@ static void tui_query_extended_underline(TUIData *tui)
void tui_enable_extended_underline(TUIData *tui)
{
- if (tui->unibi_ext.set_underline_style == -1) {
- tui->unibi_ext.set_underline_style = (int)unibi_add_ext_str(tui->ut, "ext.set_underline_style",
- "\x1b[4:%p1%dm");
- }
- // Only support colon syntax. #9270
- tui->unibi_ext.set_underline_color = (int)unibi_add_ext_str(tui->ut, "ext.set_underline_color",
- "\x1b[58:2::%p1%d:%p2%d:%p3%dm");
+ terminfo_set_if_empty(tui, kTerm_set_underline_style, "\x1b[4:%p1%dm");
+ tui->can_set_underline_color = true;
}
/// Query the terminal emulator to see if it supports Kitty's keyboard protocol.
@@ -372,8 +354,6 @@ static void terminfo_start(TUIData *tui)
tui->is_invisible = true;
tui->want_invisible = false;
tui->busy = false;
- tui->cork = false;
- tui->overflow = false;
tui->set_cursor_color_as_str = false;
tui->cursor_has_color = false;
tui->resize_events_enabled = false;
@@ -381,45 +361,41 @@ static void terminfo_start(TUIData *tui)
tui->modes.resize_events = false;
tui->modes.theme_updates = false;
tui->showing_mode = SHAPE_IDX_N;
- tui->unibi_ext.set_cursor_color = -1;
- tui->unibi_ext.reset_cursor_color = -1;
- tui->unibi_ext.enter_strikethrough_mode = -1;
- tui->unibi_ext.enter_altfont_mode = -1;
- tui->unibi_ext.enable_focus_reporting = -1;
- tui->unibi_ext.disable_focus_reporting = -1;
- tui->unibi_ext.resize_screen = -1;
- tui->unibi_ext.reset_scroll_region = -1;
- tui->unibi_ext.set_cursor_style = -1;
- tui->unibi_ext.reset_cursor_style = -1;
- tui->unibi_ext.set_title = -1;
- tui->unibi_ext.set_underline_style = -1;
- tui->unibi_ext.set_underline_color = -1;
- tui->unibi_ext.sync = -1;
+ tui->terminfo_ext.enable_focus_reporting = NULL;
+ tui->terminfo_ext.disable_focus_reporting = NULL;
+
tui->out_fd = STDOUT_FILENO;
tui->out_isatty = os_isatty(tui->out_fd);
tui->input.tui_data = tui;
+ tui->ti_arena = (Arena)ARENA_EMPTY;
+
char *term = os_getenv("TERM");
#ifdef MSWIN
const char *guessed_term = NULL;
os_tty_guess_term(&guessed_term, tui->out_fd);
if (term == NULL && guessed_term != NULL) {
+ // TODO(bfredl): should be arena_strdup, make os_getenv ready for the BIG STAGE?
term = xstrdup(guessed_term);
os_setenv("TERM", guessed_term, 1);
}
#endif
- // Set up unibilium/terminfo.
+ // Set up terminfo.
+ bool found_in_db = false;
if (term) {
- tui->ut = unibi_from_term(term);
- if (tui->ut) {
+ if (terminfo_from_unibilium(&tui->ti, term, &tui->ti_arena)) {
if (!tui->term) {
- tui->term = xstrdup(term);
+ tui->term = arena_strdup(&tui->ti_arena, term);
}
+ found_in_db = true;
}
}
- if (!tui->ut) {
- tui->ut = terminfo_from_builtin(term, &tui->term);
+
+ if (!found_in_db) {
+ const TerminfoEntry *new = terminfo_from_builtin(term, &tui->term);
+ // we will patch it below, so make a copy
+ memcpy(&tui->ti, new, sizeof tui->ti);
}
// None of the following work over SSH; see :help TERM .
@@ -442,35 +418,37 @@ static void terminfo_start(TUIData *tui)
const char *weztermv = wezterm ? term_program_version_env : NULL;
bool screen = terminfo_is_term_family(term, "screen");
bool tmux = terminfo_is_term_family(term, "tmux") || os_env_exists("TMUX", true);
+ tui->screen_or_tmux = screen || tmux;
// truecolor support must be checked before patching/augmenting terminfo
tui->rgb = term_has_truecolor(tui, colorterm);
patch_terminfo_bugs(tui, term, colorterm, vtev, konsolev, iterm_env, nsterm);
augment_terminfo(tui, term, vtev, konsolev, weztermv, iterm_env, nsterm);
- tui->can_change_scroll_region =
- !!unibi_get_str(tui->ut, unibi_change_scroll_region);
+
+#define TI_HAS(name) (tui->ti.defs[name] != NULL)
+ tui->can_change_scroll_region = TI_HAS(kTerm_change_scroll_region);
// note: also gated by tui->has_left_and_right_margin_mode
- tui->can_set_lr_margin = !!unibi_get_str(tui->ut, unibi_set_lr_margin);
+ tui->can_set_lr_margin = TI_HAS(kTerm_set_lr_margin);
tui->can_scroll =
- !!unibi_get_str(tui->ut, unibi_delete_line)
- && !!unibi_get_str(tui->ut, unibi_parm_delete_line)
- && !!unibi_get_str(tui->ut, unibi_insert_line)
- && !!unibi_get_str(tui->ut, unibi_parm_insert_line);
- tui->can_erase_chars = !!unibi_get_str(tui->ut, unibi_erase_chars);
+ TI_HAS(kTerm_delete_line)
+ && TI_HAS(kTerm_parm_delete_line)
+ && TI_HAS(kTerm_insert_line)
+ && TI_HAS(kTerm_parm_insert_line);
+ tui->can_erase_chars = TI_HAS(kTerm_erase_chars);
tui->immediate_wrap_after_last_column =
terminfo_is_term_family(term, "conemu")
|| terminfo_is_term_family(term, "cygwin")
|| terminfo_is_term_family(term, "win32con")
|| terminfo_is_term_family(term, "interix");
- tui->bce = unibi_get_bool(tui->ut, unibi_back_color_erase);
- // Set 't_Co' from the result of unibilium & fix_terminfo.
- t_colors = unibi_get_num(tui->ut, unibi_max_colors);
+ tui->bce = tui->ti.bce;
+ // Set 't_Co' from the result of terminfo & fix_terminfo.
+ t_colors = tui->ti.max_colors;
// Enter alternate screen, save title, and clear.
// NOTE: Do this *before* changing terminal settings. #6433
- unibi_out(tui, unibi_enter_ca_mode);
- unibi_out(tui, unibi_keypad_xmit);
- unibi_out(tui, unibi_clear_screen);
+ terminfo_out(tui, kTerm_enter_ca_mode);
+ terminfo_out(tui, kTerm_keypad_xmit);
+ terminfo_out(tui, kTerm_clear_screen);
/// Terminals usually ignore unrecognized private modes, and there is no
/// known ambiguity with these. So we just set them unconditionally.
@@ -478,6 +456,7 @@ static void terminfo_start(TUIData *tui)
tui_set_term_mode(tui, kTermModeBracketedPaste, true);
tui->has_left_and_right_margin_mode = false;
+ tui->has_sync_mode = false;
// Query support for private DEC modes that Nvim can take advantage of.
// Some terminals (such as Terminal.app) do not support DECRQM, so skip the query.
@@ -491,7 +470,7 @@ static void terminfo_start(TUIData *tui)
// Don't use DECRQSS in screen or tmux, as they behave strangely when receiving it.
// Terminal.app also doesn't support DECRQSS.
- if (tui->unibi_ext.set_underline_style == -1 && !(screen || tmux || nsterm)) {
+ if (!TI_HAS(kTerm_set_underline_style) && !(screen || tmux || nsterm)) {
// Query the terminal to see if it supports extended underline.
tui_query_extended_underline(tui);
}
@@ -536,6 +515,7 @@ static void terminfo_start(TUIData *tui)
xfree(vte_version_env);
xfree(konsolev_env);
xfree(term_program_version_env);
+#undef TI_HAS
}
/// Disable various terminal modes and other features.
@@ -550,10 +530,10 @@ static void terminfo_disable(TUIData *tui)
// Destroy output stuff
tui_mode_change(tui, NULL_STRING, SHAPE_IDX_N);
tui_mouse_off(tui);
- unibi_out(tui, unibi_exit_attribute_mode);
+ terminfo_out(tui, kTerm_exit_attribute_mode);
// Reset cursor to normal before exiting alternate screen.
- unibi_out(tui, unibi_cursor_normal);
- unibi_out(tui, unibi_keypad_local);
+ terminfo_out(tui, kTerm_cursor_normal);
+ terminfo_out(tui, kTerm_keypad_local);
// Reset the key encoding
tui_reset_key_encoding(tui);
@@ -570,12 +550,12 @@ static void terminfo_disable(TUIData *tui)
// May restore old title before exiting alternate screen.
tui_set_title(tui, NULL_STRING);
if (tui->cursor_has_color) {
- unibi_out_ext(tui, tui->unibi_ext.reset_cursor_color);
+ terminfo_out(tui, kTerm_reset_cursor_color);
}
// Disable bracketed paste
tui_set_term_mode(tui, kTermModeBracketedPaste, false);
// Disable focus reporting
- unibi_out_ext(tui, tui->unibi_ext.disable_focus_reporting);
+ out_len(tui, tui->terminfo_ext.disable_focus_reporting);
// Send a DA1 request. When the terminal responds we know that it has
// processed all of our requests and won't be emitting anymore sequences.
@@ -599,7 +579,7 @@ static void terminfo_stop(TUIData *tui)
// Position the cursor on the last screen line, below all the text
cursor_goto(tui, tui->height - 1, 0);
// Exit alternate screen.
- unibi_out(tui, unibi_exit_ca_mode);
+ terminfo_out(tui, kTerm_exit_ca_mode);
}
flush_buf(tui);
@@ -609,8 +589,7 @@ static void terminfo_stop(TUIData *tui)
if (uv_loop_close(&tui->write_loop)) {
abort();
}
- unibi_destroy(tui->ut);
- XFREE_CLEAR(tui->set_title);
+ arena_mem_free(arena_finish(&tui->ti_arena));
}
static void tui_terminal_start(TUIData *tui)
@@ -632,7 +611,7 @@ static void tui_terminal_after_startup(TUIData *tui)
{
// Emit this after Nvim startup, not during. This works around a tmux
// 2.3 bug(?) which caused slow drawing during startup. #7649
- unibi_out_ext(tui, tui->unibi_ext.enable_focus_reporting);
+ out_len(tui, tui->terminfo_ext.enable_focus_reporting);
flush_buf(tui);
}
@@ -704,8 +683,6 @@ void tui_free_all_mem(TUIData *tui)
kv_destroy(tui->attrs);
kv_destroy(tui->urlbuf);
- xfree(tui->space_buf);
- xfree(tui->term);
xfree(tui);
}
#endif
@@ -770,7 +747,7 @@ static void update_attrs(TUIData *tui, int attr_id)
bool underdouble;
bool underdotted;
bool underdashed;
- if (tui->unibi_ext.set_underline_style != -1) {
+ if (tui->ti.defs[kTerm_set_underline_style]) {
int ul = attr & HL_UNDERLINE_MASK;
underline = ul == HL_UNDERLINE;
undercurl = ul == HL_UNDERCURL;
@@ -788,71 +765,71 @@ static void update_attrs(TUIData *tui, int attr_id)
bool has_any_underline = undercurl || underline
|| underdouble || underdotted || underdashed;
- if (unibi_get_str(tui->ut, unibi_set_attributes)) {
+ if (tui->ti.defs[kTerm_set_attributes] != NULL) {
if (bold || reverse || underline || standout) {
- UNIBI_SET_NUM_VAR(tui->params[0], standout);
- UNIBI_SET_NUM_VAR(tui->params[1], underline);
- UNIBI_SET_NUM_VAR(tui->params[2], reverse);
- UNIBI_SET_NUM_VAR(tui->params[3], 0); // blink
- UNIBI_SET_NUM_VAR(tui->params[4], 0); // dim
- UNIBI_SET_NUM_VAR(tui->params[5], bold);
- UNIBI_SET_NUM_VAR(tui->params[6], 0); // blank
- UNIBI_SET_NUM_VAR(tui->params[7], 0); // protect
- UNIBI_SET_NUM_VAR(tui->params[8], 0); // alternate character set
- unibi_out(tui, unibi_set_attributes);
+ TPVAR params[9] = { 0 };
+ params[0].num = standout;
+ params[1].num = underline;
+ params[2].num = reverse;
+ params[3].num = 0; // blink
+ params[4].num = 0; // dim
+ params[5].num = bold;
+ params[6].num = 0; // blank
+ params[7].num = 0; // protect
+ params[8].num = 0; // alternate character set
+ terminfo_print(tui, kTerm_set_attributes, params);
} else if (!tui->default_attr) {
- unibi_out(tui, unibi_exit_attribute_mode);
+ terminfo_out(tui, kTerm_exit_attribute_mode);
}
} else {
if (!tui->default_attr) {
- unibi_out(tui, unibi_exit_attribute_mode);
+ terminfo_out(tui, kTerm_exit_attribute_mode);
}
if (bold) {
- unibi_out(tui, unibi_enter_bold_mode);
+ terminfo_out(tui, kTerm_enter_bold_mode);
}
if (underline) {
- unibi_out(tui, unibi_enter_underline_mode);
+ terminfo_out(tui, kTerm_enter_underline_mode);
}
if (standout) {
- unibi_out(tui, unibi_enter_standout_mode);
+ terminfo_out(tui, kTerm_enter_standout_mode);
}
if (reverse) {
- unibi_out(tui, unibi_enter_reverse_mode);
+ terminfo_out(tui, kTerm_enter_reverse_mode);
}
}
if (italic) {
- unibi_out(tui, unibi_enter_italics_mode);
- }
- if (altfont && tui->unibi_ext.enter_altfont_mode != -1) {
- unibi_out_ext(tui, tui->unibi_ext.enter_altfont_mode);
- }
- if (strikethrough && tui->unibi_ext.enter_strikethrough_mode != -1) {
- unibi_out_ext(tui, tui->unibi_ext.enter_strikethrough_mode);
+ terminfo_out(tui, kTerm_enter_italics_mode);
}
- if (undercurl && tui->unibi_ext.set_underline_style != -1) {
- UNIBI_SET_NUM_VAR(tui->params[0], 3);
- unibi_out_ext(tui, tui->unibi_ext.set_underline_style);
+ if (altfont) {
+ out_len(tui, tui->terminfo_ext.enter_altfont_mode);
}
- if (underdouble && tui->unibi_ext.set_underline_style != -1) {
- UNIBI_SET_NUM_VAR(tui->params[0], 2);
- unibi_out_ext(tui, tui->unibi_ext.set_underline_style);
+ if (strikethrough) {
+ terminfo_out(tui, kTerm_enter_strikethrough_mode);
}
- if (underdotted && tui->unibi_ext.set_underline_style != -1) {
- UNIBI_SET_NUM_VAR(tui->params[0], 4);
- unibi_out_ext(tui, tui->unibi_ext.set_underline_style);
- }
- if (underdashed && tui->unibi_ext.set_underline_style != -1) {
- UNIBI_SET_NUM_VAR(tui->params[0], 5);
- unibi_out_ext(tui, tui->unibi_ext.set_underline_style);
+ if (tui->ti.defs[kTerm_set_underline_style]) {
+ if (undercurl) {
+ terminfo_print_num1(tui, kTerm_set_underline_style, 3);
+ }
+ if (underdouble) {
+ terminfo_print_num1(tui, kTerm_set_underline_style, 2);
+ }
+ if (underdotted) {
+ terminfo_print_num1(tui, kTerm_set_underline_style, 4);
+ }
+ if (underdashed) {
+ terminfo_print_num1(tui, kTerm_set_underline_style, 5);
+ }
}
- if (has_any_underline && tui->unibi_ext.set_underline_color != -1) {
+ if (has_any_underline && tui->can_set_underline_color) {
int color = attrs.rgb_sp_color;
if (color != -1) {
- UNIBI_SET_NUM_VAR(tui->params[0], (color >> 16) & 0xff); // red
- UNIBI_SET_NUM_VAR(tui->params[1], (color >> 8) & 0xff); // green
- UNIBI_SET_NUM_VAR(tui->params[2], color & 0xff); // blue
- unibi_out_ext(tui, tui->unibi_ext.set_underline_color);
+ // Only support colon syntax. #9270
+ out_printf(tui, 128, "\x1b[58:2::%d:%d:%dm",
+ (color >> 16) & 0xff, // red
+ (color >> 8) & 0xff, // green
+ color & 0xff); // blue
}
}
@@ -861,17 +838,16 @@ static void update_attrs(TUIData *tui, int attr_id)
fg = ((attrs.rgb_fg_color != -1)
? attrs.rgb_fg_color : tui->clear_attrs.rgb_fg_color);
if (fg != -1) {
- UNIBI_SET_NUM_VAR(tui->params[0], (fg >> 16) & 0xff); // red
- UNIBI_SET_NUM_VAR(tui->params[1], (fg >> 8) & 0xff); // green
- UNIBI_SET_NUM_VAR(tui->params[2], fg & 0xff); // blue
- unibi_out_ext(tui, tui->unibi_ext.set_rgb_foreground);
+ terminfo_print_num3(tui, kTerm_set_rgb_foreground,
+ (fg >> 16) & 0xff, // red
+ (fg >> 8) & 0xff, // green
+ fg & 0xff); // blue
}
} else {
fg = (attrs.cterm_fg_color
? attrs.cterm_fg_color - 1 : (tui->clear_attrs.cterm_fg_color - 1));
if (fg != -1) {
- UNIBI_SET_NUM_VAR(tui->params[0], fg);
- unibi_out(tui, unibi_set_a_foreground);
+ terminfo_print_num1(tui, kTerm_set_a_foreground, fg);
}
}
@@ -879,17 +855,16 @@ static void update_attrs(TUIData *tui, int attr_id)
bg = ((attrs.rgb_bg_color != -1)
? attrs.rgb_bg_color : tui->clear_attrs.rgb_bg_color);
if (bg != -1) {
- UNIBI_SET_NUM_VAR(tui->params[0], (bg >> 16) & 0xff); // red
- UNIBI_SET_NUM_VAR(tui->params[1], (bg >> 8) & 0xff); // green
- UNIBI_SET_NUM_VAR(tui->params[2], bg & 0xff); // blue
- unibi_out_ext(tui, tui->unibi_ext.set_rgb_background);
+ terminfo_print_num3(tui, kTerm_set_rgb_background,
+ (bg >> 16) & 0xff, // red
+ (bg >> 8) & 0xff, // green
+ bg & 0xff); // blue
}
} else {
bg = (attrs.cterm_bg_color
? attrs.cterm_bg_color - 1 : (tui->clear_attrs.cterm_bg_color - 1));
if (bg != -1) {
- UNIBI_SET_NUM_VAR(tui->params[0], bg);
- unibi_out(tui, unibi_set_a_background);
+ terminfo_print_num1(tui, kTerm_set_a_background, bg);
}
}
@@ -996,7 +971,7 @@ static void cursor_goto(TUIData *tui, int row, int col)
}
if (0 == row && 0 == col) {
- unibi_out(tui, unibi_cursor_home);
+ terminfo_out(tui, kTerm_cursor_home);
ugrid_goto(grid, row, col);
return;
}
@@ -1014,7 +989,7 @@ static void cursor_goto(TUIData *tui, int row, int col)
: false)))) {
// Motion to left margin from anywhere else, or CR + printing chars is
// even less expensive than using BSes or CUB.
- unibi_out(tui, unibi_carriage_return);
+ terminfo_out(tui, kTerm_carriage_return);
ugrid_goto(grid, grid->row, 0);
}
if (row == grid->row) {
@@ -1028,11 +1003,10 @@ static void cursor_goto(TUIData *tui, int row, int col)
int n = grid->col - col;
if (n <= 4) { // This might be just BS, so it is considered really cheap.
while (n--) {
- unibi_out(tui, unibi_cursor_left);
+ terminfo_out(tui, kTerm_cursor_left);
}
} else {
- UNIBI_SET_NUM_VAR(tui->params[0], n);
- unibi_out(tui, unibi_parm_left_cursor);
+ terminfo_print_num1(tui, kTerm_parm_left_cursor, n);
}
ugrid_goto(grid, row, col);
return;
@@ -1040,11 +1014,10 @@ static void cursor_goto(TUIData *tui, int row, int col)
int n = col - grid->col;
if (n <= 2) {
while (n--) {
- unibi_out(tui, unibi_cursor_right);
+ terminfo_out(tui, kTerm_cursor_right);
}
} else {
- UNIBI_SET_NUM_VAR(tui->params[0], n);
- unibi_out(tui, unibi_parm_right_cursor);
+ terminfo_print_num1(tui, kTerm_parm_right_cursor, n);
}
ugrid_goto(grid, row, col);
return;
@@ -1055,11 +1028,10 @@ static void cursor_goto(TUIData *tui, int row, int col)
int n = row - grid->row;
if (n <= 4) { // This might be just LF, so it is considered really cheap.
while (n--) {
- unibi_out(tui, unibi_cursor_down);
+ terminfo_out(tui, kTerm_cursor_down);
}
} else {
- UNIBI_SET_NUM_VAR(tui->params[0], n);
- unibi_out(tui, unibi_parm_down_cursor);
+ terminfo_print_num1(tui, kTerm_parm_down_cursor, n);
}
ugrid_goto(grid, row, col);
return;
@@ -1067,11 +1039,10 @@ static void cursor_goto(TUIData *tui, int row, int col)
int n = grid->row - row;
if (n <= 2) {
while (n--) {
- unibi_out(tui, unibi_cursor_up);
+ terminfo_out(tui, kTerm_cursor_up);
}
} else {
- UNIBI_SET_NUM_VAR(tui->params[0], n);
- unibi_out(tui, unibi_parm_up_cursor);
+ terminfo_print_num1(tui, kTerm_parm_up_cursor, n);
}
ugrid_goto(grid, row, col);
return;
@@ -1079,15 +1050,28 @@ static void cursor_goto(TUIData *tui, int row, int col)
}
safe_move:
- unibi_goto(tui, row, col);
+ terminfo_print_num2(tui, kTerm_cursor_address, row, col);
ugrid_goto(grid, row, col);
}
static void print_spaces(TUIData *tui, int width)
{
UGrid *grid = &tui->grid;
+ size_t left = (size_t)width;
+
+ // spaces are not a sequence, we can squeeze whatever's left of the buffer
+ while (true) {
+ size_t buf_fit = MIN(left, sizeof tui->buf - tui->bufpos);
+ memset(tui->buf + tui->bufpos, ' ', buf_fit);
+ tui->bufpos += buf_fit;
+ left -= buf_fit;
+
+ if (left == 0) {
+ break; // likely: didn't need to flush for sm0l spaces
+ }
+ flush_buf(tui);
+ }
- out(tui, tui->space_buf, (size_t)width);
grid->col += width;
if (tui->immediate_wrap_after_last_column) {
// Printing at the right margin immediately advances the cursor.
@@ -1146,7 +1130,7 @@ static void clear_region(TUIData *tui, int top, int bot, int left, int right, in
if (tui->set_default_colors) {
update_attrs(tui, attr_id);
} else {
- unibi_out(tui, unibi_exit_attribute_mode);
+ terminfo_out(tui, kTerm_exit_attribute_mode);
}
// Background is set to the default color and the right edge matches the
@@ -1154,11 +1138,11 @@ static void clear_region(TUIData *tui, int top, int bot, int left, int right, in
if (tui->can_clear_attr
&& left == 0 && right == tui->width && bot == tui->height) {
if (top == 0) {
- unibi_out(tui, unibi_clear_screen);
+ terminfo_out(tui, kTerm_clear_screen);
ugrid_goto(grid, top, left);
} else {
cursor_goto(tui, top, 0);
- unibi_out(tui, unibi_clr_eos);
+ terminfo_out(tui, kTerm_clr_eos);
}
} else {
int width = right - left;
@@ -1167,10 +1151,9 @@ static void clear_region(TUIData *tui, int top, int bot, int left, int right, in
for (int row = top; row < bot; row++) {
cursor_goto(tui, row, left);
if (tui->can_clear_attr && right == tui->width) {
- unibi_out(tui, unibi_clr_eol);
+ terminfo_out(tui, kTerm_clr_eol);
} else if (tui->can_erase_chars && tui->can_clear_attr && width >= 5) {
- UNIBI_SET_NUM_VAR(tui->params[0], width);
- unibi_out(tui, unibi_erase_chars);
+ terminfo_print_num1(tui, kTerm_erase_chars, width);
} else {
print_spaces(tui, width);
}
@@ -1182,14 +1165,10 @@ static void set_scroll_region(TUIData *tui, int top, int bot, int left, int righ
{
UGrid *grid = &tui->grid;
- UNIBI_SET_NUM_VAR(tui->params[0], top);
- UNIBI_SET_NUM_VAR(tui->params[1], bot);
- unibi_out(tui, unibi_change_scroll_region);
+ terminfo_print_num2(tui, kTerm_change_scroll_region, top, bot);
if (left != 0 || right != tui->width - 1) {
tui_set_term_mode(tui, kTermModeLeftAndRightMargins, true);
- UNIBI_SET_NUM_VAR(tui->params[0], left);
- UNIBI_SET_NUM_VAR(tui->params[1], right);
- unibi_out(tui, unibi_set_lr_margin);
+ terminfo_print_num2(tui, kTerm_set_lr_margin, left, right);
}
grid->row = -1;
}
@@ -1198,17 +1177,13 @@ static void reset_scroll_region(TUIData *tui, bool fullwidth)
{
UGrid *grid = &tui->grid;
- if (0 <= tui->unibi_ext.reset_scroll_region) {
- unibi_out_ext(tui, tui->unibi_ext.reset_scroll_region);
+ if (tui->terminfo_ext.reset_scroll_region) {
+ out_len(tui, tui->terminfo_ext.reset_scroll_region);
} else {
- UNIBI_SET_NUM_VAR(tui->params[0], 0);
- UNIBI_SET_NUM_VAR(tui->params[1], tui->height - 1);
- unibi_out(tui, unibi_change_scroll_region);
+ terminfo_print_num2(tui, kTerm_change_scroll_region, 0, tui->height - 1);
}
if (!fullwidth) {
- UNIBI_SET_NUM_VAR(tui->params[0], 0);
- UNIBI_SET_NUM_VAR(tui->params[1], tui->width - 1);
- unibi_out(tui, unibi_set_lr_margin);
+ terminfo_print_num2(tui, kTerm_set_lr_margin, 0, tui->width - 1);
tui_set_term_mode(tui, kTermModeLeftAndRightMargins, false);
}
grid->row = -1;
@@ -1218,7 +1193,6 @@ void tui_grid_resize(TUIData *tui, Integer g, Integer width, Integer height)
{
UGrid *grid = &tui->grid;
ugrid_resize(grid, (int)width, (int)height);
- ensure_space_buf_size(tui, (size_t)width);
// resize might not always be followed by a clear before flush
// so clip the invalid region
@@ -1230,9 +1204,7 @@ void tui_grid_resize(TUIData *tui, Integer g, Integer width, Integer height)
if (tui->pending_resize_events == 0 && !tui->is_starting) {
// Resize the _host_ terminal.
- UNIBI_SET_NUM_VAR(tui->params[0], (int)height);
- UNIBI_SET_NUM_VAR(tui->params[1], (int)width);
- unibi_out_ext(tui, tui->unibi_ext.resize_screen);
+ out_printf(tui, 64, "\x1b[8;%d;%dt", (int)height, (int)width);
} else { // Already handled the resize; avoid double-resize.
tui->pending_resize_events = tui->pending_resize_events >
0 ? tui->pending_resize_events - 1 : 0;
@@ -1366,23 +1338,24 @@ static void tui_set_mode(TUIData *tui, ModeShape mode)
if (!tui->want_invisible && aep.rgb_ae_attr & HL_INVERSE) {
// We interpret "inverse" as "default" (no termcode for "inverse"...).
// Hopefully the user's default cursor color is inverse.
- unibi_out_ext(tui, tui->unibi_ext.reset_cursor_color);
+ terminfo_out(tui, kTerm_reset_cursor_color);
} else if (!tui->want_invisible && aep.rgb_bg_color >= 0) {
+ TPVAR params[9] = { 0 };
char hexbuf[8];
if (tui->set_cursor_color_as_str) {
snprintf(hexbuf, 7 + 1, "#%06x", aep.rgb_bg_color);
- UNIBI_SET_STR_VAR(tui->params[0], hexbuf);
+ params[0].string = hexbuf;
} else {
- UNIBI_SET_NUM_VAR(tui->params[0], aep.rgb_bg_color);
+ params[0].num = aep.rgb_bg_color;
}
- unibi_out_ext(tui, tui->unibi_ext.set_cursor_color);
+ terminfo_print(tui, kTerm_set_cursor_color, params);
tui->cursor_has_color = true;
}
} else if (c.id == 0 && (tui->want_invisible || tui->cursor_has_color)) {
// No cursor color for this mode; reset to default.
tui->want_invisible = false;
tui->cursor_has_color = false;
- unibi_out_ext(tui, tui->unibi_ext.reset_cursor_color);
+ terminfo_out(tui, kTerm_reset_cursor_color);
}
int shape;
@@ -1394,8 +1367,8 @@ static void tui_set_mode(TUIData *tui, ModeShape mode)
case SHAPE_VER:
shape = 5; break;
}
- UNIBI_SET_NUM_VAR(tui->params[0], shape + (int)(c.blinkon == 0 || c.blinkoff == 0));
- unibi_out_ext(tui, tui->unibi_ext.set_cursor_style);
+ terminfo_print_num1(tui, kTerm_set_cursor_style,
+ shape + (int)(c.blinkon == 0 || c.blinkoff == 0));
}
/// @param mode editor mode
@@ -1457,17 +1430,15 @@ void tui_grid_scroll(TUIData *tui, Integer g, Integer startrow, Integer endrow,
if (rows > 0) {
if (rows == 1) {
- unibi_out(tui, unibi_delete_line);
+ terminfo_out(tui, kTerm_delete_line);
} else {
- UNIBI_SET_NUM_VAR(tui->params[0], (int)rows);
- unibi_out(tui, unibi_parm_delete_line);
+ terminfo_print_num1(tui, kTerm_parm_delete_line, (int)rows);
}
} else {
if (rows == -1) {
- unibi_out(tui, unibi_insert_line);
+ terminfo_out(tui, kTerm_insert_line);
} else {
- UNIBI_SET_NUM_VAR(tui->params[0], -(int)rows);
- unibi_out(tui, unibi_parm_insert_line);
+ terminfo_print_num1(tui, kTerm_parm_insert_line, -(int)rows);
}
}
@@ -1517,12 +1488,22 @@ void tui_hl_attr_define(TUIData *tui, Integer id, HlAttrs attrs, HlAttrs cterm_a
void tui_bell(TUIData *tui)
{
- unibi_out(tui, unibi_bell);
+ out(tui, S_LEN("\a"));
}
void tui_visual_bell(TUIData *tui)
{
- unibi_out(tui, unibi_flash_screen);
+ if (tui->screen_or_tmux) {
+ out(tui, S_LEN("\x1bg"));
+ } else {
+ out(tui, S_LEN("\x1b[?5h"));
+
+ flush_buf(tui);
+ uv_sleep(100); // typically either 100 or 200 in terminfo. 100 seems enough
+
+ out(tui, S_LEN("\x1b[?5l"));
+ }
+ flush_buf(tui);
}
void tui_default_colors_set(TUIData *tui, Integer rgb_fg, Integer rgb_bg, Integer rgb_sp,
@@ -1604,18 +1585,13 @@ void tui_flush(TUIData *tui)
/// Dumps termcap info to the messages area, if 'verbose' >= 3.
static void show_verbose_terminfo(TUIData *tui)
{
- const unibi_term *const ut = tui->ut;
- if (!ut) {
- abort();
- }
-
MAXSIZE_TEMP_ARRAY(chunks, 3);
MAXSIZE_TEMP_ARRAY(title, 2);
ADD_C(title, CSTR_AS_OBJ("\n\n--- Terminal info --- {{{\n"));
ADD_C(title, CSTR_AS_OBJ("Title"));
ADD_C(chunks, ARRAY_OBJ(title));
MAXSIZE_TEMP_ARRAY(info, 1);
- String str = terminfo_info_msg(ut, tui->term);
+ String str = terminfo_info_msg(&tui->ti, tui->term);
ADD_C(info, STRING_OBJ(str));
ADD_C(chunks, ARRAY_OBJ(info));
MAXSIZE_TEMP_ARRAY(end_fold, 2);
@@ -1666,21 +1642,32 @@ static void tui_suspend_cb(TUIData *tui)
void tui_set_title(TUIData *tui, String title)
{
- if (tui->unibi_ext.set_title == -1) {
+ if (!tui->can_set_title) {
return;
}
- if (title.size > 0) {
+
+ bool too_long = (title.size > 4096); // should be enough
+ if (too_long) {
+ ELOG("set_title: title string too long!");
+ }
+ if (title.size > 0 && !too_long) {
if (!tui->title_enabled) {
// Save title/icon to the "stack". #4063
- unibi_out_ext(tui, tui->unibi_ext.save_title);
+ out(tui, S_LEN("\x1b[22;0t"));
tui->title_enabled = true;
}
- UNIBI_SET_NUM_VAR(tui->params[0], 0);
- UNIBI_SET_STR_VAR(tui->params[1], title.data);
- unibi_out_ext(tui, tui->unibi_ext.set_title);
+
+ if ((sizeof tui->buf - tui->bufpos) < title.size + 2 * TERMINFO_SEQ_LIMIT) {
+ // The sequence to set title, is usually an OSC sequence that cannot be cut in half.
+ // flush buffer prior to printing to avoid this
+ flush_buf(tui);
+ }
+ terminfo_out(tui, kTerm_to_status_line);
+ out(tui, title.data, title.size);
+ terminfo_out(tui, kTerm_from_status_line);
} else if (tui->title_enabled) {
// Restore title/icon from the "stack". #4063
- unibi_out_ext(tui, tui->unibi_ext.restore_title);
+ out(tui, S_LEN("\x1b[23;0t"));
tui->title_enabled = false;
}
}
@@ -1703,7 +1690,7 @@ void tui_screenshot(TUIData *tui, String path)
tui->screenshot = f;
fprintf(f, "%d,%d\n", grid->height, grid->width);
- unibi_out(tui, unibi_clear_screen);
+ terminfo_out(tui, kTerm_clear_screen);
for (int i = 0; i < grid->height; i++) {
cursor_goto(tui, i, 0);
for (int j = 0; j < grid->width; j++) {
@@ -1828,22 +1815,12 @@ static void invalidate(TUIData *tui, int top, int bot, int left, int right)
}
}
-static void ensure_space_buf_size(TUIData *tui, size_t len)
-{
- if (len > tui->space_buf_len) {
- tui->space_buf = xrealloc(tui->space_buf, len);
- memset(tui->space_buf + tui->space_buf_len, ' ', len - tui->space_buf_len);
- tui->space_buf_len = len;
- }
-}
-
void tui_set_size(TUIData *tui, int width, int height)
FUNC_ATTR_NONNULL_ALL
{
tui->pending_resize_events++;
tui->width = width;
tui->height = height;
- ensure_space_buf_size(tui, (size_t)tui->width);
ui_client_set_size(width, height);
}
@@ -1873,8 +1850,8 @@ void tui_guess_size(TUIData *tui)
}
// 3 - read from terminfo if available
- height = unibi_get_num(tui->ut, unibi_lines);
- width = unibi_get_num(tui->ut, unibi_columns);
+ height = tui->ti.lines;
+ width = tui->ti.columns;
end:
if (width <= 0 || height <= 0) {
@@ -1889,73 +1866,11 @@ void tui_guess_size(TUIData *tui)
xfree(columns);
}
-static void unibi_goto(TUIData *tui, int row, int col)
-{
- UNIBI_SET_NUM_VAR(tui->params[0], row);
- UNIBI_SET_NUM_VAR(tui->params[1], col);
- unibi_out(tui, unibi_cursor_address);
-}
-
-#define UNIBI_OUT(fn, name_fn) \
- do { \
- const char *str = NULL; \
- if (unibi_index >= 0) { \
- str = fn(tui->ut, (unsigned)unibi_index); \
- } \
- if (str) { \
- unibi_var_t vars[26 + 26]; \
- unibi_var_t params[9]; \
- size_t orig_pos = tui->bufpos; \
- memset(&vars, 0, sizeof(vars)); \
- tui->cork = true; \
-retry: \
- /* Copy parameters on every retry, as unibi_format() may modify them. */ \
- memcpy(params, tui->params, sizeof(params)); \
- unibi_format(vars, vars + 26, str, params, out, tui, pad, tui); \
- if (tui->overflow) { \
- tui->bufpos = orig_pos; \
- if (orig_pos > 0) { \
- flush_buf(tui); \
- orig_pos = 0; \
- goto retry; \
- } else { /* orig_pos == 0 */ \
- /* There's nothing to flush and retrying won't work. */ \
- ELOG("TUI: escape sequence for %s too long", name_fn(unibi_index)); \
- tui->overflow = false; \
- } \
- } \
- tui->cork = false; \
- } \
- } while (0)
-static void unibi_out(TUIData *tui, int unibi_index)
-{
-#define UNIBI_NAME_STR(i) unibi_name_str((unsigned)(i))
- UNIBI_OUT(unibi_get_str, UNIBI_NAME_STR);
-#undef UNIBI_NAME_STR
-}
-static void unibi_out_ext(TUIData *tui, int unibi_index)
-{
-#define UNIBI_GET_EXT_STR_NAME(i) unibi_get_ext_str_name(tui->ut, (unsigned)(i))
- UNIBI_OUT(unibi_get_ext_str, UNIBI_GET_EXT_STR_NAME);
-#undef UNIBI_GET_EXT_STR_NAME
-}
-#undef UNIBI_OUT
-
-static void out(void *ctx, const char *str, size_t len)
-{
- TUIData *tui = ctx;
+static void out(TUIData *tui, const char *str, size_t len)
+{
size_t available = sizeof(tui->buf) - tui->bufpos;
- if (tui->cork && tui->overflow) {
- return;
- }
-
if (len > available) {
- if (tui->cork) {
- // Called by unibi_format(): avoid flush_buf() halfway an escape sequence.
- tui->overflow = true;
- return;
- }
flush_buf(tui);
if (len > sizeof(tui->buf)) {
// Don't use tui->buf[] when the string to output is too long. #30794
@@ -1970,87 +1885,111 @@ static void out(void *ctx, const char *str, size_t len)
tui->bufpos += len;
}
-/// Called by unibi_format() for padding instructions.
-/// The following parameter descriptions are extracted from unibi_format(3) and terminfo(5).
-///
-/// @param ctx the same as `ctx2` passed to unibi_format()
-/// @param delay the delay in tenths of milliseconds
-/// @param scale padding is proportional to the number of lines affected
-/// @param force padding is mandatory
-static void pad(void *ctx, size_t delay, int scale FUNC_ATTR_UNUSED, int force)
+static void out_len(TUIData *tui, const char *str)
{
- if (!force) {
- return;
+ if (str != NULL) {
+ out(tui, str, strlen(str));
}
+}
- TUIData *tui = ctx;
+/// drops the entire message if it doesn't fit in "limit"
+void out_printf(TUIData *tui, size_t limit, const char *fmt, ...)
+ FUNC_ATTR_PRINTF(3, 4)
+{
+ assert(limit <= sizeof(tui->buf));
+ size_t available = sizeof(tui->buf) - tui->bufpos;
+ if (available < limit) {
+ flush_buf(tui);
+ }
- if (tui->overflow) {
- return;
+ va_list ap;
+ va_start(ap, fmt);
+ int printed = vsnprintf(tui->buf + tui->bufpos, limit, fmt, ap);
+ va_end(ap);
+
+ if (printed > 0) {
+ tui->bufpos += (size_t)printed;
}
+}
- flush_buf(tui);
- uv_sleep((unsigned)(delay/10));
+static void terminfo_out(TUIData *tui, TerminfoDef what)
+{
+ TPVAR null_params[9] = { 0 };
+ terminfo_print(tui, what, null_params);
}
-static void unibi_set_if_empty(unibi_term *ut, enum unibi_string str, const char *val)
+static void terminfo_print_num(TUIData *tui, TerminfoDef what, int num1, int num2, int num3)
{
- if (!unibi_get_str(ut, str)) {
- unibi_set_str(ut, str, val);
- }
+ TPVAR params[9] = { 0 };
+ params[0].num = num1;
+ params[1].num = num2;
+ params[2].num = num3;
+ terminfo_print(tui, what, params);
}
-static int unibi_find_ext_str(unibi_term *ut, const char *name)
+static void terminfo_print(TUIData *tui, TerminfoDef what, TPVAR *params)
{
- size_t max = unibi_count_ext_str(ut);
- for (size_t i = 0; i < max; i++) {
- const char *n = unibi_get_ext_str_name(ut, i);
- if (n && 0 == strcmp(n, name)) {
- return (int)i;
+ if (what >= kTermCount) {
+ abort();
+ }
+
+ const char *str = tui->ti.defs[what];
+ if (str == NULL || *str == NUL) {
+ return;
+ }
+
+ if (sizeof(tui->buf) - tui->bufpos > TERMINFO_SEQ_LIMIT) {
+ TPVAR copy_params[9];
+ memcpy(copy_params, params, sizeof copy_params);
+ size_t len = terminfo_fmt(tui->buf + tui->bufpos, tui->buf + sizeof(tui->buf), str,
+ copy_params);
+ if (len > 0) {
+ tui->bufpos += len;
+ return;
}
}
- return -1;
-}
-static int unibi_find_ext_bool(unibi_term *ut, const char *name)
+ // try again with fresh buffer
+ flush_buf(tui);
+ size_t len = terminfo_fmt(tui->buf + tui->bufpos, tui->buf + sizeof(tui->buf), str, params);
+ if (len > 0) {
+ tui->bufpos += len;
+ }
+}
+static void terminfo_set_if_empty(TUIData *tui, TerminfoDef str, const char *val)
{
- size_t max = unibi_count_ext_bool(ut);
- for (size_t i = 0; i < max; i++) {
- const char *n = unibi_get_ext_bool_name(ut, i);
- if (n && 0 == strcmp(n, name)) {
- return (int)i;
- }
+ if (!tui->ti.defs[str]) {
+ tui->ti.defs[str] = val;
}
- return -1;
+}
+
+static void terminfo_set_str(TUIData *tui, TerminfoDef str, const char *val)
+{
+ tui->ti.defs[str] = val;
}
/// Determine if the terminal supports truecolor or not.
///
+/// note: We get another chance at detecting these in the nvim server process, see
+/// the use of vim.termcap in runtime/lua/vim/_defaults.lua
+///
/// If terminfo contains Tc, RGB, or both setrgbf and setrgbb capabilities, return true.
static bool term_has_truecolor(TUIData *tui, const char *colorterm)
{
- // Check for Tc or RGB
- for (size_t i = 0; i < unibi_count_ext_bool(tui->ut); i++) {
- const char *n = unibi_get_ext_bool_name(tui->ut, i);
- if (n && (!strcmp(n, "Tc") || !strcmp(n, "RGB"))) {
- return true;
- }
+ // Check $COLORTERM
+ if (strequal(colorterm, "truecolor") || strequal(colorterm, "24bit")) {
+ return true;
}
- // Check for setrgbf and setrgbb
- bool setrgbf = false;
- bool setrgbb = false;
- for (size_t i = 0; i < unibi_count_ext_str(tui->ut) && (!setrgbf || !setrgbb); i++) {
- const char *n = unibi_get_ext_str_name(tui->ut, i);
- if (n) {
- if (!setrgbf && !strcmp(n, "setrgbf")) {
- setrgbf = true;
- } else if (!setrgbb && !strcmp(n, "setrgbb")) {
- setrgbb = true;
- }
- }
+ if (tui->ti.has_Tc_or_RGB) {
+ // terminfo had one of "Tc" or "RGB" extended boolean capabilities
+ return true;
}
+ // Check for setrgbf and setrgbb
+ bool setrgbf = tui->ti.defs[kTerm_set_rgb_foreground];
+ bool setrgbb = tui->ti.defs[kTerm_set_rgb_background];
+
return setrgbf && setrgbb;
}
@@ -2060,7 +1999,6 @@ static bool term_has_truecolor(TUIData *tui, const char *colorterm)
static void patch_terminfo_bugs(TUIData *tui, const char *term, const char *colorterm,
int vte_version, int konsolev, bool iterm_env, bool nsterm)
{
- unibi_term *ut = tui->ut;
char *xterm_version = os_getenv("XTERM_VERSION");
bool xterm = terminfo_is_term_family(term, "xterm")
// Treat Terminal.app as generic xterm-like, for now.
@@ -2091,7 +2029,7 @@ static void patch_terminfo_bugs(TUIData *tui, const char *term, const char *colo
bool true_xterm = xterm && !!xterm_version && !bsdvt;
bool cygwin = terminfo_is_term_family(term, "cygwin");
- char *fix_normal = (char *)unibi_get_str(ut, unibi_cursor_normal);
+ const char *fix_normal = tui->ti.defs[kTerm_cursor_normal];
if (fix_normal) {
if (STARTS_WITH(fix_normal, "\x1b[?12l")) {
// terminfo typically includes DECRST 12 as part of setting up the
@@ -2099,7 +2037,7 @@ static void patch_terminfo_bugs(TUIData *tui, const char *term, const char *colo
// set_cursor_style. When DECRST 12 is present, skip over it, but honor
// the rest of the cnorm setting.
fix_normal += sizeof "\x1b[?12l" - 1;
- unibi_set_str(ut, unibi_cursor_normal, fix_normal);
+ terminfo_set_str(tui, kTerm_cursor_normal, fix_normal);
}
if (linuxvt
&& strlen(fix_normal) >= (sizeof LINUXSET0C - 1)
@@ -2108,10 +2046,12 @@ static void patch_terminfo_bugs(TUIData *tui, const char *term, const char *colo
// The Linux terminfo entry similarly includes a Linux-idiosyncractic
// cursor shape reset in cnorm, which similarly interferes with
// set_cursor_style.
- fix_normal[strlen(fix_normal) - (sizeof LINUXSET0C - 1)] = 0;
+ char *new_normal = arena_memdupz(&tui->ti_arena, fix_normal,
+ strlen(fix_normal) - (sizeof LINUXSET0C - 1));
+ terminfo_set_str(tui, kTerm_cursor_normal, new_normal);
}
}
- char *fix_invisible = (char *)unibi_get_str(ut, unibi_cursor_invisible);
+ const char *fix_invisible = tui->ti.defs[kTerm_cursor_invisible];
if (fix_invisible) {
if (linuxvt
&& strlen(fix_invisible) >= (sizeof LINUXSET1C - 1)
@@ -2120,13 +2060,15 @@ static void patch_terminfo_bugs(TUIData *tui, const char *term, const char *colo
// The Linux terminfo entry similarly includes a Linux-idiosyncractic
// cursor shape reset in cinvis, which similarly interferes with
// set_cursor_style.
- fix_invisible[strlen(fix_invisible) - (sizeof LINUXSET1C - 1)] = 0;
+ char *new_invisible = arena_memdupz(&tui->ti_arena, fix_invisible,
+ strlen(fix_invisible) - (sizeof LINUXSET1C - 1));
+ terminfo_set_str(tui, kTerm_cursor_invisible, new_invisible);
}
}
if (tmux || screen || kitty) {
// Disable BCE in some cases we know it is not working. #8806
- unibi_set_bool(ut, unibi_back_color_erase, false);
+ tui->ti.bce = false;
}
if (xterm || hterm) {
@@ -2140,62 +2082,51 @@ static void patch_terminfo_bugs(TUIData *tui, const char *term, const char *colo
// 2017-04 terminfo.src lacks these. Xterm-likes have them.
if (!hterm) {
// hterm doesn't have a status line.
- unibi_set_if_empty(ut, unibi_to_status_line, "\x1b]0;");
- unibi_set_if_empty(ut, unibi_from_status_line, "\x07");
- // TODO(aktau): patch this in when DECSTBM is fixed (https://crbug.com/1298796)
- unibi_set_if_empty(ut, unibi_set_tb_margin, "\x1b[%i%p1%d;%p2%dr");
+ terminfo_set_if_empty(tui, kTerm_to_status_line, "\x1b]0;");
+ terminfo_set_if_empty(tui, kTerm_from_status_line, "\x07");
}
- unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m");
- unibi_set_if_empty(ut, unibi_exit_italics_mode, "\x1b[23m");
+ terminfo_set_if_empty(tui, kTerm_enter_italics_mode, "\x1b[3m");
// 2025: This are not supported by all xterm-alikes, but it is only
// used when kTermModeLeftAndRightMargins is detected
- unibi_set_if_empty(ut, unibi_set_lr_margin, "\x1b[%i%p1%d;%p2%ds");
+ terminfo_set_if_empty(tui, kTerm_set_lr_margin, "\x1b[%i%p1%d;%p2%ds");
#ifdef MSWIN
// XXX: workaround libuv implicit LF => CRLF conversion. #10558
- unibi_set_str(ut, unibi_cursor_down, "\x1b[B");
+ terminfo_set_str(tui, kTerm_cursor_down, "\x1b[B");
#endif
} else if (rxvt) {
// 2017-04 terminfo.src lacks these. Unicode rxvt has them.
- unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m");
- unibi_set_if_empty(ut, unibi_exit_italics_mode, "\x1b[23m");
- unibi_set_if_empty(ut, unibi_to_status_line, "\x1b]2");
- unibi_set_if_empty(ut, unibi_from_status_line, "\x07");
+ terminfo_set_if_empty(tui, kTerm_enter_italics_mode, "\x1b[3m");
+ terminfo_set_if_empty(tui, kTerm_to_status_line, "\x1b]2");
+ terminfo_set_if_empty(tui, kTerm_from_status_line, "\x07");
// 2017-04 terminfo.src has older control sequences.
- unibi_set_str(ut, unibi_enter_ca_mode, "\x1b[?1049h");
- unibi_set_str(ut, unibi_exit_ca_mode, "\x1b[?1049l");
+ terminfo_set_str(tui, kTerm_enter_ca_mode, "\x1b[?1049h");
+ terminfo_set_str(tui, kTerm_exit_ca_mode, "\x1b[?1049l");
} else if (screen) {
// per the screen manual; 2017-04 terminfo.src lacks these.
- unibi_set_if_empty(ut, unibi_to_status_line, "\x1b_");
- unibi_set_if_empty(ut, unibi_from_status_line, "\x1b\\");
+ terminfo_set_if_empty(tui, kTerm_to_status_line, "\x1b_");
+ terminfo_set_if_empty(tui, kTerm_from_status_line, "\x1b\\");
} else if (tmux) {
- unibi_set_if_empty(ut, unibi_to_status_line, "\x1b_");
- unibi_set_if_empty(ut, unibi_from_status_line, "\x1b\\");
- unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m");
- unibi_set_if_empty(ut, unibi_exit_italics_mode, "\x1b[23m");
+ terminfo_set_if_empty(tui, kTerm_to_status_line, "\x1b_");
+ terminfo_set_if_empty(tui, kTerm_from_status_line, "\x1b\\");
+ terminfo_set_if_empty(tui, kTerm_enter_italics_mode, "\x1b[3m");
} else if (terminfo_is_term_family(term, "interix")) {
// 2017-04 terminfo.src lacks this.
- unibi_set_if_empty(ut, unibi_carriage_return, "\x0d");
+ terminfo_set_if_empty(tui, kTerm_carriage_return, "\x0d");
} else if (linuxvt) {
- unibi_set_if_empty(ut, unibi_parm_up_cursor, "\x1b[%p1%dA");
- unibi_set_if_empty(ut, unibi_parm_down_cursor, "\x1b[%p1%dB");
- unibi_set_if_empty(ut, unibi_parm_right_cursor, "\x1b[%p1%dC");
- unibi_set_if_empty(ut, unibi_parm_left_cursor, "\x1b[%p1%dD");
+ terminfo_set_if_empty(tui, kTerm_parm_up_cursor, "\x1b[%p1%dA");
+ terminfo_set_if_empty(tui, kTerm_parm_down_cursor, "\x1b[%p1%dB");
+ terminfo_set_if_empty(tui, kTerm_parm_right_cursor, "\x1b[%p1%dC");
+ terminfo_set_if_empty(tui, kTerm_parm_left_cursor, "\x1b[%p1%dD");
} else if (putty) {
// No bugs in the vanilla terminfo for our purposes.
} else if (iterm) {
// 2017-04 terminfo.src has older control sequences.
- unibi_set_str(ut, unibi_enter_ca_mode, "\x1b[?1049h");
- unibi_set_str(ut, unibi_exit_ca_mode, "\x1b[?1049l");
+ terminfo_set_str(tui, kTerm_enter_ca_mode, "\x1b[?1049h");
+ terminfo_set_str(tui, kTerm_exit_ca_mode, "\x1b[?1049l");
// 2017-04 terminfo.src lacks these.
- unibi_set_if_empty(ut, unibi_set_tb_margin, "\x1b[%i%p1%d;%p2%dr");
- unibi_set_if_empty(ut, unibi_orig_pair, "\x1b[39;49m");
- unibi_set_if_empty(ut, unibi_enter_dim_mode, "\x1b[2m");
- unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m");
- unibi_set_if_empty(ut, unibi_exit_italics_mode, "\x1b[23m");
- unibi_set_if_empty(ut, unibi_exit_underline_mode, "\x1b[24m");
- unibi_set_if_empty(ut, unibi_exit_standout_mode, "\x1b[27m");
+ terminfo_set_if_empty(tui, kTerm_enter_italics_mode, "\x1b[3m");
} else if (st) {
// No bugs in the vanilla terminfo for our purposes.
}
@@ -2222,42 +2153,41 @@ static void patch_terminfo_bugs(TUIData *tui, const char *term, const char *colo
"\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e39%;m"
// Terminals with 256-colour SGR support despite what terminfo says.
- if (unibi_get_num(ut, unibi_max_colors) < 256) {
+ if (tui->ti.max_colors < 256) {
// See http://fedoraproject.org/wiki/Features/256_Color_Terminals
if (true_xterm || iterm || iterm_pretending_xterm) {
- unibi_set_num(ut, unibi_max_colors, 256);
- unibi_set_str(ut, unibi_set_a_foreground, XTERM_SETAF_256_COLON);
- unibi_set_str(ut, unibi_set_a_background, XTERM_SETAB_256_COLON);
+ tui->ti.max_colors = 256;
+ terminfo_set_str(tui, kTerm_set_a_foreground, XTERM_SETAF_256_COLON);
+ terminfo_set_str(tui, kTerm_set_a_background, XTERM_SETAB_256_COLON);
} else if (konsolev || xterm || gnome || rxvt || st || putty
|| linuxvt // Linux 4.8+ supports 256-colour SGR.
|| mate_pretending_xterm || gnome_pretending_xterm
|| tmux
|| (colorterm && strstr(colorterm, "256"))
|| (term && strstr(term, "256"))) {
- unibi_set_num(ut, unibi_max_colors, 256);
- unibi_set_str(ut, unibi_set_a_foreground, XTERM_SETAF_256);
- unibi_set_str(ut, unibi_set_a_background, XTERM_SETAB_256);
+ tui->ti.max_colors = 256;
+ terminfo_set_str(tui, kTerm_set_a_foreground, XTERM_SETAF_256);
+ terminfo_set_str(tui, kTerm_set_a_background, XTERM_SETAB_256);
}
}
// Terminals with 16-colour SGR support despite what terminfo says.
- if (unibi_get_num(ut, unibi_max_colors) < 16) {
+ if (tui->ti.max_colors < 16) {
if (colorterm) {
- unibi_set_num(ut, unibi_max_colors, 16);
- unibi_set_if_empty(ut, unibi_set_a_foreground, XTERM_SETAF_16);
- unibi_set_if_empty(ut, unibi_set_a_background, XTERM_SETAB_16);
+ tui->ti.max_colors = 16;
+ terminfo_set_if_empty(tui, kTerm_set_a_foreground, XTERM_SETAF_16);
+ terminfo_set_if_empty(tui, kTerm_set_a_background, XTERM_SETAB_16);
}
}
// Blacklist of terminals that cannot be trusted to report DECSCUSR support.
- if (!(st || (vte_version != 0 && vte_version < 3900) || konsolev)) {
- tui->unibi_ext.reset_cursor_style = unibi_find_ext_str(ut, "Se");
- tui->unibi_ext.set_cursor_style = unibi_find_ext_str(ut, "Ss");
+ if ((st || (vte_version != 0 && vte_version < 3900) || konsolev)) {
+ tui->ti.defs[kTerm_reset_cursor_style] = NULL;
}
// Dickey ncurses terminfo includes Ss/Se capabilities since 2011-07-14. So
// adding them to terminal types, that have such control sequences but lack
// the correct terminfo entries, is a fixup, not an augmentation.
- if (-1 == tui->unibi_ext.set_cursor_style) {
+ if (tui->ti.defs[kTerm_set_cursor_style] == NULL) {
// DECSCUSR (cursor shape) is widely supported.
// https://github.com/gnachman/iTerm2/pull/92
if ((!bsdvt && (!konsolev || konsolev >= 180770))
@@ -2283,72 +2213,56 @@ static void patch_terminfo_bugs(TUIData *tui, const char *term, const char *colo
// Example: console-terminal-emulator from the nosh toolset.
|| (linuxvt
&& (xterm_version || (vte_version > 0) || colorterm)))) {
- tui->unibi_ext.set_cursor_style =
- (int)unibi_add_ext_str(ut, "Ss", "\x1b[%p1%d q");
- if (-1 == tui->unibi_ext.reset_cursor_style) {
- tui->unibi_ext.reset_cursor_style = (int)unibi_add_ext_str(ut, "Se",
- "");
- }
- unibi_set_ext_str(ut, (size_t)tui->unibi_ext.reset_cursor_style,
- "\x1b[ q");
+ terminfo_set_str(tui, kTerm_set_cursor_style, "\x1b[%p1%d q");
+ terminfo_set_str(tui, kTerm_reset_cursor_style, "\x1b[ q");
} else if (linuxvt) {
// Linux uses an idiosyncratic escape code to set the cursor shape and
// does not support DECSCUSR.
// See http://linuxgazette.net/137/anonymous.html for more info
- tui->unibi_ext.set_cursor_style = (int)unibi_add_ext_str(ut, "Ss",
- "\x1b[?"
- "%?"
- // The parameter passed to Ss is the DECSCUSR parameter, so the
- // terminal capability has to translate into the Linux idiosyncratic
- // parameter.
- //
- // linuxvt only supports block and underline. It is also only
- // possible to have a steady block (no steady underline)
- "%p1%{2}%<" "%t%{8}" // blink block
- "%e%p1%{2}%=" "%t%{112}" // steady block
- "%e%p1%{3}%=" "%t%{4}" // blink underline (set to half block)
- "%e%p1%{4}%=" "%t%{4}" // steady underline
- "%e%p1%{5}%=" "%t%{2}" // blink bar (set to underline)
- "%e%p1%{6}%=" "%t%{2}" // steady bar
- "%e%{0}" // anything else
- "%;" "%dc");
- if (-1 == tui->unibi_ext.reset_cursor_style) {
- tui->unibi_ext.reset_cursor_style = (int)unibi_add_ext_str(ut, "Se",
- "");
- }
- unibi_set_ext_str(ut, (size_t)tui->unibi_ext.reset_cursor_style,
- "\x1b[?c");
+ terminfo_set_str(tui, kTerm_set_cursor_style,
+ "\x1b[?"
+ "%?"
+ // The parameter passed to Ss is the DECSCUSR parameter, so the
+ // terminal capability has to translate into the Linux idiosyncratic
+ // parameter.
+ //
+ // linuxvt only supports block and underline. It is also only
+ // possible to have a steady block (no steady underline)
+ "%p1%{2}%<" "%t%{8}" // blink block
+ "%e%p1%{2}%=" "%t%{112}" // steady block
+ "%e%p1%{3}%=" "%t%{4}" // blink underline (set to half block)
+ "%e%p1%{4}%=" "%t%{4}" // steady underline
+ "%e%p1%{5}%=" "%t%{2}" // blink bar (set to underline)
+ "%e%p1%{6}%=" "%t%{2}" // steady bar
+ "%e%{0}" // anything else
+ "%;" "%dc");
+ terminfo_set_str(tui, kTerm_reset_cursor_style, "\x1b[?c");
} else if (konsolev > 0 && konsolev < 180770) {
// Konsole before version 18.07.70: set up a nonce profile. This has
// side effects on temporary font resizing. #6798
- tui->unibi_ext.set_cursor_style = (int)unibi_add_ext_str(ut, "Ss",
- TMUX_WRAP(tmux,
- "\x1b]50;CursorShape=%?"
- "%p1%{3}%<" "%t%{0}" // block
- "%e%p1%{5}%<" "%t%{2}" // underline
- "%e%{1}" // everything else is bar
- "%;%d;BlinkingCursorEnabled=%?"
- "%p1%{1}%<" "%t%{1}" // Fortunately if we exclude zero as special,
- "%e%p1%{1}%&" // in all other cases we can treat bit #0 as a flag.
- "%;%d\x07"));
- if (-1 == tui->unibi_ext.reset_cursor_style) {
- tui->unibi_ext.reset_cursor_style = (int)unibi_add_ext_str(ut, "Se",
- "");
- }
- unibi_set_ext_str(ut, (size_t)tui->unibi_ext.reset_cursor_style,
- "\x1b]50;\x07");
+ terminfo_set_str(tui, kTerm_set_cursor_style,
+ TMUX_WRAP(tmux,
+ "\x1b]50;CursorShape=%?"
+ "%p1%{3}%<" "%t%{0}" // block
+ "%e%p1%{5}%<" "%t%{2}" // underline
+ "%e%{1}" // everything else is bar
+ "%;%d;BlinkingCursorEnabled=%?"
+ "%p1%{1}%<" "%t%{1}" // Fortunately if we exclude zero as special,
+ "%e%p1%{1}%&" // in all other cases we can treat bit #0 as a flag.
+ "%;%d\x07"));
+ terminfo_set_str(tui, kTerm_reset_cursor_style, "\x1b]50;\x07");
+ } else {
+ tui->ti.defs[kTerm_reset_cursor_style] = NULL;
}
}
xfree(xterm_version);
}
-/// This adds stuff that is not in standard terminfo as extended unibilium
-/// capabilities.
+/// This adds stuff that is not in standard terminfo.
static void augment_terminfo(TUIData *tui, const char *term, int vte_version, int konsolev,
const char *weztermv, bool iterm_env, bool nsterm)
{
- unibi_term *ut = tui->ut;
char *xterm_version = os_getenv("XTERM_VERSION");
bool xterm = terminfo_is_term_family(term, "xterm")
// Treat Terminal.app as generic xterm-like, for now.
@@ -2379,24 +2293,16 @@ static void augment_terminfo(TUIData *tui, const char *term, int vte_version, in
|| konsolev // per commentary in VT102Emulation.cpp
|| teraterm // per TeraTerm "Supported Control Functions" doco
|| rxvt) { // per command.C
- tui->unibi_ext.resize_screen = (int)unibi_add_ext_str(ut,
- "ext.resize_screen",
- "\x1b[8;%p1%d;%p2%dt");
+ tui->can_resize_screen = true;
}
+
if (putty || xterm || hterm || rxvt) {
- tui->unibi_ext.reset_scroll_region = (int)unibi_add_ext_str(ut,
- "ext.reset_scroll_region",
- "\x1b[r");
+ tui->terminfo_ext.reset_scroll_region = "\x1b[r";
}
- // terminfo describes strikethrough modes as rmxx/smxx with respect
- // to the ECMA-48 strikeout/crossed-out attributes.
- tui->unibi_ext.enter_strikethrough_mode = unibi_find_ext_str(ut, "smxx");
-
// It should be pretty safe to always enable this, as terminals will ignore
// unrecognised SGR numbers.
- tui->unibi_ext.enter_altfont_mode = (int)unibi_add_ext_str(ut, "ext.enter_altfont_mode",
- "\x1b[11m");
+ tui->terminfo_ext.enter_altfont_mode = "\x1b[11m";
// Dickey ncurses terminfo does not include the setrgbf and setrgbb
// capabilities, proposed by RĂ¼diger Sonderfeld on 2013-10-15. Adding
@@ -2416,94 +2322,61 @@ static void augment_terminfo(TUIData *tui, const char *term, int vte_version, in
// per http://invisible-island.net/xterm/xterm.log.html#xterm_282
|| true_xterm);
- tui->unibi_ext.set_rgb_foreground = unibi_find_ext_str(ut, "setrgbf");
- if (-1 == tui->unibi_ext.set_rgb_foreground) {
+ if (tui->ti.defs[kTerm_set_rgb_foreground] == NULL) {
if (has_colon_rgb) {
- tui->unibi_ext.set_rgb_foreground = (int)unibi_add_ext_str(ut, "setrgbf",
- "\x1b[38:2:%p1%d:%p2%d:%p3%dm");
+ tui->ti.defs[kTerm_set_rgb_foreground] = "\x1b[38:2:%p1%d:%p2%d:%p3%dm";
} else {
- tui->unibi_ext.set_rgb_foreground = (int)unibi_add_ext_str(ut, "setrgbf",
- "\x1b[38;2;%p1%d;%p2%d;%p3%dm");
+ tui->ti.defs[kTerm_set_rgb_foreground] = "\x1b[38;2;%p1%d;%p2%d;%p3%dm";
}
}
- tui->unibi_ext.set_rgb_background = unibi_find_ext_str(ut, "setrgbb");
- if (-1 == tui->unibi_ext.set_rgb_background) {
+ if (tui->ti.defs[kTerm_set_rgb_background] == NULL) {
if (has_colon_rgb) {
- tui->unibi_ext.set_rgb_background = (int)unibi_add_ext_str(ut, "setrgbb",
- "\x1b[48:2:%p1%d:%p2%d:%p3%dm");
+ tui->ti.defs[kTerm_set_rgb_background] = "\x1b[48:2:%p1%d:%p2%d:%p3%dm";
} else {
- tui->unibi_ext.set_rgb_background = (int)unibi_add_ext_str(ut, "setrgbb",
- "\x1b[48;2;%p1%d;%p2%d;%p3%dm");
+ tui->ti.defs[kTerm_set_rgb_background] = "\x1b[48;2;%p1%d;%p2%d;%p3%dm";
}
}
- tui->unibi_ext.set_cursor_color = unibi_find_ext_str(ut, "Cs");
- if (-1 == tui->unibi_ext.set_cursor_color) {
+ if (tui->ti.defs[kTerm_set_cursor_color] == NULL) {
if (iterm || iterm_pretending_xterm) {
// FIXME: Bypassing tmux like this affects the cursor colour globally, in
// all panes, which is not particularly desirable. A better approach
// would use a tmux control sequence and an extra if(screen) test.
- tui->unibi_ext.set_cursor_color =
- (int)unibi_add_ext_str(ut, NULL, TMUX_WRAP(tmux, "\033]Pl%p1%06x\033\\"));
+ tui->ti.defs[kTerm_set_cursor_color] = TMUX_WRAP(tmux, "\033]Pl%p1%06x\033\\");
} else if ((xterm || hterm || rxvt || tmux || alacritty || st)
&& (vte_version == 0 || vte_version >= 3900)) {
// Supported in urxvt, newer VTE.
// Supported in st, but currently missing in ncurses definitions. #32217
- tui->unibi_ext.set_cursor_color = (int)unibi_add_ext_str(ut, "ext.set_cursor_color",
- "\033]12;%p1%s\007");
+ tui->ti.defs[kTerm_set_cursor_color] = "\033]12;%p1%s\007";
}
}
- if (-1 != tui->unibi_ext.set_cursor_color) {
+ if (tui->ti.defs[kTerm_set_cursor_color] != NULL) {
// Some terminals supporting cursor color changing specify their Cs
// capability to take a string parameter. Others take a numeric parameter.
// If and only if the format string contains `%s` we assume a string
// parameter. #20628
- const char *set_cursor_color =
- unibi_get_ext_str(ut, (unsigned)tui->unibi_ext.set_cursor_color);
- if (set_cursor_color) {
- tui->set_cursor_color_as_str = strstr(set_cursor_color, "%s") != NULL;
- }
+ tui->set_cursor_color_as_str = strstr(tui->ti.defs[kTerm_set_cursor_color], "%s") != NULL;
- tui->unibi_ext.reset_cursor_color = unibi_find_ext_str(ut, "Cr");
- if (-1 == tui->unibi_ext.reset_cursor_color) {
- tui->unibi_ext.reset_cursor_color = (int)unibi_add_ext_str(ut, "ext.reset_cursor_color",
- "\x1b]112\x07");
- }
+ terminfo_set_if_empty(tui, kTerm_reset_cursor_color, "\x1b]112\x07");
}
- tui->unibi_ext.save_title = (int)unibi_add_ext_str(ut, "ext.save_title", "\x1b[22;0t");
- tui->unibi_ext.restore_title = (int)unibi_add_ext_str(ut, "ext.restore_title", "\x1b[23;0t");
-
- const char *tsl = unibi_get_str(ut, unibi_to_status_line);
- const char *fsl = unibi_get_str(ut, unibi_from_status_line);
- if (tsl != NULL && fsl != NULL) {
- // Add a single extended capability for the whole sequence to set title,
- // as it is usually an OSC sequence that cannot be cut in half.
- // Use %p2 for the title string, as to_status_line may take an argument.
- size_t set_title_len = strlen(tsl) + strlen("%p2%s") + strlen(fsl);
- char *set_title = xmallocz(set_title_len);
- snprintf(set_title, set_title_len + 1, "%s%s%s", tsl, "%p2%s", fsl);
- tui->unibi_ext.set_title = (int)unibi_add_ext_str(ut, "ext.set_title", set_title);
- tui->set_title = set_title;
+ if (tui->ti.defs[kTerm_to_status_line] != NULL && tui->ti.defs[kTerm_from_status_line] != NULL) {
+ tui->can_set_title = true;
}
// For urxvt send BOTH xterm and old urxvt sequences. #8695
- tui->unibi_ext.enable_focus_reporting = (int)unibi_add_ext_str(ut, "ext.enable_focus",
- rxvt
- ? "\x1b[?1004h\x1b]777;focus;on\x7"
- : "\x1b[?1004h");
- tui->unibi_ext.disable_focus_reporting =
- (int)unibi_add_ext_str(ut, "ext.disable_focus",
- rxvt ? "\x1b[?1004l\x1b]777;focus;off\x7" : "\x1b[?1004l");
+ tui->terminfo_ext.enable_focus_reporting =
+ rxvt
+ ? "\x1b[?1004h\x1b]777;focus;on\x7"
+ : "\x1b[?1004h";
+ tui->terminfo_ext.disable_focus_reporting =
+ rxvt ? "\x1b[?1004l\x1b]777;focus;off\x7" : "\x1b[?1004l";
// Extended underline.
// terminfo will have Smulx for this (but no support for colors yet).
- tui->unibi_ext.set_underline_style = unibi_find_ext_str(ut, "Smulx");
- if (tui->unibi_ext.set_underline_style == -1) {
- int ext_bool_Su = unibi_find_ext_bool(ut, "Su"); // used by kitty
+ if (tui->ti.defs[kTerm_set_underline_style] == NULL) {
if (vte_version >= 5102 || konsolev >= 221170
- || (ext_bool_Su != -1 && unibi_get_ext_bool(ut, (size_t)ext_bool_Su))
- || (weztermv != NULL && strcmp(weztermv, "20210203-095643") > 0)) {
+ || tui->ti.Su || (weztermv != NULL && strcmp(weztermv, "20210203-095643") > 0)) {
tui_enable_extended_underline(tui);
}
} else {
@@ -2535,22 +2408,21 @@ static bool should_invisible(TUIData *tui)
static size_t flush_buf_start(TUIData *tui, char *buf, size_t len)
FUNC_ATTR_NONNULL_ALL
{
- unibi_var_t params[9]; // Don't use tui->params[] as they may already be in use.
-
- const char *str = NULL;
- if (tui->sync_output && tui->unibi_ext.sync != -1) {
- UNIBI_SET_NUM_VAR(params[0], 1);
- str = unibi_get_ext_str(tui->ut, (size_t)tui->unibi_ext.sync);
+ if (tui->sync_output && tui->has_sync_mode) {
+ return xstrlcpy(buf, "\x1b?2026h", len);
} else if (!tui->is_invisible) {
- str = unibi_get_str(tui->ut, unibi_cursor_invisible);
tui->is_invisible = true;
- }
- if (str == NULL) {
- return 0;
+ // TODO(bfredl): zero-param terminfo strings should be pre-filtered so we can just
+ // return a cached string here
+ TPVAR null_params[9] = { 0 };
+ const char *str = tui->ti.defs[kTerm_cursor_invisible];
+ if (str != NULL) {
+ return terminfo_fmt(buf, buf + len, str, null_params);
+ }
}
- return unibi_run(str, params, buf, len);
+ return 0;
}
/// Write the sequence to end flushing output to `buf`.
@@ -2562,27 +2434,24 @@ static size_t flush_buf_start(TUIData *tui, char *buf, size_t len)
static size_t flush_buf_end(TUIData *tui, char *buf, size_t len)
FUNC_ATTR_NONNULL_ALL
{
- unibi_var_t params[9]; // Don't use tui->params[] as they may already be in use.
-
size_t offset = 0;
- if (tui->sync_output && tui->unibi_ext.sync != -1) {
- UNIBI_SET_NUM_VAR(params[0], 0);
- const char *str = unibi_get_ext_str(tui->ut, (size_t)tui->unibi_ext.sync);
- offset = unibi_run(str, params, buf, len);
+ if (tui->sync_output && tui->has_sync_mode) {
+#define SYNC_END "\x1b?2026l"
+ memcpy(buf, SYNC_END, sizeof SYNC_END);
+ offset += sizeof SYNC_END - 1;
}
const char *str = NULL;
if (tui->is_invisible && !should_invisible(tui)) {
- str = unibi_get_str(tui->ut, unibi_cursor_normal);
+ str = tui->ti.defs[kTerm_cursor_normal];
tui->is_invisible = false;
} else if (!tui->is_invisible && should_invisible(tui)) {
- str = unibi_get_str(tui->ut, unibi_cursor_invisible);
+ str = tui->ti.defs[kTerm_cursor_invisible];
tui->is_invisible = true;
}
-
+ TPVAR null_params[9] = { 0 };
if (str != NULL) {
- assert(len >= offset);
- offset += unibi_run(str, params, buf + offset, len - offset);
+ offset += terminfo_fmt(buf, buf + len, str, null_params);
}
return offset;
@@ -2625,7 +2494,6 @@ static void flush_buf(TUIData *tui)
}
tui->buf_to_flush = NULL;
tui->bufpos = 0;
- tui->overflow = false;
}
/// Try to get "kbs" code from stty because "the terminfo kbs entry is extremely
diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua
@@ -4005,7 +4005,9 @@ describe('TUI client', function()
screen_client:expect({ any = 'GUI Running: 0' })
if is_os('mac') then
- assert_log('uv_tty_set_mode failed: Unknown system error %-102', testlog)
+ -- this might either be "Unknown system error %-102" or
+ -- "inappropriate ioctl for device" depending on the phase of the moon
+ assert_log('uv_tty_set_mode failed', testlog)
end
end)
@@ -4037,7 +4039,7 @@ describe('TUI client', function()
ffi.C.ui_call_set_title(title)
]=])
screen_client:expect_unchanged()
- assert_log('TUI: escape sequence for ext%.set_title too long', testlog)
+ assert_log('set_title: title string too long!', testlog)
eq(bufname, api.nvim_buf_get_var(0, 'term_title'))
-- Following escape sequences are not affected.