tImplementing 8 bit mode for meta. - st - [fork] customized build of st, the si… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 2bd6afd1c9eb341d9e2c5d89bc16bb7758691e1f | |
parent b596d6ba3c50bc379adc298a4e2ba7c122b116ab | |
Author: Christoph Lohmann <[email protected]> | |
Date: Tue, 23 Apr 2013 15:22:14 +0200 | |
Implementing 8 bit mode for meta. | |
Diffstat: | |
M st.c | 23 +++++++++++++++++++---- | |
M st.info | 3 +++ | |
2 files changed, 22 insertions(+), 4 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -114,6 +114,7 @@ enum term_mode { | |
MODE_ECHO = 1024, | |
MODE_APPCURSOR = 2048, | |
MODE_MOUSESGR = 4096, | |
+ MODE_8BIT = 8192, | |
}; | |
enum escape_state { | |
t@@ -1650,6 +1651,9 @@ tsetmode(bool priv, bool set, int *args, int narg) { | |
case 1006: | |
MODBIT(term.mode, set, MODE_MOUSESGR); | |
break; | |
+ case 1034: | |
+ MODBIT(term.mode, set, MODE_8BIT); | |
+ break; | |
case 1049: /* = 1047 and 1048 */ | |
case 47: | |
case 1047: | |
t@@ -3228,7 +3232,8 @@ kpress(XEvent *ev) { | |
XKeyEvent *e = &ev->xkey; | |
KeySym ksym; | |
char xstr[31], buf[32], *customkey, *cp = buf; | |
- int len; | |
+ int len, ret; | |
+ long c; | |
Status status; | |
Shortcut *bp; | |
t@@ -3249,13 +3254,23 @@ kpress(XEvent *ev) { | |
if((customkey = kmap(ksym, e->state))) { | |
len = strlen(customkey); | |
memcpy(buf, customkey, len); | |
- /* 2. hardcoded (overrides X lookup) */ | |
+ /* 3. hardcoded (overrides X lookup) */ | |
} else { | |
if(len == 0) | |
return; | |
- if(len == 1 && e->state & Mod1Mask) | |
- *cp++ = '\033'; | |
+ if(len == 1 && e->state & Mod1Mask) { | |
+ if(IS_SET(MODE_8BIT)) { | |
+ if(*xstr < 0177) { | |
+ c = *xstr | B7; | |
+ ret = utf8encode(&c, cp); | |
+ cp += ret; | |
+ len = 0; | |
+ } | |
+ } else { | |
+ *cp++ = '\033'; | |
+ } | |
+ } | |
memcpy(cp, xstr, len); | |
len = cp - buf + len; | |
diff --git a/st.info b/st.info | |
t@@ -147,6 +147,7 @@ st| simpleterm, | |
kich1=\E[2~, | |
knp=\E[6~, | |
kmous=\E[M, | |
+ km, | |
kpp=\E[5~, | |
lines#24, | |
mir, | |
t@@ -162,6 +163,7 @@ st| simpleterm, | |
rmcup=\E[?1049l, | |
rmir=\E[4l, | |
rmkx=\E[?1l\E>, | |
+ rmm=\E[?1034l, | |
rmso=\E[27m, | |
rmul=\E[m, | |
rs1=\Ec, | |
t@@ -178,6 +180,7 @@ st| simpleterm, | |
smcup=\E[?1049h, | |
smir=\E[4h, | |
smkx=\E[?1h\E=, | |
+ smm=\E[?1034h, | |
smso=\E[7m, | |
smul=\E[4m, | |
tbc=\E[3g, |