version 1.220, 2023/08/23 08:30:07 |
version 1.221, 2023/09/15 06:28:15 |
|
|
static void input_csi_dispatch_rm_private(struct input_ctx *); |
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(struct input_ctx *); |
static void input_csi_dispatch_sm_private(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_winops(struct input_ctx *); |
static void input_csi_dispatch_sgr_256(struct input_ctx *, int, u_int *); |
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 *); |
static void input_csi_dispatch_sgr_rgb(struct input_ctx *, int, u_int *); |
|
|
INPUT_ESC_SCSG0_ON, |
INPUT_ESC_SCSG0_ON, |
INPUT_ESC_SCSG1_OFF, |
INPUT_ESC_SCSG1_OFF, |
INPUT_ESC_SCSG1_ON, |
INPUT_ESC_SCSG1_ON, |
INPUT_ESC_ST, |
INPUT_ESC_ST |
}; |
}; |
|
|
/* Escape command table. */ |
/* Escape command table. */ |
|
|
INPUT_CSI_SGR, |
INPUT_CSI_SGR, |
INPUT_CSI_SM, |
INPUT_CSI_SM, |
INPUT_CSI_SM_PRIVATE, |
INPUT_CSI_SM_PRIVATE, |
|
INPUT_CSI_SM_GRAPHICS, |
INPUT_CSI_SU, |
INPUT_CSI_SU, |
INPUT_CSI_TBC, |
INPUT_CSI_TBC, |
INPUT_CSI_VPA, |
INPUT_CSI_VPA, |
INPUT_CSI_WINOPS, |
INPUT_CSI_WINOPS, |
INPUT_CSI_XDA, |
INPUT_CSI_XDA |
}; |
}; |
|
|
/* Control (CSI) command table. */ |
/* Control (CSI) command table. */ |
|
|
{ 'M', "", INPUT_CSI_DL }, |
{ 'M', "", INPUT_CSI_DL }, |
{ 'P', "", INPUT_CSI_DCH }, |
{ 'P', "", INPUT_CSI_DCH }, |
{ 'S', "", INPUT_CSI_SU }, |
{ 'S', "", INPUT_CSI_SU }, |
|
{ 'S', "?", INPUT_CSI_SM_GRAPHICS }, |
{ 'T', "", INPUT_CSI_SD }, |
{ 'T', "", INPUT_CSI_SD }, |
{ 'X', "", INPUT_CSI_ECH }, |
{ 'X', "", INPUT_CSI_ECH }, |
{ 'Z', "", INPUT_CSI_CBT }, |
{ 'Z', "", INPUT_CSI_CBT }, |
|
|
{ 'r', "", INPUT_CSI_DECSTBM }, |
{ 'r', "", INPUT_CSI_DECSTBM }, |
{ 's', "", INPUT_CSI_SCP }, |
{ 's', "", INPUT_CSI_SCP }, |
{ 't', "", INPUT_CSI_WINOPS }, |
{ 't', "", INPUT_CSI_WINOPS }, |
{ 'u', "", INPUT_CSI_RCP }, |
{ 'u', "", INPUT_CSI_RCP } |
}; |
}; |
|
|
/* Input transition. */ |
/* Input transition. */ |
|
|
case INPUT_CSI_SM_PRIVATE: |
case INPUT_CSI_SM_PRIVATE: |
input_csi_dispatch_sm_private(ictx); |
input_csi_dispatch_sm_private(ictx); |
break; |
break; |
|
case INPUT_CSI_SM_GRAPHICS: |
|
input_csi_dispatch_sm_graphics(ictx); |
|
break; |
case INPUT_CSI_SU: |
case INPUT_CSI_SU: |
n = input_get(ictx, 0, 1, 1); |
n = input_get(ictx, 0, 1, 1); |
if (n != -1) |
if (n != -1) |
|
|
} |
} |
} |
} |
|
|
|
/* Handle CSI graphics SM. */ |
|
static void |
|
input_csi_dispatch_sm_graphics(struct input_ctx *ictx) |
|
{ |
|
} |
|
|
/* Handle CSI window operations. */ |
/* Handle CSI window operations. */ |
static void |
static void |
input_csi_dispatch_winops(struct input_ctx *ictx) |
input_csi_dispatch_winops(struct input_ctx *ictx) |
|
|
struct screen_write_ctx *sctx = &ictx->ctx; |
struct screen_write_ctx *sctx = &ictx->ctx; |
struct screen *s = sctx->s; |
struct screen *s = sctx->s; |
struct window_pane *wp = ictx->wp; |
struct window_pane *wp = ictx->wp; |
|
struct window *w = wp->window; |
u_int x = screen_size_x(s), y = screen_size_y(s); |
u_int x = screen_size_x(s), y = screen_size_y(s); |
int n, m; |
int n, m; |
|
|
|
|
case 7: |
case 7: |
case 11: |
case 11: |
case 13: |
case 13: |
case 14: |
|
case 19: |
|
case 20: |
case 20: |
case 21: |
case 21: |
case 24: |
case 24: |
|
|
if (input_get(ictx, m, 0, -1) == -1) |
if (input_get(ictx, m, 0, -1) == -1) |
return; |
return; |
break; |
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: |
case 22: |
m++; |
m++; |
switch (input_get(ictx, m, 0, -1)) { |
switch (input_get(ictx, m, 0, -1)) { |
|
|
server_status_window(wp->window); |
server_status_window(wp->window); |
break; |
break; |
} |
} |
break; |
|
case 18: |
|
input_reply(ictx, "\033[8;%u;%ut", y, x); |
|
break; |
break; |
default: |
default: |
log_debug("%s: unknown '%c'", __func__, ictx->ch); |
log_debug("%s: unknown '%c'", __func__, ictx->ch); |