diff src/os_win32.c @ 5633:7db84aadd37a v7.4.163

updated for version 7.4.163 Problem: MS-Windows input doesn't work properly on Windows 7 and earlier. Solution: Add a check for Windows 8. (Yasuhiro Matsumoto)
author Bram Moolenaar <bram@vim.org>
date Wed, 05 Feb 2014 13:36:54 +0100
parents f29febf858be
children a01819fb6e2b
line wrap: on
line diff
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -232,6 +232,8 @@ static int suppress_winsize = 1;	/* don'
 
 static char_u *exe_path = NULL;
 
+static BOOL win8_or_later = FALSE;
+
 /*
  * Version of ReadConsoleInput() that works with IME.
  * Works around problems on Windows 8.
@@ -252,6 +254,13 @@ read_console_input(
     static DWORD s_dwMax = 0;
     DWORD dwEvents;
 
+    if (!win8_or_later)
+    {
+	if (nLength == -1)
+	    return PeekConsoleInput(hInput, lpBuffer, 1, lpEvents);
+	return ReadConsoleInput(hInput, lpBuffer, 1, &dwEvents);
+    }
+
     if (s_dwMax == 0)
     {
 	if (nLength == -1)
@@ -617,6 +626,10 @@ PlatformId(void)
 
 	g_PlatformId = ovi.dwPlatformId;
 
+	if ((ovi.dwMajorVersion == 6 && ovi.dwMinorVersion >= 2)
+		|| ovi.dwMajorVersion > 6)
+	    win8_or_later = TRUE;
+
 #ifdef HAVE_ACL
 	/*
 	 * Load the ADVAPI runtime if we are on anything