diff --git a/src/conio/win32cio.c b/src/conio/win32cio.c
index 9ba7020205eff6c269c80a07737c86dcdf2d8a9b..cfdfd6468a0d95dcf2c5848de70843ef7f80e5c6 100644
--- a/src/conio/win32cio.c
+++ b/src/conio/win32cio.c
@@ -179,10 +179,23 @@ int win32_keyboardio(int isgetch)
 				OutputDebugString(str);
 #endif
 
-				if(input.Event.KeyEvent.dwControlKeyState & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED)
-						&& isalpha(input.Event.KeyEvent.uChar.AsciiChar)) {
-					lastch=altkeys[toupper(input.Event.KeyEvent.uChar.AsciiChar)-'A']<<8;
-					break;
+				if(input.Event.KeyEvent.dwControlKeyState & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED)) {
+					if(isalpha(input.Event.KeyEvent.uChar.AsciiChar)) {
+						lastch=altkeys[toupper(input.Event.KeyEvent.uChar.AsciiChar)-'A']<<8;
+						break;
+					}
+					if(input.Event.KeyEvent.wVirtualScanCode >= CIO_KEY_F(1)
+							&& input.Event.KeyEvent.wVirtualScanCode <= CIO_KEY_F(10)) {
+						/* Magic number to convert from Fx to ALT-Fx */
+						lastch=input.Event.KeyEvent.wVirtualScanCode+45;
+						break;
+					}
+					if(input.Event.KeyEvent.wVirtualScanCode == CIO_KEY_F(11)
+							&& input.Event.KeyEvent.wVirtualScanCode == CIO_KEY_F(12)) {
+						/* Magic number to convert from F(x>10) to ALT-Fx */
+						lastch=input.Event.KeyEvent.wVirtualScanCode+6;
+						break;
+					}
 				}
 
 				if(input.Event.KeyEvent.uChar.AsciiChar)