=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/input.c,v retrieving revision 1.220 retrieving revision 1.221 diff -c -r1.220 -r1.221 *** src/usr.bin/tmux/input.c 2023/08/23 08:30:07 1.220 --- src/usr.bin/tmux/input.c 2023/09/15 06:28:15 1.221 *************** *** 1,4 **** ! /* $OpenBSD: input.c,v 1.220 2023/08/23 08:30:07 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: input.c,v 1.221 2023/09/15 06:28:15 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 169,174 **** --- 169,175 ---- static void input_csi_dispatch_rm_private(struct input_ctx *); static void input_csi_dispatch_sm(struct input_ctx *); static void input_csi_dispatch_sm_private(struct input_ctx *); + static void input_csi_dispatch_sm_graphics(struct input_ctx *); static void input_csi_dispatch_winops(struct input_ctx *); static void input_csi_dispatch_sgr_256(struct input_ctx *, int, u_int *); static void input_csi_dispatch_sgr_rgb(struct input_ctx *, int, u_int *); *************** *** 203,209 **** INPUT_ESC_SCSG0_ON, INPUT_ESC_SCSG1_OFF, INPUT_ESC_SCSG1_ON, ! INPUT_ESC_ST, }; /* Escape command table. */ --- 204,210 ---- INPUT_ESC_SCSG0_ON, INPUT_ESC_SCSG1_OFF, INPUT_ESC_SCSG1_ON, ! INPUT_ESC_ST }; /* Escape command table. */ *************** *** 259,269 **** INPUT_CSI_SGR, INPUT_CSI_SM, INPUT_CSI_SM_PRIVATE, INPUT_CSI_SU, INPUT_CSI_TBC, INPUT_CSI_VPA, INPUT_CSI_WINOPS, ! INPUT_CSI_XDA, }; /* Control (CSI) command table. */ --- 260,271 ---- INPUT_CSI_SGR, INPUT_CSI_SM, INPUT_CSI_SM_PRIVATE, + INPUT_CSI_SM_GRAPHICS, INPUT_CSI_SU, INPUT_CSI_TBC, INPUT_CSI_VPA, INPUT_CSI_WINOPS, ! INPUT_CSI_XDA }; /* Control (CSI) command table. */ *************** *** 283,288 **** --- 285,291 ---- { 'M', "", INPUT_CSI_DL }, { 'P', "", INPUT_CSI_DCH }, { 'S', "", INPUT_CSI_SU }, + { 'S', "?", INPUT_CSI_SM_GRAPHICS }, { 'T', "", INPUT_CSI_SD }, { 'X', "", INPUT_CSI_ECH }, { 'Z', "", INPUT_CSI_CBT }, *************** *** 306,312 **** { 'r', "", INPUT_CSI_DECSTBM }, { 's', "", INPUT_CSI_SCP }, { 't', "", INPUT_CSI_WINOPS }, ! { 'u', "", INPUT_CSI_RCP }, }; /* Input transition. */ --- 309,315 ---- { 'r', "", INPUT_CSI_DECSTBM }, { 's', "", INPUT_CSI_SCP }, { 't', "", INPUT_CSI_WINOPS }, ! { 'u', "", INPUT_CSI_RCP } }; /* Input transition. */ *************** *** 1595,1600 **** --- 1598,1606 ---- case INPUT_CSI_SM_PRIVATE: input_csi_dispatch_sm_private(ictx); break; + case INPUT_CSI_SM_GRAPHICS: + input_csi_dispatch_sm_graphics(ictx); + break; case INPUT_CSI_SU: n = input_get(ictx, 0, 1, 1); if (n != -1) *************** *** 1827,1832 **** --- 1833,1844 ---- } } + /* Handle CSI graphics SM. */ + static void + input_csi_dispatch_sm_graphics(struct input_ctx *ictx) + { + } + /* Handle CSI window operations. */ static void input_csi_dispatch_winops(struct input_ctx *ictx) *************** *** 1834,1839 **** --- 1846,1852 ---- struct screen_write_ctx *sctx = &ictx->ctx; struct screen *s = sctx->s; struct window_pane *wp = ictx->wp; + struct window *w = wp->window; u_int x = screen_size_x(s), y = screen_size_y(s); int n, m; *************** *** 1847,1854 **** case 7: case 11: case 13: - case 14: - case 19: case 20: case 21: case 24: --- 1860,1865 ---- *************** *** 1866,1871 **** --- 1877,1897 ---- if (input_get(ictx, m, 0, -1) == -1) return; break; + case 14: + input_reply(ictx, "\033[4;%u;%ut", y * w->ypixel, x * w->xpixel); + break; + case 15: + input_reply(ictx, "\033[5;%u;%ut", y * w->ypixel, x * w->xpixel); + break; + case 16: + input_reply(ictx, "\033[6;%u;%ut", w->ypixel, w->xpixel); + break; + case 18: + input_reply(ictx, "\033[8;%u;%ut", y, x); + break; + case 19: + input_reply(ictx, "\033[9;%u;%ut", y, x); + break; case 22: m++; switch (input_get(ictx, m, 0, -1)) { *************** *** 1892,1900 **** server_status_window(wp->window); break; } - break; - case 18: - input_reply(ictx, "\033[8;%u;%ut", y, x); break; default: log_debug("%s: unknown '%c'", __func__, ictx->ch); --- 1918,1923 ----