Index: src/video/win32_v.cpp =================================================================== --- src/video/win32_v.cpp (revision 14020) +++ src/video/win32_v.cpp (working copy) @@ -490,13 +490,15 @@ case WM_KEYDOWN: { keycode = MapWindowsKey(wParam); - - /* Silently drop all text messages as those will be handled by WM_CHAR + uint key = (uint)GB(keycode, 0, 12); + /* Silently drop all text messages as those will be handled by WM_CHAR. Text + * messages are generated keys greater than WKC_PAUSE as well as SHIFT+keys + * greater than WKC_PAUSE. * WM_KEYDOWN only handles CTRL+ commands and special keys like VK_LEFT, etc. */ - if (keycode == 0 || (keycode > WKC_PAUSE && GB(keycode, 13, 4) == 0)) return 0; + if (keycode == 0 || (key > WKC_PAUSE && (keycode & (WKC_CTRL | WKC_ALT | WKC_META)) == 0)) return 0; /* Keys handled in WM_CHAR */ - if ((uint)(GB(keycode, 0, 12) - WKC_NUM_DIV) <= WKC_MINUS - WKC_NUM_DIV) return 0; + if (key - WKC_NUM_DIV <= WKC_MINUS - WKC_NUM_DIV) return 0; HandleKeypress(0 | (keycode << 16)); return 0;