diff options
| author | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2012-09-24 10:28:05 +0200 |
|---|---|---|
| committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2012-09-24 10:28:05 +0200 |
| commit | 2f215654a4b27eb573fb6551d28bdf760e95ef58 (patch) | |
| tree | 24b94ecc9007a497a04ac959f51dbe8eff27ef71 | |
| parent | Remove unused parameters in ttyresize (diff) | |
| download | st-2f215654a4b27eb573fb6551d28bdf760e95ef58.tar.gz st-2f215654a4b27eb573fb6551d28bdf760e95ef58.zip | |
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 '')
| -rw-r--r-- | st.c | 8 |
1 files changed, 7 insertions, 1 deletions
| @@ -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 | ||
| 116 | enum escape_state { | 117 | enum 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); |
