summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tmux.120
-rw-r--r--tmux.h2
-rw-r--r--tty-features.c29
-rw-r--r--tty-term.c4
-rw-r--r--tty.c4
5 files changed, 48 insertions, 11 deletions
diff --git a/tmux.1 b/tmux.1
index cd7c0869..a3a05878 100644
--- a/tmux.1
+++ b/tmux.1
@@ -5556,6 +5556,10 @@ It is not normally necessary to set these manually, instead the
.Ic terminal-features
option should be used.
.Bl -tag -width Ds
+.It Em \&AX
+An existing extension that tells
+.Nm
+the terminal supports default colours.
.It Em \&Cs , Cr
Set the cursor colour.
The first takes a single string argument and is used to set the colour;
@@ -5568,8 +5572,19 @@ $ printf '\e033]12;red\e033\e\e'
.Ed
.It Em \&Cmg, \&Clmg, \&Dsmg , \&Enmg
Set, clear, disable or enable DECSLRM margins.
+These are set automatically if the terminal reports it is
+.Em VT420
+compatible.
.It Em \&Dsbp , \&Enbp
Disable and enable bracketed paste.
+These are set automatically if the
+.Em XT
+capability is present.
+.It Em \&Dsfcs , \&Enfcs
+Disable and enable focus reporting.
+These are set automatically if the
+.Em XT
+capability is present.
.It Em \&Smol
Enable the overline attribute.
.It Em \&Smulx
@@ -5620,6 +5635,11 @@ See the
option above and the
.Xr xterm 1
man page.
+.It Em \&XT
+This is an existing extension capability that tmux uses to mean that the
+terminal supports the
+.Xr xterm 1
+title set sequences and to automatically set some of the capabilities above.
.El
.Sh CONTROL MODE
.Nm
diff --git a/tmux.h b/tmux.h
index b9f48dd7..2eb17ae0 100644
--- a/tmux.h
+++ b/tmux.h
@@ -282,6 +282,7 @@ enum tty_code_code {
TTYC_DL,
TTYC_DL1,
TTYC_DSBP,
+ TTYC_DSFCS,
TTYC_DSMG,
TTYC_E3,
TTYC_ECH,
@@ -290,6 +291,7 @@ enum tty_code_code {
TTYC_EL1,
TTYC_ENACS,
TTYC_ENBP,
+ TTYC_ENFCS,
TTYC_ENMG,
TTYC_FSL,
TTYC_HOME,
diff --git a/tty-features.c b/tty-features.c
index 6dfc26aa..0e24d292 100644
--- a/tty-features.c
+++ b/tty-features.c
@@ -26,7 +26,6 @@
/*
* Still hardcoded:
* - mouse (under kmous capability);
- * - focus events (under XT and focus-events option);
* - default colours (under AX or op capabilities);
* - AIX colours (under colors >= 16);
* - alternate escape (under XT).
@@ -122,9 +121,9 @@ static struct tty_feature tty_feature_usstyle = {
0
};
-/* Terminal supports cursor bracketed paste. */
+/* Terminal supports bracketed paste. */
static const char *tty_feature_bpaste_capabilities[] = {
- "Enbp=\E[?2004h",
+ "Enbp=\\E[?2004h",
"Dsbp=\\E[?2004l",
NULL
};
@@ -134,6 +133,18 @@ static struct tty_feature tty_feature_bpaste = {
0
};
+/* Terminal supports focus reporting. */
+static const char *tty_feature_focus_capabilities[] = {
+ "Enfcs=\\E[?1004h",
+ "Dsfcs=\\E[?1004l",
+ NULL
+};
+static struct tty_feature tty_feature_focus = {
+ "focus",
+ tty_feature_focus_capabilities,
+ 0
+};
+
/* Terminal supports cursor styles. */
static const char *tty_feature_cstyle_capabilities[] = {
"Ss=\\E[%p1%d q",
@@ -205,9 +216,10 @@ static struct tty_feature tty_feature_rectfill = {
static const struct tty_feature *tty_features[] = {
&tty_feature_256,
&tty_feature_bpaste,
- &tty_feature_clipboard,
&tty_feature_ccolour,
+ &tty_feature_clipboard,
&tty_feature_cstyle,
+ &tty_feature_focus,
&tty_feature_margins,
&tty_feature_overline,
&tty_feature_rectfill,
@@ -308,20 +320,21 @@ tty_default_features(int *feat, const char *name, u_int version)
u_int version;
const char *features;
} table[] = {
+#define TTY_FEATURES_BASE_MODERN_XTERM "256,RGB,bpaste,clipboard,strikethrough,title"
{ .name = "mintty",
- .features = "256,RGB,bpaste,ccolour,clipboard,cstyle,margins,overline,strikethrough,title"
+ .features = TTY_FEATURES_BASE_MODERN_XTERM ",ccolour,cstyle,margins,overline"
},
{ .name = "tmux",
- .features = "256,RGB,bpaste,ccolour,clipboard,cstyle,overline,strikethough,title,usstyle"
+ .features = TTY_FEATURES_BASE_MODERN_XTERM ",ccolour,cstyle,focus,overline,usstyle"
},
{ .name = "rxvt-unicode",
.features = "256,title"
},
{ .name = "iTerm2",
- .features = "256,RGB,bpaste,clipboard,cstyle,margins,strikethrough,sync,title"
+ .features = TTY_FEATURES_BASE_MODERN_XTERM ",cstyle,margins,sync"
},
{ .name = "XTerm",
- .features = "256,RGB,bpaste,ccolour,clipboard,cstyle,margins,rectfill,strikethrough,title"
+ .features = TTY_FEATURES_BASE_MODERN_XTERM ",ccolour,cstyle,focus,margins,rectfill"
}
};
u_int i;
diff --git a/tty-term.c b/tty-term.c
index 102359f1..4217d6d6 100644
--- a/tty-term.c
+++ b/tty-term.c
@@ -86,6 +86,7 @@ static const struct tty_term_code_entry tty_term_codes[] = {
[TTYC_DIM] = { TTYCODE_STRING, "dim" },
[TTYC_DL1] = { TTYCODE_STRING, "dl1" },
[TTYC_DL] = { TTYCODE_STRING, "dl" },
+ [TTYC_DSFCS] = { TTYCODE_STRING, "Dsfcs" },
[TTYC_DSBP] = { TTYCODE_STRING, "Dsbp" },
[TTYC_DSMG] = { TTYCODE_STRING, "Dsmg" },
[TTYC_E3] = { TTYCODE_STRING, "E3" },
@@ -95,6 +96,7 @@ static const struct tty_term_code_entry tty_term_codes[] = {
[TTYC_EL] = { TTYCODE_STRING, "el" },
[TTYC_ENACS] = { TTYCODE_STRING, "enacs" },
[TTYC_ENBP] = { TTYCODE_STRING, "Enbp" },
+ [TTYC_ENFCS] = { TTYCODE_STRING, "Enfcs" },
[TTYC_ENMG] = { TTYCODE_STRING, "Enmg" },
[TTYC_FSL] = { TTYCODE_STRING, "fsl" },
[TTYC_HOME] = { TTYCODE_STRING, "home" },
@@ -567,7 +569,7 @@ tty_term_create(struct tty *tty, char *name, int *feat, int fd, char **cause)
/* Add some features if terminal has XT. */
if (tty_term_flag(term, TTYC_XT))
- tty_add_features(feat, "bpaste,title", ",");
+ tty_add_features(feat, "bpaste,focus,title", ",");
/* Apply the features and overrides again. */
tty_apply_features(term, *feat);
diff --git a/tty.c b/tty.c
index 7e044540..548c837d 100644
--- a/tty.c
+++ b/tty.c
@@ -333,7 +333,7 @@ tty_start_tty(struct tty *tty)
if (tty_term_flag(tty->term, TTYC_XT)) {
if (options_get_number(global_options, "focus-events")) {
tty->flags |= TTY_FOCUS;
- tty_puts(tty, "\033[?1004h");
+ tty_raw(tty, tty_term_string(tty->term, TTYC_ENFCS));
}
tty_puts(tty, "\033[?7727h");
}
@@ -420,7 +420,7 @@ tty_stop_tty(struct tty *tty)
if (tty_term_flag(tty->term, TTYC_XT)) {
if (tty->flags & TTY_FOCUS) {
tty->flags &= ~TTY_FOCUS;
- tty_raw(tty, "\033[?1004l");
+ tty_raw(tty, tty_term_string(tty->term, TTYC_DSFCS));
}
tty_raw(tty, "\033[?7727l");
}