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); |