summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--st.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/st.c b/st.c
index 83edbb8..538ed9a 100644
--- a/st.c
+++ b/st.c
@@ -110,7 +110,8 @@ enum term_mode {
110 MODE_MOUSEBTN = 32, 110 MODE_MOUSEBTN = 32,
111 MODE_MOUSEMOTION = 64, 111 MODE_MOUSEMOTION = 64,
112 MODE_MOUSE = 32|64, 112 MODE_MOUSE = 32|64,
113 MODE_REVERSE = 128 113 MODE_REVERSE = 128,
114 MODE_KBDLOCK = 256
114}; 115};
115 116
116enum escape_state { 117enum escape_state {
@@ -1328,6 +1329,9 @@ tsetmode(bool priv, bool set, int *args, int narg) {
1328 } 1329 }
1329 } else { 1330 } else {
1330 switch(*args) { 1331 switch(*args) {
1332 case 2:
1333 MODBIT(term.mode, set, MODE_KBDLOCK);
1334 break;
1331 case 4: 1335 case 4:
1332 MODBIT(term.mode, set, MODE_INSERT); 1336 MODBIT(term.mode, set, MODE_INSERT);
1333 break; 1337 break;
@@ -2257,6 +2261,8 @@ kpress(XEvent *ev) {
2257 int shift; 2261 int shift;
2258 Status status; 2262 Status status;
2259 2263
2264 if (IS_SET(MODE_KBDLOCK))
2265 return;
2260 meta = e->state & Mod1Mask; 2266 meta = e->state & Mod1Mask;
2261 shift = e->state & ShiftMask; 2267 shift = e->state & ShiftMask;
2262 len = XmbLookupString(xw.xic, e, buf, sizeof(buf), &ksym, &status); 2268 len = XmbLookupString(xw.xic, e, buf, sizeof(buf), &ksym, &status);