Xinqi Bao's Git
projects
/
st.git
/ diff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
8315dc4
)
Implementing mouse focus and all events.
author
Christoph Lohmann <
[email protected]
>
Sat, 1 Jun 2013 11:06:53 +0000
(13:06 +0200)
committer
Christoph Lohmann <
[email protected]
>
Sat, 1 Jun 2013 11:06:53 +0000
(13:06 +0200)
st.c
diff
|
blob
|
history
diff --git
a/st.c
b/st.c
index
3fcf543
..
321b58d
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-118,6
+118,7
@@
enum term_mode {
MODE_8BIT = 8192,
MODE_BLINK = 16384,
MODE_FBLINK = 32768,
MODE_8BIT = 8192,
MODE_BLINK = 16384,
MODE_FBLINK = 32768,
+ MODE_FOCUS = 65536,
};
enum escape_state {
};
enum escape_state {
@@
-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;
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;
case 1006:
MODBIT(term.mode, set, MODE_MOUSESGR);
break;
@@
-1807,6
+1815,9
@@
tsetmode(bool priv, bool set, int *args, int narg) {
case 1048:
tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD);
break;
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 mode %d\n",
default:
fprintf(stderr,
"erresc: unknown private set/reset mode %d\n",
@@
-3309,9
+3320,13
@@
focus(XEvent *ev) {
XSetICFocus(xw.xic);
xw.state |= WIN_FOCUSED;
xseturgency(0);
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;
} else {
XUnsetICFocus(xw.xic);
xw.state &= ~WIN_FOCUSED;
+ if(IS_SET(MODE_FOCUS))
+ ttywrite("\033[O", 3);
}
}
}
}