mouse shortcuts: allow same functions as kb shortcuts
Previously mouse shortcuts supported only ttywrite. This required adding an "Arg" function ttysend - which does what the original mouse shortcuts did.
This commit is contained in:
		
							parent
							
								
									2b8333f553
								
							
						
					
					
						commit
						ba7f4d69af
					
				| @ -155,9 +155,9 @@ static unsigned int defaultattr = 11; | ||||
|  * Beware that overloading Button1 will disable the selection. | ||||
|  */ | ||||
| static MouseShortcut mshortcuts[] = { | ||||
| 	/* button               mask            string */ | ||||
| 	{ Button4,              XK_ANY_MOD,     "\031" }, | ||||
| 	{ Button5,              XK_ANY_MOD,     "\005" }, | ||||
| 	/* mask                 button   function        argument */ | ||||
| 	{ XK_ANY_MOD,           Button4, ttysend,        {.s = "\031"} }, | ||||
| 	{ XK_ANY_MOD,           Button5, ttysend,        {.s = "\005"} }, | ||||
| }; | ||||
| 
 | ||||
| /* Internal keyboard shortcuts. */ | ||||
|  | ||||
							
								
								
									
										1
									
								
								st.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								st.h
									
									
									
									
									
								
							| @ -74,6 +74,7 @@ typedef union { | ||||
| 	uint ui; | ||||
| 	float f; | ||||
| 	const void *v; | ||||
| 	const char *s; | ||||
| } Arg; | ||||
| 
 | ||||
| void die(const char *, ...); | ||||
|  | ||||
							
								
								
									
										20
									
								
								x.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								x.c
									
									
									
									
									
								
							| @ -29,9 +29,10 @@ typedef struct { | ||||
| } Shortcut; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	uint b; | ||||
| 	uint mask; | ||||
| 	char *s; | ||||
| 	uint mod; | ||||
| 	uint button; | ||||
| 	void (*func)(const Arg *); | ||||
| 	const Arg arg; | ||||
| } MouseShortcut; | ||||
| 
 | ||||
| typedef struct { | ||||
| @ -56,6 +57,7 @@ static void selpaste(const Arg *); | ||||
| static void zoom(const Arg *); | ||||
| static void zoomabs(const Arg *); | ||||
| static void zoomreset(const Arg *); | ||||
| static void ttysend(const Arg *); | ||||
| 
 | ||||
| /* config.h for applying patches and the configuration. */ | ||||
| #include "config.h" | ||||
| @ -312,6 +314,12 @@ zoomreset(const Arg *arg) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void | ||||
| ttysend(const Arg *arg) | ||||
| { | ||||
| 	ttywrite(arg->s, strlen(arg->s), 1); | ||||
| } | ||||
| 
 | ||||
| int | ||||
| evcol(XEvent *e) | ||||
| { | ||||
| @ -421,9 +429,9 @@ bpress(XEvent *e) | ||||
| 	} | ||||
| 
 | ||||
| 	for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { | ||||
| 		if (e->xbutton.button == ms->b | ||||
| 				&& match(ms->mask, e->xbutton.state)) { | ||||
| 			ttywrite(ms->s, strlen(ms->s), 1); | ||||
| 		if (e->xbutton.button == ms->button | ||||
| 				&& match(ms->mod, e->xbutton.state)) { | ||||
| 			ms->func(&(ms->arg)); | ||||
| 			return; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Avi Halachmi (:avih)
						Avi Halachmi (:avih)