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:
		
							
								
								
									
										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 */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user