OSDN Git Service

fix #36599
authorSHIRAKATA Kentaro <argrath@ub32.org>
Sat, 3 Sep 2016 19:30:26 +0000 (04:30 +0900)
committerSHIRAKATA Kentaro <argrath@ub32.org>
Sat, 3 Sep 2016 19:30:26 +0000 (04:30 +0900)
ChangeLog.j
sys/winnt/nhdefkey.c

index e0623bb..b02e6e1 100644 (file)
@@ -1,4 +1,5 @@
        * \88ê\95\94\82Ì\8e\80\88ö\82Å\81u\8e\80\82ñ\82¾\81v\82ª\95\\8e¦\82³\82ê\82È\82¢\96â\91è\82ð\8fC\90³ (#36579)
+       * Windows10\82Ìtty\82Å\93ú\96{\8cê\82ª\93ü\97Í\82Å\82«\82È\82¢\96â\91è\82ð\8fC\90³ (#36599)
 
 Sun Jun 11 2016  Kentaro Shirakata  <argrath@ub32.org>
 
index a3404e1..0cd06d2 100644 (file)
@@ -262,6 +262,11 @@ INPUT_RECORD *ir;
     return retval;
 }
 
+#if 1 /*JP*/
+static INPUT_RECORD irbuf[2];
+static int irbufnext = 0;
+#endif
+
 int __declspec(dllexport) __stdcall CheckInput(hConIn, ir, count, numpad,
                                                mode, mod, cc)
 HANDLE hConIn;
@@ -285,7 +290,24 @@ coord *cc;
         if (dwWait == WAIT_FAILED)
             return '\033';
 #endif
+#if 0 /*JP*/
         ReadConsoleInput(hConIn, ir, 1, count);
+#else
+        /*JP
+          Windows8\88È\8d~\82Å\82Í\93ú\96{\8cê\82ð\93ü\97Í\82·\82é\82Æ2\83o\83C\83g\82Ü\82Æ\82ß\82Ä\95Ô\82Á\82Ä\82­\82é\82Ì\82Å
+          2\83o\83C\83g\96Ú\82ð\83L\83\83\83b\83V\83\85\82µ\82Ä1\83o\83C\83g\82¸\82Â\95Ô\82·\81B
+        */
+        if (irbufnext == 1) {
+            memcpy(ir, &irbuf[1], sizeof(INPUT_RECORD));
+            irbufnext = 0;
+        } else {
+            ReadConsoleInput(hConIn, irbuf, 2, count);
+            memcpy(ir, &irbuf[0], sizeof(INPUT_RECORD));
+            if (*count == 2) {
+                irbufnext = 1;
+            }
+        }
+#endif
         if (mode == 0) {
             if ((ir->EventType == KEY_EVENT) && ir->Event.KeyEvent.bKeyDown) {
                 ch = ProcessKeystroke(hConIn, ir, &valid, numpad, 0);