|
|
@ -134,6 +134,7 @@ enum term_mode { |
|
|
|
MODE_MOUSEX10 = 131072, |
|
|
|
MODE_MOUSEX10 = 131072, |
|
|
|
MODE_MOUSEMANY = 262144, |
|
|
|
MODE_MOUSEMANY = 262144, |
|
|
|
MODE_BRCKTPASTE = 524288, |
|
|
|
MODE_BRCKTPASTE = 524288, |
|
|
|
|
|
|
|
MODE_PRINT = 1048576, |
|
|
|
MODE_MOUSE = MODE_MOUSEBTN|MODE_MOUSEMOTION|MODE_MOUSEX10\
|
|
|
|
MODE_MOUSE = MODE_MOUSEBTN|MODE_MOUSEMOTION|MODE_MOUSEX10\
|
|
|
|
|MODE_MOUSEMANY, |
|
|
|
|MODE_MOUSEMANY, |
|
|
|
}; |
|
|
|
}; |
|
|
@ -469,7 +470,7 @@ static STREscape strescseq; |
|
|
|
static int cmdfd; |
|
|
|
static int cmdfd; |
|
|
|
static pid_t pid; |
|
|
|
static pid_t pid; |
|
|
|
static Selection sel; |
|
|
|
static Selection sel; |
|
|
|
static int iofd = -1; |
|
|
|
static int iofd; |
|
|
|
static char **opt_cmd = NULL; |
|
|
|
static char **opt_cmd = NULL; |
|
|
|
static char *opt_io = NULL; |
|
|
|
static char *opt_io = NULL; |
|
|
|
static char *opt_title = NULL; |
|
|
|
static char *opt_title = NULL; |
|
|
@ -1256,6 +1257,7 @@ ttynew(void) { |
|
|
|
cmdfd = m; |
|
|
|
cmdfd = m; |
|
|
|
signal(SIGCHLD, sigchld); |
|
|
|
signal(SIGCHLD, sigchld); |
|
|
|
if(opt_io) { |
|
|
|
if(opt_io) { |
|
|
|
|
|
|
|
term.mode |= MODE_PRINT; |
|
|
|
iofd = (!strcmp(opt_io, "-")) ? |
|
|
|
iofd = (!strcmp(opt_io, "-")) ? |
|
|
|
STDOUT_FILENO : |
|
|
|
STDOUT_FILENO : |
|
|
|
open(opt_io, O_WRONLY | O_CREAT, 0666); |
|
|
|
open(opt_io, O_WRONLY | O_CREAT, 0666); |
|
|
@ -1979,6 +1981,18 @@ csihandle(void) { |
|
|
|
DEFAULT(csiescseq.arg[0], 1); |
|
|
|
DEFAULT(csiescseq.arg[0], 1); |
|
|
|
tmoveto(term.c.x, term.c.y+csiescseq.arg[0]); |
|
|
|
tmoveto(term.c.x, term.c.y+csiescseq.arg[0]); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
case 'i': /* MC -- Media Copy */ |
|
|
|
|
|
|
|
switch(csiescseq.arg[0]) { |
|
|
|
|
|
|
|
case 0: |
|
|
|
|
|
|
|
case 1: |
|
|
|
|
|
|
|
case 4: |
|
|
|
|
|
|
|
term.mode &= ~MODE_PRINT; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 5: |
|
|
|
|
|
|
|
term.mode |= MODE_PRINT; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
case 'c': /* DA -- Device Attributes */ |
|
|
|
case 'c': /* DA -- Device Attributes */ |
|
|
|
if(csiescseq.arg[0] == 0) |
|
|
|
if(csiescseq.arg[0] == 0) |
|
|
|
ttywrite(VT102ID, sizeof(VT102ID) - 1); |
|
|
|
ttywrite(VT102ID, sizeof(VT102ID) - 1); |
|
|
@ -2332,7 +2346,7 @@ tputc(char *c, int len) { |
|
|
|
width = wcwidth(u8char); |
|
|
|
width = wcwidth(u8char); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(iofd != -1) { |
|
|
|
if(IS_SET(MODE_PRINT) && iofd != -1) { |
|
|
|
if(xwrite(iofd, c, len) < 0) { |
|
|
|
if(xwrite(iofd, c, len) < 0) { |
|
|
|
fprintf(stderr, "Error writing in %s:%s\n", |
|
|
|
fprintf(stderr, "Error writing in %s:%s\n", |
|
|
|
opt_io, strerror(errno)); |
|
|
|
opt_io, strerror(errno)); |
|
|
|