-/* $OpenBSD: input.c,v 1.121 2017/05/12 13:00:56 nicm Exp $ */
+/* $OpenBSD: input.c,v 1.122 2017/05/28 23:23:40 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
static void input_reset_cell(struct input_ctx *);
static void input_osc_4(struct window_pane *, const char *);
+static void input_osc_10(struct window_pane *, const char *);
+static void input_osc_11(struct window_pane *, const char *);
static void input_osc_52(struct window_pane *, const char *);
static void input_osc_104(struct window_pane *, const char *);
case 4:
input_osc_4(ictx->wp, p);
break;
- case 52:
- input_osc_52(ictx->wp, p);
+ case 10:
+ input_osc_10(ictx->wp, p);
+ break;
+ case 11:
+ input_osc_11(ictx->wp, p);
break;
case 12:
if (*p != '?') /* ? is colour request */
screen_set_cursor_colour(ictx->ctx.s, p);
break;
+ case 52:
+ input_osc_52(ictx->wp, p);
+ break;
case 104:
input_osc_104(ictx->wp, p);
break;
free(copy);
}
+/* Handle the OSC 10 sequence for setting background colour. */
+static void
+input_osc_10(struct window_pane *wp, const char *p)
+{
+ u_int r, g, b;
+
+ if (sscanf(p, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3)
+ goto bad;
+
+ wp->colgc.fg = colour_join_rgb(r, g, b);
+ wp->flags |= PANE_REDRAW;
+
+ return;
+
+bad:
+ log_debug("bad OSC 10: %s", p);
+}
+
+/* Handle the OSC 11 sequence for setting background colour. */
+static void
+input_osc_11(struct window_pane *wp, const char *p)
+{
+ u_int r, g, b;
+
+ if (sscanf(p, "rgb:%2x/%2x/%2x", &r, &g, &b) != 3)
+ goto bad;
+
+ wp->colgc.bg = colour_join_rgb(r, g, b);
+ wp->flags |= PANE_REDRAW;
+
+ return;
+
+bad:
+ log_debug("bad OSC 11: %s", p);
+}
+
/* Handle the OSC 52 sequence for setting the clipboard. */
static void
input_osc_52(struct window_pane *wp, const char *p)