diff options
| author | Mark Edgar <medgar123@gmail.com> | 2013-10-05 11:45:17 +0200 | 
|---|---|---|
| committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2013-10-07 20:56:51 +0200 | 
| commit | 02ae3ce6fdc178ca6eb9b10b6447bb56a6513a27 (patch) | |
| tree | 43139a5428d7611793677c5ff26652659542bec4 | |
| parent | 7a4eefe87cb7661c8a77286d05b6c3afb467f806 (diff) | |
Simplify Mod1 logic in kpress(), eliminating locals and a memcpy.
| -rw-r--r-- | st.c | 23 | 
1 files changed, 10 insertions, 13 deletions
| @@ -3563,8 +3563,8 @@ void  kpress(XEvent *ev) {  	XKeyEvent *e = &ev->xkey;  	KeySym ksym; -	char xstr[31], buf[32], *customkey, *cp = buf; -	int len, ret; +	char buf[32], *customkey; +	int len;  	long c;  	Status status;  	Shortcut *bp; @@ -3572,7 +3572,7 @@ kpress(XEvent *ev) {  	if(IS_SET(MODE_KBDLOCK))  		return; -	len = XmbLookupString(xw.xic, e, xstr, sizeof(xstr), &ksym, &status); +	len = XmbLookupString(xw.xic, e, buf, sizeof buf, &ksym, &status);  	e->state &= ~Mod2Mask;  	/* 1. shortcuts */  	for(bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) { @@ -3586,26 +3586,23 @@ kpress(XEvent *ev) {  	if((customkey = kmap(ksym, e->state))) {  		len = strlen(customkey);  		memcpy(buf, customkey, len); -	/* 3. hardcoded (overrides X lookup) */ +	/* 3. composed string from input method */  	} else {  		if(len == 0)  			return;  		if(len == 1 && e->state & Mod1Mask) {  			if(IS_SET(MODE_8BIT)) { -				if(*xstr < 0177) { -					c = *xstr | 0x80; -					ret = utf8encode(&c, cp); -					cp += ret; -					len = 0; +				if(*buf < 0177) { +					c = *buf | 0x80; +					len = utf8encode(&c, buf);  				}  			} else { -				*cp++ = '\033'; +				buf[1] = buf[0]; +				buf[0] = '\033'; +				len = 2;  			}  		} - -		memcpy(cp, xstr, len); -		len = cp - buf + len;  	}  	ttywrite(buf, len); | 
