aboutsummaryrefslogtreecommitdiff
path: root/st.c
diff options
context:
space:
mode:
Diffstat (limited to 'st.c')
-rw-r--r--st.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/st.c b/st.c
index 3fcf543..321b58d 100644
--- a/st.c
+++ b/st.c
@@ -118,6 +118,7 @@ enum term_mode {
118 MODE_8BIT = 8192, 118 MODE_8BIT = 8192,
119 MODE_BLINK = 16384, 119 MODE_BLINK = 16384,
120 MODE_FBLINK = 32768, 120 MODE_FBLINK = 32768,
121 MODE_FOCUS = 65536,
121}; 122};
122 123
123enum escape_state { 124enum escape_state {
@@ -1782,6 +1783,13 @@ tsetmode(bool priv, bool set, int *args, int narg) {
1782 MODBIT(term.mode, set, MODE_MOUSEMOTION); 1783 MODBIT(term.mode, set, MODE_MOUSEMOTION);
1783 MODBIT(term.mode, 0, MODE_MOUSEBTN); 1784 MODBIT(term.mode, 0, MODE_MOUSEBTN);
1784 break; 1785 break;
1786 case 1003: /* 1003: enable all mouse reports */
1787 MODBIT(term.mode, set, MODE_MOUSEMOTION);
1788 MODBIT(term.mode, set, MODE_MOUSEBTN);
1789 break;
1790 case 1004:
1791 MODBIT(term.mode, set, MODE_FOCUS);
1792 break;
1785 case 1006: 1793 case 1006:
1786 MODBIT(term.mode, set, MODE_MOUSESGR); 1794 MODBIT(term.mode, set, MODE_MOUSESGR);
1787 break; 1795 break;
@@ -1807,6 +1815,9 @@ tsetmode(bool priv, bool set, int *args, int narg) {
1807 case 1048: 1815 case 1048:
1808 tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD); 1816 tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD);
1809 break; 1817 break;
1818 case 9: /* X10 compatibility mode */
1819 case 1001: /* mouse highlight mode; can hang the
1820 terminal when implemented. */
1810 default: 1821 default:
1811 fprintf(stderr, 1822 fprintf(stderr,
1812 "erresc: unknown private set/reset mode %d\n", 1823 "erresc: unknown private set/reset mode %d\n",
@@ -3309,9 +3320,13 @@ focus(XEvent *ev) {
3309 XSetICFocus(xw.xic); 3320 XSetICFocus(xw.xic);
3310 xw.state |= WIN_FOCUSED; 3321 xw.state |= WIN_FOCUSED;
3311 xseturgency(0); 3322 xseturgency(0);
3323 if(IS_SET(MODE_FOCUS))
3324 ttywrite("\033[I", 3);
3312 } else { 3325 } else {
3313 XUnsetICFocus(xw.xic); 3326 XUnsetICFocus(xw.xic);
3314 xw.state &= ~WIN_FOCUSED; 3327 xw.state &= ~WIN_FOCUSED;
3328 if(IS_SET(MODE_FOCUS))
3329 ttywrite("\033[O", 3);
3315 } 3330 }
3316} 3331}
3317 3332