aboutsummarylogtreecommitdiffstats
path: root/st.c
diff options
context:
space:
mode:
authorRoberto E. Vargas Caballero2012-09-24 10:28:05 +0200
committerRoberto E. Vargas Caballero2012-09-24 10:28:05 +0200
commitce06c3dc8de22a02b9662bfdac86cb671078f74e (patch)
tree38ce7357a5c82ef9189f32b8d66fbc02bb64d90a /st.c
parent8c5333ccd7533ceb65b69e76d1c464d651b1049f (diff)
downloadaur-ce06c3dc8de22a02b9662bfdac86cb671078f74e.tar.gz
Add KAM sequence
This sequence lock/unlock the keyboard ignoring all the key pressing events from X server. --- st.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
Diffstat (limited to 'st.c')
-rw-r--r--st.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/st.c b/st.c
index 83edbb8a27d3..538ed9a4c216 100644
--- a/st.c
+++ b/st.c
@@ -110,7 +110,8 @@ enum term_mode {
MODE_MOUSEBTN = 32,
MODE_MOUSEMOTION = 64,
MODE_MOUSE = 32|64,
- MODE_REVERSE = 128
+ MODE_REVERSE = 128,
+ MODE_KBDLOCK = 256
};
enum escape_state {
@@ -1328,6 +1329,9 @@ tsetmode(bool priv, bool set, int *args, int narg) {
}
} else {
switch(*args) {
+ case 2:
+ MODBIT(term.mode, set, MODE_KBDLOCK);
+ break;
case 4:
MODBIT(term.mode, set, MODE_INSERT);
break;
@@ -2257,6 +2261,8 @@ kpress(XEvent *ev) {
int shift;
Status status;
+ if (IS_SET(MODE_KBDLOCK))
+ return;
meta = e->state & Mod1Mask;
shift = e->state & ShiftMask;
len = XmbLookupString(xw.xic, e, buf, sizeof(buf), &ksym, &status);