X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=emcc.c;h=23ab333f5db0cb58b7579b10b9f974d4e45f9c95;hb=db313b3948d27244dd7c34c2609c66d6204d8931;hp=e25fdf86dd633bc9e0d69179b0e136b52209c134;hpb=721119e4a61cbb261b456dfd134811d7beb5ce98;p=sgt-puzzles.git diff --git a/emcc.c b/emcc.c index e25fdf8..23ab333 100644 --- a/emcc.c +++ b/emcc.c @@ -310,6 +310,8 @@ void key(int keycode, int charcode, const char *key, const char *chr, keyevent = MOD_NUM_KEYPAD | '7'; } else if (!strnullcmp(key, "PageUp") || keycode==33) { keyevent = MOD_NUM_KEYPAD | '9'; + } else if (shift && ctrl && (keycode & 0x1F) == 26) { + keyevent = UI_REDO; } else if (chr && chr[0] && !chr[1]) { keyevent = chr[0] & 0xFF; } else if (keycode >= 96 && keycode < 106) { @@ -323,10 +325,10 @@ void key(int keycode, int charcode, const char *key, const char *chr, } if (keyevent >= 0) { - if (shift && keyevent >= 0x100) + if (shift && (keyevent >= 0x100 && !IS_UI_FAKE_KEY(keyevent))) keyevent |= MOD_SHFT; - if (ctrl) { + if (ctrl && !IS_UI_FAKE_KEY(keyevent)) { if (keyevent >= 0x100) keyevent |= MOD_CTRL; else @@ -725,7 +727,7 @@ void command(int n) update_undo_redo(); break; case 5: /* New Game */ - midend_process_key(me, 0, 0, 'n'); + midend_process_key(me, 0, 0, UI_NEWGAME); update_undo_redo(); js_focus_canvas(); break; @@ -735,12 +737,12 @@ void command(int n) js_focus_canvas(); break; case 7: /* Undo */ - midend_process_key(me, 0, 0, 'u'); + midend_process_key(me, 0, 0, UI_UNDO); update_undo_redo(); js_focus_canvas(); break; case 8: /* Redo */ - midend_process_key(me, 0, 0, 'r'); + midend_process_key(me, 0, 0, UI_REDO); update_undo_redo(); js_focus_canvas(); break;