aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--midend.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/midend.c b/midend.c
index f9ebf77..7a6aa92 100644
--- a/midend.c
+++ b/midend.c
@@ -1213,15 +1213,21 @@ int midend_process_key(midend *me, int x, int y, int button)
}
/* Canonicalise CTRL+ASCII. */
- if ((button & MOD_CTRL) && (button & ~MOD_MASK) < 0x80)
+ if ((button & MOD_CTRL) &&
+ (button & ~MOD_MASK) >= 0x40 && (button & ~MOD_MASK) < 0x80)
button = button & (0x1f | (MOD_MASK & ~MOD_CTRL));
/* Special handling to make CTRL+SHFT+Z into REDO. */
if ((button & (~MOD_MASK | MOD_SHFT)) == (MOD_SHFT | '\x1A'))
button = UI_REDO;
/* interpret_move() expects CTRL and SHFT only on cursor keys. */
- if (!IS_CURSOR_MOVE(button & ~MOD_MASK))
+ if (!IS_CURSOR_MOVE(button & ~MOD_MASK)) {
+ /* reject CTRL+anything odd */
+ if ((button & MOD_CTRL) && (button & ~MOD_MASK) >= 0x20)
+ printf(" -> %d\n", PKR_UNUSED);
+ /* otherwise strip them */
button &= ~(MOD_CTRL | MOD_SHFT);
- /* ... and NUM_KEYPAD only on numbers. */
+ }
+ /* interpret_move() expects NUM_KEYPAD only on numbers. */
if ((button & ~MOD_MASK) < '0' || (button & ~MOD_MASK) > '9')
button &= ~MOD_NUM_KEYPAD;
/*