diff --git a/src/conio/win32cio.c b/src/conio/win32cio.c
index 4f782cf353de420c8a32d7af621d6058b650be44..70df1f29b7568c2774f1c65e040892e5232287a4 100644
--- a/src/conio/win32cio.c
+++ b/src/conio/win32cio.c
@@ -264,7 +264,9 @@ int win32_keyboardio(int isgetch)
 			case KEY_EVENT:
 				if(input.Event.KeyEvent.bKeyDown) {
 					if((input.Event.KeyEvent.dwControlKeyState & (RIGHT_ALT_PRESSED|LEFT_ALT_PRESSED|RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED|ENHANCED_KEY))
-							|| (input.Event.KeyEvent.wVirtualKeyCode >= VK_F1 && input.Event.KeyEvent.wVirtualKeyCode <= VK_F24))
+							|| (input.Event.KeyEvent.wVirtualKeyCode >= VK_F1 && input.Event.KeyEvent.wVirtualKeyCode <= VK_F24)
+							|| !input.Event.KeyEvent.uChar.AsciiChar
+							|| (!(input.Event.KeyEvent.dwControlKeyState & NUMLOCK_ON) && (input.Event.KeyEvent.uChar.AsciiChar >= '0' && input.Event.KeyEvent.uChar.AsciiChar <= '9')))
 						lastch=win32_getchcode(input.Event.KeyEvent.wVirtualKeyCode, input.Event.KeyEvent.dwControlKeyState);
 					else
 						lastch=input.Event.KeyEvent.uChar.AsciiChar;