cmd = wParam & ~0xF; /* low 4 bits reserved to Windows */
switch (cmd) {
case IDM_NEW:
- if (!midend_process_key(fe->me, 0, 0, 'n'))
+ if (!midend_process_key(fe->me, 0, 0, UI_NEWGAME))
PostQuitMessage(0);
break;
case IDM_RESTART:
midend_restart_game(fe->me);
break;
case IDM_UNDO:
- if (!midend_process_key(fe->me, 0, 0, 'u'))
+ if (!midend_process_key(fe->me, 0, 0, UI_UNDO))
PostQuitMessage(0);
break;
case IDM_REDO:
- if (!midend_process_key(fe->me, 0, 0, '\x12'))
+ if (!midend_process_key(fe->me, 0, 0, UI_REDO))
PostQuitMessage(0);
break;
case IDM_COPY:
}
break;
case IDM_QUIT:
- if (!midend_process_key(fe->me, 0, 0, 'q'))
+ if (!midend_process_key(fe->me, 0, 0, UI_QUIT))
PostQuitMessage(0);
break;
case IDM_CONFIG:
}
break;
case WM_CHAR:
- if (!midend_process_key(fe->me, 0, 0, (unsigned char)wParam))
- PostQuitMessage(0);
+ {
+ int key = (unsigned char)wParam;
+ if (key == '\x1A') {
+ BYTE keystate[256];
+ if (GetKeyboardState(keystate) &&
+ (keystate[VK_SHIFT] & 0x80) &&
+ (keystate[VK_CONTROL] & 0x80))
+ key = UI_REDO;
+ }
+ if (!midend_process_key(fe->me, 0, 0, key))
+ PostQuitMessage(0);
+ }
return 0;
case WM_TIMER:
if (fe->timer) {