| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -38,11 +38,11 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/* Attribute, Cursor, Character state, Terminal mode, Screen draw mode */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { ATnone=0 , ATreverse=1 , ATunderline=2, ATbold=4 }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { CSup, CSdown, CSright, CSleft, CShide, CSdraw, CSwrap, CSsave, CSload }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { ATnone=0 , ATreverse=1 , ATunderline=2, ATbold=4, ATgfx=8 }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { CSup, CSdown, CSright, CSleft, CShide, CSdraw, CSsave, CSload }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { CRset=1, CRupdate=2 }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { TMwrap=1, TMinsert=2, TMtitle=4 }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { ESCin = 1, ESCcsi = 2, ESCosc = 4, ESCtitle = 8 }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { TMwrap=1, TMinsert=2 }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { ESCin=1, ESCcsi=2, ESCosc=4, ESCtitle=8, ESCcharset=16 }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					enum { SCupdate, SCredraw }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					typedef int Color; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -68,7 +68,7 @@ typedef struct { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/* ESC '[' [[ [<priv>] <arg> [;]] <mode>] */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					typedef struct { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						char buf[ESCSIZ]; /* raw string */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int len;            /* raw string length */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int len;          /* raw string length */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						char priv; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int arg[ESCARGSIZ]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int narg;           /* nb of args */ | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -389,7 +389,7 @@ tmoveto(int x, int y) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					tcursor(int dir) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int xf = term.c.x, yf = term.c.y; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						switch(dir) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case CSup: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							yf--; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -399,7 +399,7 @@ tcursor(int dir) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case CSleft: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							xf--; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(xf < 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(term.mode & TMwrap && xf < 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								xf = term.col-1, yf--; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(yf < term.top) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									yf = term.top, xf = 0; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -407,7 +407,7 @@ tcursor(int dir) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case CSright: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							xf++; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(xf >= term.col) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(term.mode & TMwrap && xf >= term.col) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								xf = 0, yf++; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(yf > term.bot) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									yf = term.bot, tscroll(); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -416,7 +416,7 @@ tcursor(int dir) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						tmoveto(xf, yf); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					tsetchar(char c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						term.line[term.c.y][term.c.x] = term.c.attr; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -535,7 +535,7 @@ tsetattr(int *attr, int l) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(i = 0; i < l; i++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							switch(attr[i]) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							case 0: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								memset(&term.c.attr, 0, sizeof(term.c.attr)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								term.c.attr.mode &= ~(ATreverse | ATunderline | ATbold); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								term.c.attr.fg = DefaultFG; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								term.c.attr.bg = DefaultBG; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								break; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -593,7 +593,10 @@ tsetscroll(int t, int b) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					csihandle(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(escseq.priv) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							csidump(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						switch(escseq.mode) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unknown: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						default: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							fprintf(stderr, "erresc: unknown sequence\n"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							csidump(); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -672,8 +675,16 @@ csihandle(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							tinsertblankline(escseq.arg[0]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case 'l': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(escseq.priv && escseq.arg[0] == 25) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(escseq.priv) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								switch(escseq.arg[0]) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 7: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									term.mode &= ~TMwrap; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 25: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									term.c.hidden = 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case 'M': /* Delete <n> lines */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							DEFAULT(escseq.arg[0], 1); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -689,15 +700,25 @@ csihandle(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							tmoveto(term.c.x, escseq.arg[0]-1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case 'h': /* Set terminal mode */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(escseq.priv && escseq.arg[0] == 25) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								term.c.hidden = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(escseq.priv) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								switch(escseq.arg[0]) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 7: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									term.mode |= TMwrap; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 25: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									term.c.hidden = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 1034: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									/* XXX: Interpret "meta" key, sets eighth bit. */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case 'm': /* Terminal attribute (color) */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							tsetattr(escseq.arg, escseq.narg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case 'r': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(escseq.priv) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								goto unknown; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								DEFAULT(escseq.arg[0], 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								DEFAULT(escseq.arg[1], term.row); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -766,6 +787,17 @@ tputc(char c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									term.title[term.titlelen++] = c; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} else if(term.esc & ESCcharset) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								printf("ESC ( %c\n", c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								switch(c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case '0': /* Line drawing crap */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									term.c.attr.mode |= ATgfx; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 'B': /* Back to regular text */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									term.c.attr.mode &= ~ATgfx; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								term.esc = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} else {		 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								switch(c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case '[': | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -774,6 +806,23 @@ tputc(char c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case ']': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									term.esc |= ESCosc; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case '(': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									term.esc |= ESCcharset; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 'A': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									tmoveto(term.c.x, term.c.y-1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 'B': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									tmoveto(term.c.x, term.c.y+1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 'C': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									tmoveto(term.c.x+1, term.c.y); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case 'D': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									tmoveto(term.c.x-1, term.c.y); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								default: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									fprintf(stderr, "erresc: unknown sequence ESC %02X '%c'\n", c, isprint(c)?c:'.'); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} else { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -931,6 +980,8 @@ void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					xdraws (char *s, Glyph base, int x, int y, int len) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned long xfg, xbg; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int winx = x*xw.cw, winy = y*xw.ch + dc.font->ascent, width = len*xw.cw; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int i; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(base.mode & ATreverse) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							xfg = dc.col[base.bg], xbg = dc.col[base.fg]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						else | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -938,6 +989,13 @@ xdraws (char *s, Glyph base, int x, int y, int len) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSetBackground(xw.dis, dc.gc, xbg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSetForeground(xw.dis, dc.gc, xfg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(base.mode & ATgfx) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						    | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(i = 0; i < len; i++) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								s[i] = gfx[s[i]]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XDrawImageString(xw.dis, xw.win, dc.gc, winx, winy, s, len); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(base.mode & ATunderline) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1006,7 +1064,8 @@ draw(int redraw_all) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							xdraws(buf, base, ox, y, i); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						xcursor(CSdraw); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!term.c.hidden) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							xcursor(CSdraw); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -1014,7 +1073,7 @@ expose(XEvent *ev) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						draw(SCredraw); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					char * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					char* | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					kmap(KeySym k) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int i; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(i = 0; i < LEN(key); i++) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |