Add 8 bit version of DCS, APC, PM, OSC
DCS, APC, PM, OSC version for 7 bits environments already was implemented in st. This patch adds the 8 bit version of it.
This commit is contained in:
		
							parent
							
								
									da78629cf5
								
							
						
					
					
						commit
						984c12d2a6
					
				
							
								
								
									
										39
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								st.c
									
									
									
									
									
								
							| @ -405,6 +405,7 @@ static void ttyread(void); | ||||
| static void ttyresize(void); | ||||
| static void ttysend(char *, size_t); | ||||
| static void ttywrite(const char *, size_t); | ||||
| static void tstrsequence(uchar c); | ||||
| 
 | ||||
| static void xdraws(char *, Glyph, int, int, int, int); | ||||
| static void xhints(void); | ||||
| @ -2347,6 +2348,30 @@ tdeftran(char ascii) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void | ||||
| tstrsequence(uchar c) { | ||||
| 	if (c & 0x80) { | ||||
| 		switch (c) { | ||||
| 		case 0x90:   /* DCS -- Device Control String */ | ||||
| 			c = 'P'; | ||||
| 			break; | ||||
| 		case 0x9f:   /* APC -- Application Program Command */ | ||||
| 			c = '_'; | ||||
| 			break; | ||||
| 		case 0x9e:   /* PM -- Privacy Message */ | ||||
| 			c = '^'; | ||||
| 			break; | ||||
| 		case 0x9d:   /* OSC -- Operating System Command */ | ||||
| 			c = ']'; | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	strreset(); | ||||
| 	strescseq.type = c; | ||||
| 	term.esc |= ESC_STR; | ||||
| 	return; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| tcontrolcode(uchar ascii) { | ||||
| 	static char question[UTF_SIZ] = "?"; | ||||
| @ -2411,7 +2436,6 @@ tcontrolcode(uchar ascii) { | ||||
| 	case 0x8d:   /* TODO: RI */ | ||||
| 	case 0x8e:   /* TODO: SS2 */ | ||||
| 	case 0x8f:   /* TODO: SS3 */ | ||||
| 	case 0x90:   /* TODO: DCS */ | ||||
| 	case 0x98:   /* TODO: SOS */ | ||||
| 		break; | ||||
| 	case 0x9a:   /* DECID -- Identify Terminal */ | ||||
| @ -2419,10 +2443,13 @@ tcontrolcode(uchar ascii) { | ||||
| 		break; | ||||
| 	case 0x9b:   /* TODO: CSI */ | ||||
| 	case 0x9c:   /* TODO: ST */ | ||||
| 	case 0x9d:   /* TODO: OSC */ | ||||
| 	case 0x9e:   /* TODO: PM */ | ||||
| 	case 0x9f:   /* TODO: APC */ | ||||
| 		break; | ||||
| 	case 0x90:   /* DCS -- Device Control String */ | ||||
| 	case 0x9f:   /* APC -- Application Program Command */ | ||||
| 	case 0x9e:   /* PM -- Privacy Message */ | ||||
| 	case 0x9d:   /* OSC -- Operating System Command */ | ||||
| 		tstrsequence(ascii); | ||||
| 		return; | ||||
| 	} | ||||
| 	/* only CAN, SUB, \a and C1 chars interrupt a sequence */ | ||||
| 	term.esc &= ~(ESC_STR_END|ESC_STR); | ||||
| @ -2538,9 +2565,7 @@ tputc(char *c, int len) { | ||||
| 			case '^': /* PM -- Privacy Message */ | ||||
| 			case ']': /* OSC -- Operating System Command */ | ||||
| 			case 'k': /* old title set compatibility */ | ||||
| 				strreset(); | ||||
| 				strescseq.type = ascii; | ||||
| 				term.esc |= ESC_STR; | ||||
| 				tstrsequence(ascii); | ||||
| 				return; | ||||
| 			case '(': /* set primary charset G0 */ | ||||
| 			case ')': /* set secondary charset G1 */ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Roberto E. Vargas Caballero
						Roberto E. Vargas Caballero