Add sequence for printing the current selection
This is very usefull in order to can select what is sent to the plumber.
This commit is contained in:
		| @@ -109,6 +109,7 @@ static Shortcut shortcuts[] = { | |||||||
| 	/* mask                 keysym          function        argument */ | 	/* mask                 keysym          function        argument */ | ||||||
| 	{ ControlMask,          XK_Print,       toggleprinter,  {.i =  0} }, | 	{ ControlMask,          XK_Print,       toggleprinter,  {.i =  0} }, | ||||||
| 	{ ShiftMask,            XK_Print,       printscreen,    {.i =  0} }, | 	{ ShiftMask,            XK_Print,       printscreen,    {.i =  0} }, | ||||||
|  | 	{ XK_ANY_MOD,           XK_Print,       printsel,       {.i =  0} }, | ||||||
| 	{ MODKEY|ShiftMask,     XK_Prior,       xzoom,          {.i = +1} }, | 	{ MODKEY|ShiftMask,     XK_Prior,       xzoom,          {.i = +1} }, | ||||||
| 	{ MODKEY|ShiftMask,     XK_Next,        xzoom,          {.i = -1} }, | 	{ MODKEY|ShiftMask,     XK_Next,        xzoom,          {.i = -1} }, | ||||||
| 	{ ShiftMask,            XK_Insert,      selpaste,       {.i =  0} }, | 	{ ShiftMask,            XK_Insert,      selpaste,       {.i =  0} }, | ||||||
|   | |||||||
							
								
								
									
										32
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								st.c
									
									
									
									
									
								
							| @@ -314,6 +314,7 @@ static void clippaste(const Arg *); | |||||||
| static void numlock(const Arg *); | static void numlock(const Arg *); | ||||||
| static void selpaste(const Arg *); | static void selpaste(const Arg *); | ||||||
| static void xzoom(const Arg *); | static void xzoom(const Arg *); | ||||||
|  | static void printsel(const Arg *); | ||||||
| static void printscreen(const Arg *) ; | static void printscreen(const Arg *) ; | ||||||
| static void toggleprinter(const Arg *); | static void toggleprinter(const Arg *); | ||||||
|  |  | ||||||
| @@ -359,6 +360,7 @@ static void strreset(void); | |||||||
|  |  | ||||||
| static int tattrset(int); | static int tattrset(int); | ||||||
| static void tprinter(char *s, size_t len); | static void tprinter(char *s, size_t len); | ||||||
|  | static void tdumpsel(void); | ||||||
| static void tdumpline(int); | static void tdumpline(int); | ||||||
| static void tdump(void); | static void tdump(void); | ||||||
| static void tclearregion(int, int, int, int); | static void tclearregion(int, int, int, int); | ||||||
| @@ -435,6 +437,7 @@ static void selrequest(XEvent *); | |||||||
| static void selinit(void); | static void selinit(void); | ||||||
| static void selsort(void); | static void selsort(void); | ||||||
| static inline bool selected(int, int); | static inline bool selected(int, int); | ||||||
|  | static char *getsel(void); | ||||||
| static void selcopy(void); | static void selcopy(void); | ||||||
| static void selscroll(int, int); | static void selscroll(int, int); | ||||||
| static void selsnap(int, int *, int *, int); | static void selsnap(int, int *, int *, int); | ||||||
| @@ -955,8 +958,8 @@ bpress(XEvent *e) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| void | char * | ||||||
| selcopy(void) { | getsel(void) { | ||||||
| 	char *str, *ptr; | 	char *str, *ptr; | ||||||
| 	int x, y, bufsize, size, i, ex; | 	int x, y, bufsize, size, i, ex; | ||||||
| 	Glyph *gp, *last; | 	Glyph *gp, *last; | ||||||
| @@ -1015,7 +1018,12 @@ selcopy(void) { | |||||||
| 		} | 		} | ||||||
| 		*ptr = 0; | 		*ptr = 0; | ||||||
| 	} | 	} | ||||||
| 	xsetsel(str); | 	return str; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | selcopy(void) { | ||||||
|  | 	xsetsel(getsel()); | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| @@ -1994,6 +2002,9 @@ csihandle(void) { | |||||||
| 		case 1: | 		case 1: | ||||||
| 			tdumpline(term.c.y); | 			tdumpline(term.c.y); | ||||||
| 			break; | 			break; | ||||||
|  | 		case 2: | ||||||
|  | 			tdumpsel(); | ||||||
|  | 			break; | ||||||
| 		case 4: | 		case 4: | ||||||
| 			term.mode &= ~MODE_PRINT; | 			term.mode &= ~MODE_PRINT; | ||||||
| 			break; | 			break; | ||||||
| @@ -2294,6 +2305,21 @@ printscreen(const Arg *arg) { | |||||||
| 	tdump(); | 	tdump(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | printsel(const Arg *arg) { | ||||||
|  | 	tdumpsel(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | tdumpsel(void) | ||||||
|  | { | ||||||
|  | 	char *ptr; | ||||||
|  |  | ||||||
|  | 	ptr = getsel(); | ||||||
|  | 	tprinter(ptr, strlen(ptr)); | ||||||
|  | 	free(ptr); | ||||||
|  | } | ||||||
|  |  | ||||||
| void | void | ||||||
| tdumpline(int n) { | tdumpline(int n) { | ||||||
| 	Glyph *bp, *end; | 	Glyph *bp, *end; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user