tImplementing mouse focus and all events. - st - [fork] customized build of st,… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 405fd89ac1d333be79325417c973a07ccad67453 | |
parent 8315dc417982936186837edfac24420d0d0e516e | |
Author: Christoph Lohmann <[email protected]> | |
Date: Sat, 1 Jun 2013 13:06:53 +0200 | |
Implementing mouse focus and all events. | |
Diffstat: | |
M st.c | 15 +++++++++++++++ | |
1 file changed, 15 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -118,6 +118,7 @@ enum term_mode { | |
MODE_8BIT = 8192, | |
MODE_BLINK = 16384, | |
MODE_FBLINK = 32768, | |
+ MODE_FOCUS = 65536, | |
}; | |
enum escape_state { | |
t@@ -1782,6 +1783,13 @@ tsetmode(bool priv, bool set, int *args, int narg) { | |
MODBIT(term.mode, set, MODE_MOUSEMOTION); | |
MODBIT(term.mode, 0, MODE_MOUSEBTN); | |
break; | |
+ case 1003: /* 1003: enable all mouse reports */ | |
+ MODBIT(term.mode, set, MODE_MOUSEMOTION); | |
+ MODBIT(term.mode, set, MODE_MOUSEBTN); | |
+ break; | |
+ case 1004: | |
+ MODBIT(term.mode, set, MODE_FOCUS); | |
+ break; | |
case 1006: | |
MODBIT(term.mode, set, MODE_MOUSESGR); | |
break; | |
t@@ -1807,6 +1815,9 @@ tsetmode(bool priv, bool set, int *args, int narg) { | |
case 1048: | |
tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD); | |
break; | |
+ case 9: /* X10 compatibility mode */ | |
+ case 1001: /* mouse highlight mode; can hang the | |
+ terminal when implemented. */ | |
default: | |
fprintf(stderr, | |
"erresc: unknown private set/reset mod… | |
t@@ -3309,9 +3320,13 @@ focus(XEvent *ev) { | |
XSetICFocus(xw.xic); | |
xw.state |= WIN_FOCUSED; | |
xseturgency(0); | |
+ if(IS_SET(MODE_FOCUS)) | |
+ ttywrite("\033[I", 3); | |
} else { | |
XUnsetICFocus(xw.xic); | |
xw.state &= ~WIN_FOCUSED; | |
+ if(IS_SET(MODE_FOCUS)) | |
+ ttywrite("\033[O", 3); | |
} | |
} | |