diff --git a/emcc.c b/emcc.c index 0a4ddae..b6a1f12 100644 --- a/emcc.c +++ b/emcc.c @@ -267,20 +267,19 @@ void key(int keycode, int charcode, const char *key, const char *chr, { int keyevent = -1; - if (!strnullcmp(key, "Backspace") || !strnullcmp(key, "Del") || - keycode == 8 || keycode == 46) + if (!strnullcmp(key, "Backspace") || !strnullcmp(key, "Del")) keyevent = 127; /* Backspace / Delete */ - else if (!strnullcmp(key, "Enter") || keycode == 13) + else if (!strnullcmp(key, "Enter")) keyevent = 13; /* return */ - else if (!strnullcmp(key, "Left") || keycode == 37) + else if (!strnullcmp(key, "Left")) keyevent = CURSOR_LEFT; - else if (!strnullcmp(key, "Up") || keycode == 38) + else if (!strnullcmp(key, "Up")) keyevent = CURSOR_UP; - else if (!strnullcmp(key, "Right") || keycode == 39) + else if (!strnullcmp(key, "Right")) keyevent = CURSOR_RIGHT; - else if (!strnullcmp(key, "Down") || keycode == 40) + else if (!strnullcmp(key, "Down")) keyevent = CURSOR_DOWN; - else if (!strnullcmp(key, "End") || keycode == 35) + else if (!strnullcmp(key, "End")) /* * We interpret Home, End, PgUp and PgDn as numeric keypad * controls regardless of whether they're the ones on the @@ -290,11 +289,31 @@ void key(int keycode, int charcode, const char *key, const char *chr, * puzzles like Cube and Inertia. */ keyevent = MOD_NUM_KEYPAD | '1'; - else if (!strnullcmp(key, "PageDown") || keycode==34) + else if (!strnullcmp(key, "PageDown")) keyevent = MOD_NUM_KEYPAD | '3'; - else if (!strnullcmp(key, "Home") || keycode==36) + else if (!strnullcmp(key, "Home")) keyevent = MOD_NUM_KEYPAD | '7'; - else if (!strnullcmp(key, "PageUp") || keycode==33) + else if (!strnullcmp(key, "PageUp")) + keyevent = MOD_NUM_KEYPAD | '9'; + else if (keycode == 8 || keycode == 46) + keyevent = 127; /* Backspace / Delete */ + else if (keycode == 13) + keyevent = 13; /* return */ + else if (keycode == 37) + keyevent = CURSOR_LEFT; + else if (keycode == 38) + keyevent = CURSOR_UP; + else if (keycode == 39) + keyevent = CURSOR_RIGHT; + else if (keycode == 40) + keyevent = CURSOR_DOWN; + else if (keycode == 35) + keyevent = MOD_NUM_KEYPAD | '1'; + else if (keycode == 34) + keyevent = MOD_NUM_KEYPAD | '3'; + else if (keycode == 36) + keyevent = MOD_NUM_KEYPAD | '7'; + else if (keycode == 33) keyevent = MOD_NUM_KEYPAD | '9'; else if (shift && ctrl && (keycode & 0x1F) == 26) keyevent = UI_REDO;