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

to applications inside tmux.
pull/2739/head
Nicholas Marriott 2021-04-21 09:32:48 +01:00
parent 736a276cc9
commit 5107e84897
4 changed files with 27 additions and 6 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

@ -74,6 +74,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 \
@ -266,8 +269,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

@ -100,7 +100,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);

21
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