diff options
| -rw-r--r-- | config.def.h | 10 | ||||
| -rw-r--r-- | st.c | 33 | 
2 files changed, 21 insertions, 22 deletions
diff --git a/config.def.h b/config.def.h index 4664416..b31d7d6 100644 --- a/config.def.h +++ b/config.def.h @@ -153,7 +153,8 @@ static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;  static Key key[] = {  	/* keysym           mask            string      appkey appcursor crlf */ -	{ XK_KP_Home,       ShiftMask,      "\033[1;2H",     0,    0,    0}, +	{ XK_KP_Home,       ShiftMask,      "\033[2J",       0,   -1,    0}, +	{ XK_KP_Home,       ShiftMask,      "\033[1;2H",     0,   +1,    0},  	{ XK_KP_Home,       XK_ANY_MOD,     "\033[H",        0,   -1,    0},  	{ XK_KP_Home,       XK_ANY_MOD,     "\033[1~",       0,   +1,    0},  	{ XK_KP_Up,         XK_ANY_MOD,     "\033Ox",       +1,    0,    0}, @@ -184,7 +185,7 @@ static Key key[] = {  	{ XK_KP_Insert,     ControlMask,    "\033[2;5~",    +1,    0,    0},  	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[4h",      -1,    0,    0},  	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[2~",      +1,    0,    0}, -	{ XK_KP_Delete,     ControlMask,    "\033[2J",      -1,    0,    0}, +	{ XK_KP_Delete,     ControlMask,    "\033[M",       -1,    0,    0},  	{ XK_KP_Delete,     ControlMask,    "\033[3;5~",    +1,    0,    0},  	{ XK_KP_Delete,     ShiftMask,      "\033[2K",      -1,    0,    0},  	{ XK_KP_Delete,     ShiftMask,      "\033[3;2~",    +1,    0,    0}, @@ -240,13 +241,14 @@ static Key key[] = {  	{ XK_Insert,        ControlMask,    "\033[2;5~",    +1,    0,    0},  	{ XK_Insert,        XK_ANY_MOD,     "\033[4h",      -1,    0,    0},  	{ XK_Insert,        XK_ANY_MOD,     "\033[2~",      +1,    0,    0}, -	{ XK_Delete,        ControlMask,    "\033[2J",      -1,    0,    0}, +	{ XK_Delete,        ControlMask,    "\033[M",       -1,    0,    0},  	{ XK_Delete,        ControlMask,    "\033[3;5~",    +1,    0,    0},  	{ XK_Delete,        ShiftMask,      "\033[2K",      -1,    0,    0},  	{ XK_Delete,        ShiftMask,      "\033[3;2~",    +1,    0,    0},  	{ XK_Delete,        XK_ANY_MOD,     "\033[P",       -1,    0,    0},  	{ XK_Delete,        XK_ANY_MOD,     "\033[3~",      +1,    0,    0}, -	{ XK_Home,          ShiftMask,      "\033[1;2H",     0,    0,    0}, +	{ XK_Home,          ShiftMask,      "\033[2J",       0,   -1,    0}, +	{ XK_Home,          ShiftMask,      "\033[1;2H",     0,   +1,    0},  	{ XK_Home,          XK_ANY_MOD,     "\033[H",        0,   -1,    0},  	{ XK_Home,          XK_ANY_MOD,     "\033[1~",       0,   +1,    0},  	{ XK_End,           ControlMask,    "\033[J",       -1,    0,    0}, @@ -953,11 +953,12 @@ selcopy(void) {  		/* append every set & selected glyph to the selection */  		for(y = sel.nb.y; y < sel.ne.y + 1; y++) {  			gp = &term.line[y][0]; -			last = gp + term.col; +			last = &gp[term.col-1]; -			while(--last >= gp && !(selected(last - gp, y) && \ -						strcmp(last->c, " ") != 0)) -				/* nothing */; +			while(last >= gp && !(selected(last - gp, y) && +			                      strcmp(last->c, " ") != 0)) { +				--last; +			}  			for(x = 0; gp <= last; x++, ++gp) {  				if(!selected(x, y) || (gp->mode & ATTR_WDUMMY)) @@ -2152,20 +2153,21 @@ csireset(void) {  void  strhandle(void) {  	char *p = NULL; -	int i, j, narg; +	int j, narg, par;  	strparse();  	narg = strescseq.narg; +	par = atoi(strescseq.args[0]);  	switch(strescseq.type) {  	case ']': /* OSC -- Operating System Command */ -		switch(i = atoi(strescseq.args[0])) { +		switch(par) {  		case 0:  		case 1:  		case 2:  			if(narg > 1)  				xsettitle(strescseq.args[1]); -			break; +			return;  		case 4: /* color set */  			if(narg < 3)  				break; @@ -2182,25 +2184,20 @@ strhandle(void) {  				 */  				redraw(0);  			} -			break; -		default: -			fprintf(stderr, "erresc: unknown str "); -			strdump(); -			break; +			return;  		}  		break;  	case 'k': /* old title set compatibility */  		xsettitle(strescseq.args[0]); -		break; +		return;  	case 'P': /* DSC -- Device Control String */  	case '_': /* APC -- Application Program Command */  	case '^': /* PM -- Privacy Message */ -	default: -		fprintf(stderr, "erresc: unknown str "); -		strdump(); -		/* die(""); */ -		break; +		return;  	} + +	fprintf(stderr, "erresc: unknown str "); +	strdump();  }  void  | 
