Implementing 8 bit mode for meta.
This commit is contained in:
		
							parent
							
								
									b596d6ba3c
								
							
						
					
					
						commit
						2bd6afd1c9
					
				
							
								
								
									
										21
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								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) | ||||
| 		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; | ||||
|  | ||||
							
								
								
									
										3
									
								
								st.info
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								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, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Christoph Lohmann
						Christoph Lohmann