Xinqi Bao's Git
projects
/
st.git
/ commitdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
b596d6b
)
Implementing 8 bit mode for meta.
author
Christoph Lohmann <
[email protected]
>
Tue, 23 Apr 2013 13:22:14 +0000
(15:22 +0200)
committer
Christoph Lohmann <
[email protected]
>
Tue, 23 Apr 2013 13:22:14 +0000
(15:22 +0200)
st.c
patch
|
blob
|
history
st.info
patch
|
blob
|
history
diff --git
a/st.c
b/st.c
index
71e5b83
..
f593302
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-114,6
+114,7
@@
enum term_mode {
MODE_ECHO = 1024,
MODE_APPCURSOR = 2048,
MODE_MOUSESGR = 4096,
MODE_ECHO = 1024,
MODE_APPCURSOR = 2048,
MODE_MOUSESGR = 4096,
+ MODE_8BIT = 8192,
};
enum escape_state {
};
enum escape_state {
@@
-1650,6
+1651,9
@@
tsetmode(bool priv, bool set, int *args, int narg) {
case 1006:
MODBIT(term.mode, set, MODE_MOUSESGR);
break;
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:
case 1049: /* = 1047 and 1048 */
case 47:
case 1047:
@@
-3228,7
+3232,8
@@
kpress(XEvent *ev) {
XKeyEvent *e = &ev->xkey;
KeySym ksym;
char xstr[31], buf[32], *customkey, *cp = buf;
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;
Status status;
Shortcut *bp;
@@
-3249,13
+3254,23
@@
kpress(XEvent *ev) {
if((customkey = kmap(ksym, e->state))) {
len = strlen(customkey);
memcpy(buf, customkey, len);
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;
} 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;
memcpy(cp, xstr, len);
len = cp - buf + len;
diff --git
a/st.info
b/st.info
index
1c83dc1
..
26db8cc
100644
(file)
--- a/
st.info
+++ b/
st.info
@@
-147,6
+147,7
@@
st| simpleterm,
kich1=\E[2~,
knp=\E[6~,
kmous=\E[M,
kich1=\E[2~,
knp=\E[6~,
kmous=\E[M,
+ km,
kpp=\E[5~,
lines#24,
mir,
kpp=\E[5~,
lines#24,
mir,
@@
-162,6
+163,7
@@
st| simpleterm,
rmcup=\E[?1049l,
rmir=\E[4l,
rmkx=\E[?1l\E>,
rmcup=\E[?1049l,
rmir=\E[4l,
rmkx=\E[?1l\E>,
+ rmm=\E[?1034l,
rmso=\E[27m,
rmul=\E[m,
rs1=\Ec,
rmso=\E[27m,
rmul=\E[m,
rs1=\Ec,
@@
-178,6
+180,7
@@
st| simpleterm,
smcup=\E[?1049h,
smir=\E[4h,
smkx=\E[?1h\E=,
smcup=\E[?1049h,
smir=\E[4h,
smkx=\E[?1h\E=,
+ smm=\E[?1034h,
smso=\E[7m,
smul=\E[4m,
tbc=\E[3g,
smso=\E[7m,
smul=\E[4m,
tbc=\E[3g,