Add sequence for printing the current selection
This is very usefull in order to can select what is sent to the plumber.dev
parent
96c230e476
commit
78f8843bc7
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue