| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -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 */ | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |