diff -ur st.orig/st.c st/st.c --- st.orig/st.c 2013-09-18 16:04:38.922538972 +0200 +++ st/st.c 2013-09-18 16:10:57.034554647 +0200 @@ -132,6 +132,7 @@ MODE_FOCUS = 65536, MODE_MOUSEX10 = 131072, MODE_MOUSEMANY = 262144, + MODE_BRCKTPASTE = 524288, MODE_MOUSE = MODE_MOUSEBTN|MODE_MOUSEMOTION|MODE_MOUSEX10\ |MODE_MOUSEMANY, }; @@ -1013,7 +1014,11 @@ *repl++ = '\r'; } + if(IS_SET(MODE_BRCKTPASTE)) + ttywrite("\033[200~", 6); ttywrite((const char *)data, nitems * format / 8); + if(IS_SET(MODE_BRCKTPASTE)) + ttywrite("\033[201~", 6); XFree(data); /* number of 32-bit chunks returned */ ofs += nitems * format / 32; @@ -1868,6 +1873,9 @@ case 1048: tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD); break; + case 2004: /* 2004: bracketed paste mode */ + MODBIT(term.mode, set, MODE_BRCKTPASTE); + break; /* Not implemented mouse modes. See comments there. */ case 1001: /* mouse highlight mode; can hang the terminal by design when implemented. */