aboutsummaryrefslogtreecommitdiff
path: root/emcc.c
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2023-02-23 22:32:53 +0000
committerBen Harris <bjh21@bjh21.me.uk>2023-02-23 23:16:18 +0000
commit9dbcfa765ba59a8201425df18bec09c7bc334c5e (patch)
tree3aeaf692447bb8bbcbfa3cef2afda06cc3d958f7 /emcc.c
parent015bd1447472f82a5607ecb5fabaf25bf37cd4e2 (diff)
downloadpuzzles-9dbcfa765ba59a8201425df18bec09c7bc334c5e.zip
puzzles-9dbcfa765ba59a8201425df18bec09c7bc334c5e.tar.gz
puzzles-9dbcfa765ba59a8201425df18bec09c7bc334c5e.tar.bz2
puzzles-9dbcfa765ba59a8201425df18bec09c7bc334c5e.tar.xz
More cleverness in midend_process_key()
It now strips off modifier flags from keys that shouldn't have them and maps printable characters with MOD_CTRL to the corresponding control characters. It also catches Ctrl+Shift+Z because that obviously belongs in the midend. I've updated the JavaScript front-end to take advantage of these changes. Other front ends are unchanged and should work just as they did before.
Diffstat (limited to 'emcc.c')
-rw-r--r--emcc.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/emcc.c b/emcc.c
index 8037be4..eedfc35 100644
--- a/emcc.c
+++ b/emcc.c
@@ -408,19 +408,9 @@ bool key(int keycode, const char *key, const char *chr, int location,
keyevent = keycode;
if (keyevent >= 0) {
- if (shift && (keyevent >= 0x100 && !IS_UI_FAKE_KEY(keyevent)))
- keyevent |= MOD_SHFT;
-
- if (ctrl && !IS_UI_FAKE_KEY(keyevent)) {
- if (keyevent >= 0x100)
- keyevent |= MOD_CTRL;
- else
- keyevent &= 0x1F;
- }
-
- if ('0' <= keyevent && keyevent <= '9' &&
- location == DOM_KEY_LOCATION_NUMPAD)
- keyevent |= MOD_NUM_KEYPAD;
+ if (shift) keyevent |= MOD_SHFT;
+ if (ctrl) keyevent |= MOD_CTRL;
+ if (location == DOM_KEY_LOCATION_NUMPAD) keyevent |= MOD_NUM_KEYPAD;
midend_process_key(me, 0, 0, keyevent, &handled);
post_move();