diff options
author | Mark Edgar | 2013-10-05 11:45:17 +0200 |
---|---|---|
committer | Roberto E. Vargas Caballero | 2013-10-07 20:56:51 +0200 |
commit | 02ae3ce6fdc178ca6eb9b10b6447bb56a6513a27 (patch) | |
tree | 43139a5428d7611793677c5ff26652659542bec4 | |
parent | 7a4eefe87cb7661c8a77286d05b6c3afb467f806 (diff) | |
download | st-02ae3ce6fdc178ca6eb9b10b6447bb56a6513a27.tar.gz st-02ae3ce6fdc178ca6eb9b10b6447bb56a6513a27.tar.xz st-02ae3ce6fdc178ca6eb9b10b6447bb56a6513a27.zip |
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); |