mirror of
https://github.com/tmate-io/tmate.git
synced 2025-08-16 08:38:12 +02:00
Support xterm(1) cursor colour change sequences through terminfo(5) Cc
(set) and Cr (reset) extensions. Originally by Sean Estabrooks, tweaked by me and Ailin Nemui.
This commit is contained in:
36
input.c
36
input.c
@ -1445,17 +1445,39 @@ input_enter_osc(struct input_ctx *ictx)
|
||||
void
|
||||
input_exit_osc(struct input_ctx *ictx)
|
||||
{
|
||||
u_char *p = ictx->input_buf;
|
||||
int option;
|
||||
|
||||
if (ictx->flags & INPUT_DISCARD)
|
||||
return;
|
||||
log_debug("%s: \"%s\"", __func__, ictx->input_buf);
|
||||
|
||||
if (ictx->input_len < 2 || ictx->input_buf[1] != ';')
|
||||
return;
|
||||
if (ictx->input_buf[0] != '0' && ictx->input_buf[0] != '2')
|
||||
if (ictx->input_len < 1 || *p < '0' || *p > '9')
|
||||
return;
|
||||
|
||||
screen_set_title(ictx->ctx.s, ictx->input_buf + 2);
|
||||
server_status_window(ictx->wp->window);
|
||||
log_debug("%s: \"%s\"", __func__, p);
|
||||
|
||||
option = 0;
|
||||
while (*p >= '0' && *p <= '9')
|
||||
option = option * 10 + *p++ - '0';
|
||||
if (*p == ';')
|
||||
p++;
|
||||
|
||||
switch (option) {
|
||||
case 0:
|
||||
case 2:
|
||||
screen_set_title(ictx->ctx.s, p);
|
||||
server_status_window(ictx->wp->window);
|
||||
break;
|
||||
case 12:
|
||||
screen_set_cursor_colour(ictx->ctx.s, p);
|
||||
break;
|
||||
case 112:
|
||||
if (*p == '\0') /* No arguments allowed. */
|
||||
screen_set_cursor_colour(ictx->ctx.s, "");
|
||||
break;
|
||||
default:
|
||||
log_debug("%s: unknown '%u'", __func__, option);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* APC string started. */
|
||||
|
Reference in New Issue
Block a user