Browse Source

Add sequence for printing the current selection

This is very usefull in order to can select what is sent
to the plumber.
master
Roberto E. Vargas Caballero 10 years ago
parent
commit
78f8843bc7
2 changed files with 30 additions and 3 deletions
  1. +1
    -0
      config.def.h
  2. +29
    -3
      st.c

+ 1
- 0
config.def.h View File

@ -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} },


+ 29
- 3
st.c View File

@ -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
selcopy(void) {
char *
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;


Loading…
Cancel
Save