summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/tty-features.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2020-05-16 14:39:40 +0000
committernicm <nicm@openbsd.org>2020-05-16 14:39:40 +0000
commited2e005d91df5d95a32ef459c88cff2778e36cd6 (patch)
tree50eb030e96c3732e72843bb9d0c6e503a0694a2a /usr.bin/tmux/tty-features.c
parentAdd a feature for bracketed paste. (diff)
downloadwireguard-openbsd-ed2e005d91df5d95a32ef459c88cff2778e36cd6.tar.xz
wireguard-openbsd-ed2e005d91df5d95a32ef459c88cff2778e36cd6.zip
Add feature and capabilities for focus reporting. Also document AX and
XT even though they aren't tmux's, and add some bits for rxvt.
Diffstat (limited to 'usr.bin/tmux/tty-features.c')
-rw-r--r--usr.bin/tmux/tty-features.c60
1 files changed, 36 insertions, 24 deletions
diff --git a/usr.bin/tmux/tty-features.c b/usr.bin/tmux/tty-features.c
index 59102fc18e2..9f4a9f46d40 100644
--- a/usr.bin/tmux/tty-features.c
+++ b/usr.bin/tmux/tty-features.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty-features.c,v 1.11 2020/05/16 14:34:44 nicm Exp $ */
+/* $OpenBSD: tty-features.c,v 1.12 2020/05/16 14:39:40 nicm Exp $ */
/*
* Copyright (c) 2020 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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).
@@ -50,7 +49,7 @@ static const char *tty_feature_title_capabilities[] = {
"fsl=\\a",
NULL
};
-static struct tty_feature tty_feature_title = {
+static const struct tty_feature tty_feature_title = {
"title",
tty_feature_title_capabilities,
0
@@ -61,7 +60,7 @@ static const char *tty_feature_clipboard_capabilities[] = {
"Ms=\\E]52;%p1%s;%p2%s\\a",
NULL
};
-static struct tty_feature tty_feature_clipboard = {
+static const struct tty_feature tty_feature_clipboard = {
"clipboard",
tty_feature_clipboard_capabilities,
0
@@ -80,7 +79,7 @@ static const char *tty_feature_rgb_capabilities[] = {
"setaf=\\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
NULL
};
-static struct tty_feature tty_feature_rgb = {
+static const struct tty_feature tty_feature_rgb = {
"RGB",
tty_feature_rgb_capabilities,
TERM_256COLOURS|TERM_RGBCOLOURS
@@ -93,7 +92,7 @@ static const char *tty_feature_256_capabilities[] = {
"setaf=\\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m",
NULL
};
-static struct tty_feature tty_feature_256 = {
+static const struct tty_feature tty_feature_256 = {
"256",
tty_feature_256_capabilities,
TERM_256COLOURS
@@ -104,7 +103,7 @@ static const char *tty_feature_overline_capabilities[] = {
"Smol=\\E[53m",
NULL
};
-static struct tty_feature tty_feature_overline = {
+static const struct tty_feature tty_feature_overline = {
"overline",
tty_feature_overline_capabilities,
0
@@ -116,31 +115,43 @@ static const char *tty_feature_usstyle_capabilities[] = {
"Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m",
NULL
};
-static struct tty_feature tty_feature_usstyle = {
+static const struct tty_feature tty_feature_usstyle = {
"usstyle",
tty_feature_usstyle_capabilities,
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
};
-static struct tty_feature tty_feature_bpaste = {
+static const struct tty_feature tty_feature_bpaste = {
"bpaste",
tty_feature_bpaste_capabilities,
0
};
+/* Terminal supports focus reporting. */
+static const char *tty_feature_focus_capabilities[] = {
+ "Enfcs=\\E[?1004h",
+ "Dsfcs=\\E[?1004l",
+ NULL
+};
+static const 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",
"Se=\\E[2 q",
NULL
};
-static struct tty_feature tty_feature_cstyle = {
+static const struct tty_feature tty_feature_cstyle = {
"cstyle",
tty_feature_cstyle_capabilities,
0
@@ -152,7 +163,7 @@ static const char *tty_feature_ccolour_capabilities[] = {
"Cr=\\E]112\\a",
NULL
};
-static struct tty_feature tty_feature_ccolour = {
+static const struct tty_feature tty_feature_ccolour = {
"ccolour",
tty_feature_ccolour_capabilities,
0
@@ -163,7 +174,7 @@ static const char *tty_feature_strikethrough_capabilities[] = {
"smxx=\\E[9m",
NULL
};
-static struct tty_feature tty_feature_strikethrough = {
+static const struct tty_feature tty_feature_strikethrough = {
"strikethrough",
tty_feature_strikethrough_capabilities,
0
@@ -174,7 +185,7 @@ static const char *tty_feature_sync_capabilities[] = {
"Sync=\\EP=%p1%ds\\E\\\\",
NULL
};
-static struct tty_feature tty_feature_sync = {
+static const struct tty_feature tty_feature_sync = {
"sync",
tty_feature_sync_capabilities,
0
@@ -188,14 +199,14 @@ static const char *tty_feature_margins_capabilities[] = {
"Cmg=\\E[%i%p1%d;%p2%ds",
NULL
};
-static struct tty_feature tty_feature_margins = {
+static const struct tty_feature tty_feature_margins = {
"margins",
tty_feature_margins_capabilities,
TERM_DECSLRM
};
/* Terminal supports DECFRA rectangle fill. */
-static struct tty_feature tty_feature_rectfill = {
+static const struct tty_feature tty_feature_rectfill = {
"rectfill",
NULL,
TERM_DECFRA
@@ -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"
+ .features = "256,bpaste,ccolour,cstyle,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;
@@ -333,5 +346,4 @@ tty_default_features(int *feat, const char *name, u_int version)
continue;
tty_add_features(feat, table[i].features, ",");
}
-
}