mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 10:08:47 +00:00
Add \033[18t window operations from J Raynor.
This commit is contained in:
parent
62e0ed5d7e
commit
1935eb5c1e
55
input.c
55
input.c
@ -74,6 +74,7 @@ void input_csi_dispatch_rm(struct input_ctx *);
|
|||||||
void input_csi_dispatch_rm_private(struct input_ctx *);
|
void input_csi_dispatch_rm_private(struct input_ctx *);
|
||||||
void input_csi_dispatch_sm(struct input_ctx *);
|
void input_csi_dispatch_sm(struct input_ctx *);
|
||||||
void input_csi_dispatch_sm_private(struct input_ctx *);
|
void input_csi_dispatch_sm_private(struct input_ctx *);
|
||||||
|
void input_csi_dispatch_winops(struct input_ctx *);
|
||||||
void input_csi_dispatch_sgr(struct input_ctx *);
|
void input_csi_dispatch_sgr(struct input_ctx *);
|
||||||
int input_dcs_dispatch(struct input_ctx *);
|
int input_dcs_dispatch(struct input_ctx *);
|
||||||
int input_utf8_open(struct input_ctx *);
|
int input_utf8_open(struct input_ctx *);
|
||||||
@ -154,6 +155,7 @@ enum input_csi_type {
|
|||||||
INPUT_CSI_SM_PRIVATE,
|
INPUT_CSI_SM_PRIVATE,
|
||||||
INPUT_CSI_TBC,
|
INPUT_CSI_TBC,
|
||||||
INPUT_CSI_VPA,
|
INPUT_CSI_VPA,
|
||||||
|
INPUT_CSI_WINOPS,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Control (CSI) command table. */
|
/* Control (CSI) command table. */
|
||||||
@ -188,6 +190,7 @@ const struct input_table_entry input_csi_table[] = {
|
|||||||
{ 'q', " ", INPUT_CSI_DECSCUSR },
|
{ 'q', " ", INPUT_CSI_DECSCUSR },
|
||||||
{ 'r', "", INPUT_CSI_DECSTBM },
|
{ 'r', "", INPUT_CSI_DECSTBM },
|
||||||
{ 's', "", INPUT_CSI_SCP },
|
{ 's', "", INPUT_CSI_SCP },
|
||||||
|
{ 't', "", INPUT_CSI_WINOPS },
|
||||||
{ 'u', "", INPUT_CSI_RCP },
|
{ 'u', "", INPUT_CSI_RCP },
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1117,6 +1120,9 @@ input_csi_dispatch(struct input_ctx *ictx)
|
|||||||
m = input_get(ictx, 1, 1, 1);
|
m = input_get(ictx, 1, 1, 1);
|
||||||
screen_write_cursormove(sctx, m - 1, n - 1);
|
screen_write_cursormove(sctx, m - 1, n - 1);
|
||||||
break;
|
break;
|
||||||
|
case INPUT_CSI_WINOPS:
|
||||||
|
input_csi_dispatch_winops(ictx);
|
||||||
|
break;
|
||||||
case INPUT_CSI_CUU:
|
case INPUT_CSI_CUU:
|
||||||
screen_write_cursorup(sctx, input_get(ictx, 0, 1, 1));
|
screen_write_cursorup(sctx, input_get(ictx, 0, 1, 1));
|
||||||
break;
|
break;
|
||||||
@ -1430,6 +1436,55 @@ input_csi_dispatch_sm_private(struct input_ctx *ictx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Handle CSI window operations. */
|
||||||
|
void
|
||||||
|
input_csi_dispatch_winops(struct input_ctx *ictx)
|
||||||
|
{
|
||||||
|
struct window_pane *wp = ictx->wp;
|
||||||
|
int n, m;
|
||||||
|
|
||||||
|
m = 0;
|
||||||
|
while ((n = input_get(ictx, m, 0, -1)) != -1) {
|
||||||
|
switch (n) {
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 5:
|
||||||
|
case 6:
|
||||||
|
case 7:
|
||||||
|
case 11:
|
||||||
|
case 13:
|
||||||
|
case 14:
|
||||||
|
case 19:
|
||||||
|
case 20:
|
||||||
|
case 21:
|
||||||
|
case 24:
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
m++;
|
||||||
|
if (input_get(ictx, m, 0, -1) == -1)
|
||||||
|
return;
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
case 9:
|
||||||
|
case 10:
|
||||||
|
case 22:
|
||||||
|
case 23:
|
||||||
|
m++;
|
||||||
|
if (input_get(ictx, m, 0, -1) == -1)
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
case 18:
|
||||||
|
input_reply(ictx, "\033[8;%u;%u", wp->sy, wp->sx);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
log_debug("%s: unknown '%c'", __func__, ictx->ch);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
m++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Handle CSI SGR. */
|
/* Handle CSI SGR. */
|
||||||
void
|
void
|
||||||
input_csi_dispatch_sgr(struct input_ctx *ictx)
|
input_csi_dispatch_sgr(struct input_ctx *ictx)
|
||||||
|
Loading…
Reference in New Issue
Block a user