diff --git a/scripts/update_terminfo.sh b/scripts/update_terminfo.sh deleted file mode 100755 index 34525dec32..0000000000 --- a/scripts/update_terminfo.sh +++ /dev/null @@ -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 - -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 new file mode 100644 index 0000000000..1fc43c7889 --- /dev/null +++ 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 index 02bb37adb7..4c2eeb6a81 100644 --- 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 index 79a7bde128..0623834fe4 100644 --- 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 index 75c23ba07c..331c7248f2 100644 --- 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"); - } - } - - 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)); - } - } - - 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'); - } - } 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; +} + +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; +} + +static bool ochar(char **buf, const char *buf_end, int c) +{ + if (c == 0) { + c = 0200; + } + // Check we have space and a terminator + if (buf_end - *buf < 2) { + return 0; + } + *(*buf)++ = (char)c; + return 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 index c032566a7e..1d29d033d1 100644 --- a/src/nvim/tui/terminfo.h +++ b/src/nvim/tui/terminfo.h @@ -1,7 +1,23 @@ #pragma once -#include // 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 index 4e8978479d..cdd9e831b5 100644 --- 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 +#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 new file mode 100644 index 0000000000..57348219bd --- /dev/null +++ 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 index a1a9122777..c7bc6b0d1e 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #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); + terminfo_out(tui, kTerm_enter_italics_mode); } - if (altfont && tui->unibi_ext.enter_altfont_mode != -1) { - unibi_out_ext(tui, tui->unibi_ext.enter_altfont_mode); + if (altfont) { + out_len(tui, tui->terminfo_ext.enter_altfont_mode); } - if (strikethrough && tui->unibi_ext.enter_strikethrough_mode != -1) { - unibi_out_ext(tui, tui->unibi_ext.enter_strikethrough_mode); + if (strikethrough) { + terminfo_out(tui, kTerm_enter_strikethrough_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 (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 (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) +static void out(TUIData *tui, const char *str, size_t len) { - 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; 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,86 +1885,110 @@ 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) { + if (str != NULL) { + out(tui, str, strlen(str)); + } +} + +/// 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); + } + + 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; + } +} + +static void terminfo_out(TUIData *tui, TerminfoDef what) +{ + TPVAR null_params[9] = { 0 }; + terminfo_print(tui, what, null_params); +} + +static void terminfo_print_num(TUIData *tui, TerminfoDef what, int num1, int num2, int num3) +{ + TPVAR params[9] = { 0 }; + params[0].num = num1; + params[1].num = num2; + params[2].num = num3; + terminfo_print(tui, what, params); +} + +static void terminfo_print(TUIData *tui, TerminfoDef what, TPVAR *params) +{ + if (what >= kTermCount) { + abort(); + } + + const char *str = tui->ti.defs[what]; + if (str == NULL || *str == NUL) { return; } - TUIData *tui = ctx; - - if (tui->overflow) { - 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; + } } + // try again with fresh buffer flush_buf(tui); - uv_sleep((unsigned)(delay/10)); + size_t len = terminfo_fmt(tui->buf + tui->bufpos, tui->buf + sizeof(tui->buf), str, params); + if (len > 0) { + tui->bufpos += len; + } } - -static void unibi_set_if_empty(unibi_term *ut, enum unibi_string str, const char *val) +static void terminfo_set_if_empty(TUIData *tui, TerminfoDef str, const char *val) { - if (!unibi_get_str(ut, str)) { - unibi_set_str(ut, str, val); + if (!tui->ti.defs[str]) { + tui->ti.defs[str] = val; } } -static int unibi_find_ext_str(unibi_term *ut, const char *name) +static void terminfo_set_str(TUIData *tui, TerminfoDef str, const char *val) { - 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; - } - } - return -1; -} - -static int unibi_find_ext_bool(unibi_term *ut, const char *name) -{ - 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; - } - } - return -1; + 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; + } + + 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 = 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; - } - } - } + 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"); - } - if (putty || xterm || hterm || rxvt) { - tui->unibi_ext.reset_scroll_region = (int)unibi_add_ext_str(ut, - "ext.reset_scroll_region", - "\x1b[r"); + tui->can_resize_screen = true; } - // 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"); + if (putty || xterm || hterm || rxvt) { + tui->terminfo_ext.reset_scroll_region = "\x1b[r"; + } // 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; + + // 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); + } } - if (str == NULL) { - return 0; - } - - 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 index 1adbf5cd96..1df4dcaa06 100644 --- 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.