| tSimplify Mod1 logic in kpress(), eliminating locals and a memcpy. - st - [fork… | |
| git clone git://src.adamsgaard.dk/st | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 02ae3ce6fdc178ca6eb9b10b6447bb56a6513a27 | |
| parent 7a4eefe87cb7661c8a77286d05b6c3afb467f806 | |
| Author: Mark Edgar <[email protected]> | |
| Date: Sat, 5 Oct 2013 11:45:17 +0200 | |
| Simplify Mod1 logic in kpress(), eliminating locals and a memcpy. | |
| Diffstat: | |
| M st.c | 23 ++++++++++------------- | |
| 1 file changed, 10 insertions(+), 13 deletions(-) | |
| --- | |
| diff --git a/st.c b/st.c | |
| t@@ -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; | |
| t@@ -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++) { | |
| t@@ -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); |