| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -228,6 +228,12 @@ typedef struct { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						char state; /* focus, redraw, visible */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} XWindow; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					typedef struct { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int b; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						uint mask; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						char s[ESC_BUF_SIZ]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} Mousekey; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					typedef struct { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						KeySym k; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						uint mask; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -771,10 +777,24 @@ mousereport(XEvent *e) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bpress(XEvent *e) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						struct timeval now; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Mousekey *mk; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(IS_SET(MODE_MOUSE)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							mousereport(e); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} else if(e->xbutton.button == Button1) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(mk = mshortcuts; mk < mshortcuts + LEN(mshortcuts); mk++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(e->xbutton.button == mk->b | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									&& match(mk->mask, e->xbutton.state)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								ttywrite(mk->s, strlen(mk->s)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(IS_SET(MODE_ECHO)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									techo(mk->s, strlen(mk->s)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(e->xbutton.button == Button1) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							gettimeofday(&now, NULL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							/* Clear previous selection, logically and visually. */ | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -817,10 +837,6 @@ bpress(XEvent *e) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							sel.tclick2 = sel.tclick1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							sel.tclick1 = now; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} else if(e->xbutton.button == Button4) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							ttywrite("\031", 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} else if(e->xbutton.button == Button5) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							ttywrite("\005", 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |