# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 2bd6afd1c9eb341d9e2c5d89bc16bb7758691e1f
    parent b596d6ba3c50bc379adc298a4e2ba7c122b116ab
    Author: Christoph Lohmann <20h@r-36.net>
    Date:   Tue, 23 Apr 2013 15:22:14 +0200

    Implementing 8 bit mode for meta.

    Diffstat:
    Mst.c | 23+++++++++++++++++++----
    Mst.info | 3+++

    2 files changed, 22 insertions(+), 4 deletions(-)
    diff --git a/st.c b/st.c
    @@ -114,6 +114,7 @@ enum term_mode {
     	MODE_ECHO	 = 1024,
     	MODE_APPCURSOR	 = 2048,
     	MODE_MOUSESGR    = 4096,
    +	MODE_8BIT	 = 8192,
     };

     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 1034:
    +				MODBIT(term.mode, set, MODE_8BIT);
    +				break;
     			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;
    -	int len;
    +	int len, ret;
    +	long c;
     	Status status;
     	Shortcut *bp;

    @@ -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
    @@ -147,6 +147,7 @@ st| simpleterm,
     	kich1=\E[2~,
     	knp=\E[6~,
     	kmous=\E[M,
    +	km,
     	kpp=\E[5~,
     	lines#24,
     	mir,
    @@ -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,
    @@ -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,