diff --git a/src/gen/gen_terminfo.lua b/src/gen/gen_terminfo.lua index ebb9d2870d..4431389a71 100644 --- a/src/gen/gen_terminfo.lua +++ b/src/gen/gen_terminfo.lua @@ -113,6 +113,8 @@ local wanted_termkeys = { { 'select', false }, { 'suspend', true }, { 'undo', true }, + { 'left', true }, + { 'right', true }, } local db = '/tmp/nvim_terminfo' diff --git a/src/nvim/tui/terminfo_builtin.h b/src/nvim/tui/terminfo_builtin.h index 9e102e9ea3..40c5e9fc1d 100644 --- a/src/nvim/tui/terminfo_builtin.h +++ b/src/nvim/tui/terminfo_builtin.h @@ -1,6 +1,6 @@ // uncrustify:off -// Generated by src/gen/gen_terminfo.lua and ncurses 6.5.20240427 +// Generated by src/gen/gen_terminfo.lua and ncurses 6.6.20251231 #pragma once @@ -79,6 +79,8 @@ static const TerminfoEntry ansi_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033[D", NULL}, + [kTermKey_right] = {"\033[C", NULL}, }, .f_keys = { NULL, @@ -158,6 +160,8 @@ static const TerminfoEntry ghostty_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033OD", "\033[1;2D"}, + [kTermKey_right] = {"\033OC", "\033[1;2C"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -300,6 +304,8 @@ static const TerminfoEntry interix_8colour_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033[D", "\033F\136"}, + [kTermKey_right] = {"\033[C", "\033F$"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -439,6 +445,8 @@ static const TerminfoEntry iterm_256colour_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033OD", "\033[1;2D"}, + [kTermKey_right] = {"\033OC", "\033[1;2C"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -542,6 +550,8 @@ static const TerminfoEntry linux_16colour_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {"^Z", NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033[D", NULL}, + [kTermKey_right] = {"\033[C", NULL}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -641,6 +651,8 @@ static const TerminfoEntry putty_256colour_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {"^Z", NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033OD", NULL}, + [kTermKey_right] = {"\033OC", NULL}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -740,6 +752,8 @@ static const TerminfoEntry rxvt_256colour_terminfo = { [kTermKey_select] = {"\033[4~", NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033[D", "\033[d"}, + [kTermKey_right] = {"\033[C", "\033[c"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -863,6 +877,8 @@ static const TerminfoEntry screen_256colour_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033OD", NULL}, + [kTermKey_right] = {"\033OC", NULL}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -954,6 +970,8 @@ static const TerminfoEntry st_256colour_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033OD", "\033[1;2D"}, + [kTermKey_right] = {"\033OC", "\033[1;2C"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -1096,6 +1114,8 @@ static const TerminfoEntry tmux_256colour_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033OD", "\033[1;2D"}, + [kTermKey_right] = {"\033OC", "\033[1;2C"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -1238,6 +1258,8 @@ static const TerminfoEntry vte_256colour_terminfo = { [kTermKey_select] = {"\033[4~", NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033OD", "\033[1;2D"}, + [kTermKey_right] = {"\033OC", "\033[1;2C"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -1380,6 +1402,8 @@ static const TerminfoEntry xterm_256colour_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033OD", "\033[1;2D"}, + [kTermKey_right] = {"\033OC", "\033[1;2C"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -1522,6 +1546,8 @@ static const TerminfoEntry cygwin_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {"^Z", NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033[D", NULL}, + [kTermKey_right] = {"\033[C", NULL}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -1621,6 +1647,8 @@ static const TerminfoEntry win32con_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {"^Z", NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033[D", "\033[1;2D"}, + [kTermKey_right] = {"\033[C", "\033[1;2C"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -1744,6 +1772,8 @@ static const TerminfoEntry conemu_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033[D", "\033[1;2D"}, + [kTermKey_right] = {"\033[C", "\033[1;2C"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -1868,6 +1898,8 @@ static const TerminfoEntry vtpcon_terminfo = { [kTermKey_select] = {NULL, NULL}, [kTermKey_suspend] = {NULL, NULL}, [kTermKey_undo] = {NULL, NULL}, + [kTermKey_left] = {"\033[D", "\033[1;2D"}, + [kTermKey_right] = {"\033[C", "\033[1;2C"}, }, .f_keys = { // note: offset by one, f_keys[0] is F1 and so on @@ -1989,6 +2021,8 @@ static const TerminfoEntry vtpcon_terminfo = { X(select) \ Y(suspend) \ Y(undo) \ + Y(left) \ + Y(right) \ // end of list #define XLIST_TERMINFO_FKEYS \ diff --git a/src/nvim/tui/terminfo_enum_defs.h b/src/nvim/tui/terminfo_enum_defs.h index 7d3500707d..e4e56dd7c0 100644 --- a/src/nvim/tui/terminfo_enum_defs.h +++ b/src/nvim/tui/terminfo_enum_defs.h @@ -77,5 +77,7 @@ typedef enum { kTermKey_select, kTermKey_suspend, kTermKey_undo, + kTermKey_left, + kTermKey_right, kTermKeyCount, } TerminfoKey; diff --git a/src/nvim/tui/termkey/driver-ti.c b/src/nvim/tui/termkey/driver-ti.c index 5bab3da169..b33087e799 100644 --- a/src/nvim/tui/termkey/driver-ti.c +++ b/src/nvim/tui/termkey/driver-ti.c @@ -52,7 +52,7 @@ static struct { // { KDEF(help), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_HELP, 0 }, { KDEF(home), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_HOME, 0 }, { KDEF(ic), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_INSERT, 0 }, - // { KDEF(left), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_LEFT, 0 }, // redundant: driver-csi + { KDEF(left), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_LEFT, 0 }, // { KDEF(mark), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_MARK, 0 }, // { KDEF(message), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_MESSAGE, 0 }, // { KDEF(move), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_MOVE, 0 }, @@ -69,12 +69,12 @@ static struct { // { KDEF(replace), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_REPLACE, 0 }, // { KDEF(restart), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_RESTART, 0 }, // { KDEF(resume), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_RESUME, 0 }, - // { KDEF(right), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_RIGHT, 0 }, // redundant, driver-csi + { KDEF(right), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_RIGHT, 0 }, // { KDEF(save), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_SAVE, 0 }, { KDEF(select), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_SELECT, 0 }, { KDEF(suspend), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_SUSPEND, 0 }, { KDEF(undo), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_UNDO, 0 }, - // { KDEF(up), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_UP, 0 }, // redundant, driver-ci + // { KDEF(up), TERMKEY_TYPE_KEYSYM, TERMKEY_SYM_UP, 0 }, // redundant, driver-csi { 0, NULL, 0, 0, 0 }, };