aboutsummaryrefslogtreecommitdiff
path: root/tty.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2013-06-23 13:10:46 +0000
committerNicholas Marriott <nicm@openbsd.org>2013-06-23 13:10:46 +0000
commit3977dba76139b5d4b0a6e60458d39a374beeedf3 (patch)
treec9a2eb74d17f3b685766bd460258b460eddb3a4b /tty.c
parenta41cd8d75b55da5a1e75e187b30b33917c18c1b2 (diff)
downloadrtmux-3977dba76139b5d4b0a6e60458d39a374beeedf3.tar.gz
rtmux-3977dba76139b5d4b0a6e60458d39a374beeedf3.tar.bz2
rtmux-3977dba76139b5d4b0a6e60458d39a374beeedf3.zip
Focus events can cause trouble if left on and they can't be turned off
during idle periods (like the other states are) because we'd miss events. So add a server option to control them. Defaults to off.
Diffstat (limited to 'tty.c')
-rw-r--r--tty.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/tty.c b/tty.c
index cf6e9652..c989aaaa 100644
--- a/tty.c
+++ b/tty.c
@@ -219,8 +219,13 @@ tty_start_tty(struct tty *tty)
if (tty_term_has(tty->term, TTYC_KMOUS))
tty_puts(tty, "\033[?1000l\033[?1006l\033[?1005l");
- if (tty_term_has(tty->term, TTYC_XT))
+ if (tty_term_has(tty->term, TTYC_XT)) {
+ if (options_get_number(&global_options, "focus-events")) {
+ tty->flags |= TTY_FOCUS;
+ tty_puts(tty, "\033[?1004h");
+ }
tty_puts(tty, "\033[c\033[>4;1m\033[m");
+ }
tty->cx = UINT_MAX;
tty->cy = UINT_MAX;
@@ -282,8 +287,13 @@ tty_stop_tty(struct tty *tty)
if (tty_term_has(tty->term, TTYC_KMOUS))
tty_raw(tty, "\033[?1000l\033[?1006l\033[?1005l");
- if (tty_term_has(tty->term, TTYC_XT))
+ if (tty_term_has(tty->term, TTYC_XT)) {
+ if (tty->flags & TTY_FOCUS) {
+ tty->flags &= ~TTY_FOCUS;
+ tty_puts(tty, "\033[?1004l");
+ }
tty_raw(tty, "\033[>4m\033[m");
+ }
tty_raw(tty, tty_term_string(tty->term, TTYC_RMCUP));