=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/input.c,v retrieving revision 1.121 retrieving revision 1.122 diff -c -r1.121 -r1.122 *** src/usr.bin/tmux/input.c 2017/05/12 13:00:56 1.121 --- src/usr.bin/tmux/input.c 2017/05/28 23:23:40 1.122 *************** *** 1,4 **** ! /* $OpenBSD: input.c,v 1.121 2017/05/12 13:00:56 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: input.c,v 1.122 2017/05/28 23:23:40 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 110,115 **** --- 110,117 ---- 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 *); *************** *** 1900,1912 **** case 4: input_osc_4(ictx->wp, p); break; ! case 52: ! input_osc_52(ictx->wp, p); break; case 12: if (*p != '?') /* ? is colour request */ screen_set_cursor_colour(ictx->ctx.s, p); break; case 104: input_osc_104(ictx->wp, p); break; --- 1902,1920 ---- case 4: input_osc_4(ictx->wp, p); break; ! 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; *************** *** 2050,2055 **** --- 2058,2099 ---- bad: log_debug("bad OSC 4: %s", p); 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. */