diff options
| -rw-r--r-- | config.def.h | 1 | ||||
| -rw-r--r-- | st.c | 32 | 
2 files changed, 30 insertions, 3 deletions
| diff --git a/config.def.h b/config.def.h index 47018a3..58b470e 100644 --- a/config.def.h +++ b/config.def.h @@ -109,6 +109,7 @@ static Shortcut shortcuts[] = {  	/* mask                 keysym          function        argument */  	{ ControlMask,          XK_Print,       toggleprinter,  {.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_Next,        xzoom,          {.i = -1} },  	{ ShiftMask,            XK_Insert,      selpaste,       {.i =  0} }, @@ -314,6 +314,7 @@ static void clippaste(const Arg *);  static void numlock(const Arg *);  static void selpaste(const Arg *);  static void xzoom(const Arg *); +static void printsel(const Arg *);  static void printscreen(const Arg *) ;  static void toggleprinter(const Arg *); @@ -359,6 +360,7 @@ static void strreset(void);  static int tattrset(int);  static void tprinter(char *s, size_t len); +static void tdumpsel(void);  static void tdumpline(int);  static void tdump(void);  static void tclearregion(int, int, int, int); @@ -435,6 +437,7 @@ static void selrequest(XEvent *);  static void selinit(void);  static void selsort(void);  static inline bool selected(int, int); +static char *getsel(void);  static void selcopy(void);  static void selscroll(int, int);  static void selsnap(int, int *, int *, int); @@ -955,8 +958,8 @@ bpress(XEvent *e) {  	}  } -void -selcopy(void) { +char * +getsel(void) {  	char *str, *ptr;  	int x, y, bufsize, size, i, ex;  	Glyph *gp, *last; @@ -1015,7 +1018,12 @@ selcopy(void) {  		}  		*ptr = 0;  	} -	xsetsel(str); +	return str; +} + +void +selcopy(void) { +	xsetsel(getsel());  }  void @@ -1994,6 +2002,9 @@ csihandle(void) {  		case 1:  			tdumpline(term.c.y);  			break; +		case 2: +			tdumpsel(); +			break;  		case 4:  			term.mode &= ~MODE_PRINT;  			break; @@ -2295,6 +2306,21 @@ printscreen(const Arg *arg) {  }  void +printsel(const Arg *arg) { +	tdumpsel(); +} + +void +tdumpsel(void) +{ +	char *ptr; + +	ptr = getsel(); +	tprinter(ptr, strlen(ptr)); +	free(ptr); +} + +void  tdumpline(int n) {  	Glyph *bp, *end; | 
