Add a possibility to modify the string sent by mouse buttons.
Thanks Alexander Rezinsky <alexrez@gmail.com> for the suggestion!
This commit is contained in:
		
							parent
							
								
									a77b01176a
								
							
						
					
					
						commit
						a53017c8b4
					
				
							
								
								
									
										10
									
								
								config.def.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								config.def.h
									
									
									
									
									
								
							| @ -74,7 +74,15 @@ static unsigned int defaultcs = 256; | |||||||
| static unsigned int defaultitalic = 11; | static unsigned int defaultitalic = 11; | ||||||
| static unsigned int defaultunderline = 7; | static unsigned int defaultunderline = 7; | ||||||
| 
 | 
 | ||||||
| /* Internal shortcuts. */ | /* Internal mouse shortcuts. */ | ||||||
|  | /* Beware that overloading Button1 will disable the selection. */ | ||||||
|  | static Mousekey mshortcuts[] = { | ||||||
|  | 	/* keysym		mask		string */ | ||||||
|  | 	{ Button4,		XK_ANY_MOD,	"\031"}, | ||||||
|  | 	{ Button5,		XK_ANY_MOD,	"\005"}, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /* Internal keyboard shortcuts. */ | ||||||
| #define MODKEY Mod1Mask | #define MODKEY Mod1Mask | ||||||
| 
 | 
 | ||||||
| static Shortcut shortcuts[] = { | static Shortcut shortcuts[] = { | ||||||
|  | |||||||
							
								
								
									
										26
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								st.c
									
									
									
									
									
								
							| @ -228,6 +228,12 @@ typedef struct { | |||||||
| 	char state; /* focus, redraw, visible */ | 	char state; /* focus, redraw, visible */ | ||||||
| } XWindow; | } XWindow; | ||||||
| 
 | 
 | ||||||
|  | typedef struct { | ||||||
|  | 	int b; | ||||||
|  | 	uint mask; | ||||||
|  | 	char s[ESC_BUF_SIZ]; | ||||||
|  | } Mousekey; | ||||||
|  | 
 | ||||||
| typedef struct { | typedef struct { | ||||||
| 	KeySym k; | 	KeySym k; | ||||||
| 	uint mask; | 	uint mask; | ||||||
| @ -771,10 +777,24 @@ mousereport(XEvent *e) { | |||||||
| void | void | ||||||
| bpress(XEvent *e) { | bpress(XEvent *e) { | ||||||
| 	struct timeval now; | 	struct timeval now; | ||||||
|  | 	Mousekey *mk; | ||||||
| 
 | 
 | ||||||
| 	if(IS_SET(MODE_MOUSE)) { | 	if(IS_SET(MODE_MOUSE)) { | ||||||
| 		mousereport(e); | 		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); | 		gettimeofday(&now, NULL); | ||||||
| 
 | 
 | ||||||
| 		/* Clear previous selection, logically and visually. */ | 		/* Clear previous selection, logically and visually. */ | ||||||
| @ -817,10 +837,6 @@ bpress(XEvent *e) { | |||||||
| 		} | 		} | ||||||
| 		sel.tclick2 = sel.tclick1; | 		sel.tclick2 = sel.tclick1; | ||||||
| 		sel.tclick1 = now; | 		sel.tclick1 = now; | ||||||
| 	} else if(e->xbutton.button == Button4) { |  | ||||||
| 		ttywrite("\031", 1); |  | ||||||
| 	} else if(e->xbutton.button == Button5) { |  | ||||||
| 		ttywrite("\005", 1); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Christoph Lohmann
						Christoph Lohmann