diff --git a/st.c b/st.c index 72e57c8..ccdbc42 100644 --- a/st.c +++ b/st.c @@ -237,6 +237,7 @@ static void selinit(void); static inline int selected(int, int); static void selcopy(void); static void selpaste(); +static void clipboardpaste(); static void selscroll(int, int); static int utf8decode(char *, long *); @@ -520,6 +521,12 @@ selpaste() { } void +clipboardpaste() { + Atom clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0); + XConvertSelection(xw.dpy, clipboard, sel.xtarget, XA_PRIMARY, xw.win, CurrentTime); +} + +void selrequest(XEvent *e) { XSelectionRequestEvent *xsre; XSelectionEvent xev; @@ -1911,8 +1918,12 @@ kpress(XEvent *ev) { ttywrite(buf, 3); break; case XK_Insert: - if(shift) - selpaste(); + if(shift) { + if(meta) + clipboardpaste(); + else + selpaste(); + } break; case XK_Return: if(IS_SET(MODE_CRLF))