Add an "always" value to the extended-keys option to always forward

these keys to applications inside tmux.
pull/2755/head
nicm 2021-06-10 07:24:10 +00:00
parent 1ee231956c
commit 64c276c23b
4 changed files with 29 additions and 8 deletions

View File

@ -1390,6 +1390,8 @@ input_csi_dispatch(struct input_ctx *ictx)
case INPUT_CSI_MODSET:
n = input_get(ictx, 0, 0, 0);
m = input_get(ictx, 1, 0, 0);
if (options_get_number(global_options, "extended-keys") == 2)
break;
if (n == 0 || (n == 4 && m == 0))
screen_write_mode_clear(sctx, MODE_KEXTENDED);
else if (n == 4 && (m == 1 || m == 2))

View File

@ -75,6 +75,9 @@ static const char *options_table_remain_on_exit_list[] = {
static const char *options_table_detach_on_destroy_list[] = {
"off", "on", "no-detached", NULL
};
static const char *options_table_extended_keys_list[] = {
"off", "on", "always", NULL
};
/* Status line format. */
#define OPTIONS_TABLE_STATUS_FORMAT1 \
@ -267,8 +270,9 @@ const struct options_table_entry options_table[] = {
},
{ .name = "extended-keys",
.type = OPTIONS_TABLE_FLAG,
.type = OPTIONS_TABLE_CHOICE,
.scope = OPTIONS_TABLE_SERVER,
.choices = options_table_extended_keys_list,
.default_num = 0,
.text = "Whether to request extended key sequences from terminals "
"that support it."

View File

@ -101,7 +101,9 @@ screen_reinit(struct screen *s)
s->rupper = 0;
s->rlower = screen_size_y(s) - 1;
s->mode = MODE_CURSOR | MODE_WRAP;
s->mode = MODE_CURSOR|MODE_WRAP;
if (options_get_number(global_options, "extended-keys") == 2)
s->mode |= MODE_KEXTENDED;
if (s->saved_grid != NULL)
screen_alternate_off(s, NULL, 0);

25
tmux.1
View File

@ -3418,11 +3418,24 @@ sessions.
.Xc
If enabled, the server will exit when there are no attached clients.
.It Xo Ic extended-keys
.Op Ic on | off
.Op Ic on | off | always
.Xc
When enabled, extended keys are requested from the terminal and if supported
are recognised by
.Nm .
When
.Ic on
or
.Ic always ,
the escape sequence to enable extended keys is sent to the terminal, if
.Nm
knows that it is supported.
.Nm
always recognises extended keys itself.
If this option is
.Ic on ,
.Nm
will only forward extended keys to applications when they request them; if
.Ic always ,
.Nm
will always forward the keys.
.It Xo Ic focus-events
.Op Ic on | off
.Xc
@ -3501,8 +3514,8 @@ capabilities to be set instead,
is intended for classes of functionality supported in a standard way but not
reported by
.Xr terminfo 5 .
Care must be taken only to configure this with features the terminal actually
support.
Care must be taken to configure this only with features the terminal actually
supports.
.Pp
This is an array option where each entry is a colon-separated string made up
of a terminal type pattern (matched using