Add an "always" value to the extended-keys option to always forward
authornicm <nicm@openbsd.org>
Thu, 10 Jun 2021 07:24:10 +0000 (07:24 +0000)
committernicm <nicm@openbsd.org>
Thu, 10 Jun 2021 07:24:10 +0000 (07:24 +0000)
these keys to applications inside tmux.

usr.bin/tmux/input.c
usr.bin/tmux/options-table.c
usr.bin/tmux/screen.c
usr.bin/tmux/tmux.1

index 0ce7a65..c791567 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: input.c,v 1.188 2021/02/18 13:30:24 nicm Exp $ */
+/* $OpenBSD: input.c,v 1.189 2021/06/10 07:24:10 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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))
index 3330e4f..4df0e87 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: options-table.c,v 1.140 2021/03/11 06:41:04 nicm Exp $ */
+/* $OpenBSD: options-table.c,v 1.141 2021/06/10 07:24:10 nicm Exp $ */
 
 /*
  * Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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."
index a01ddb3..cb8aa86 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: screen.c,v 1.70 2021/03/12 08:39:17 nicm Exp $ */
+/* $OpenBSD: screen.c,v 1.71 2021/06/10 07:24:10 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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);
index ffbcdde..dda19bd 100644 (file)
@@ -1,4 +1,4 @@
-.\" $OpenBSD: tmux.1,v 1.835 2021/04/15 05:38:11 nicm Exp $
+.\" $OpenBSD: tmux.1,v 1.836 2021/06/10 07:24:10 nicm Exp $
 .\"
 .\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
 .\"
@@ -14,7 +14,7 @@
 .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
 .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: April 15 2021 $
+.Dd $Mdocdate: June 10 2021 $
 .Dt TMUX 1
 .Os
 .Sh NAME
@@ -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