aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2023-03-04 14:30:37 +0000
committerSimon Tatham <anakin@pobox.com>2023-03-04 14:36:13 +0000
commitfe40cda75a9665f7b464fa9909de0a7f62613817 (patch)
tree504abfd5dcfbb4810e6337ce3e42e26491fcba8f
parentc0f715fbaca77fbb6e86de604098d82687bdea48 (diff)
downloadpuzzles-fe40cda75a9665f7b464fa9909de0a7f62613817.zip
puzzles-fe40cda75a9665f7b464fa9909de0a7f62613817.tar.gz
puzzles-fe40cda75a9665f7b464fa9909de0a7f62613817.tar.bz2
puzzles-fe40cda75a9665f7b464fa9909de0a7f62613817.tar.xz
Treat keypad-Enter as CURSOR_SELECT, same as Return.
The two Return/Enter keys have always been treated the same in the past, but a user complained today that Enter was no longer functioning as CURSOR_SELECT in the web puzzles. This happened in commit 9dbcfa765ba59a8, apparently because the web front end is now translating the Enter key as MOD_NUM_KEYPAD | '\r' instead of just '\r', and the new code in midend.c is only stripping off MOD_NUM_KEYPAD for values >= 0x80. Now it strips MOD_NUM_KEYPAD off C0 control characters as well, so that only _printable_ ASCII characters can still have that modifier when they get to the backend - i.e. you can tell numpad digits from normal digits, and ditto +-* etc. But keypad Enter is now turned into plain '\r' by the modifier removal code, and then into CURSOR_SELECT. Other front ends still aren't even bothering to set MOD_NUM_KEYPAD on the code sent by Enter. But that's fine, because now midend.c officially doesn't care whether they do or not.
-rw-r--r--midend.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/midend.c b/midend.c
index 90bcde2..72330b7 100644
--- a/midend.c
+++ b/midend.c
@@ -1182,8 +1182,8 @@ bool midend_process_key(midend *me, int x, int y, int button, bool *handled)
/* interpret_move() expects CTRL and SHFT only on cursor keys. */
if (!IS_CURSOR_MOVE(button & ~MOD_MASK))
button &= ~(MOD_CTRL | MOD_SHFT);
- /* ... and NUM_KEYPAD only on ASCII values. */
- if ((button & ~MOD_MASK) >= 0x80)
+ /* ... and NUM_KEYPAD only on printable ASCII values. */
+ if ((button & ~MOD_MASK) < 0x20 || (button & ~MOD_MASK) >= 0x80)
button &= ~MOD_NUM_KEYPAD;
/*
* Translate keyboard presses to cursor selection.