changeset 30742:25090c2eb0e2

Add support for reading key events from MinGW xterm. Unfortunately keys only arrive after enter was pressed and SetNamedPipeHandleState does not seem to help.
author reimar
date Sun, 28 Feb 2010 00:24:01 +0000
parents 3cf4f49c2e87
children b08fb4b8cfab
files osdep/getch2-win.c
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/osdep/getch2-win.c	Sun Feb 28 00:23:58 2010 +0000
+++ b/osdep/getch2-win.c	Sun Feb 28 00:24:01 2010 +0000
@@ -25,6 +25,7 @@
 
 #include "config.h"
 #include <stdio.h>
+#include <stdint.h>
 #include <string.h>
 #include <windows.h>
 #include "keycodes.h"
@@ -64,7 +65,15 @@
 	INPUT_RECORD eventbuffer[128];
     DWORD retval;
    	int i=0;
-    if(!getch2_status)return -1;
+    if(!getch2_status){
+      // supports e.g. MinGW xterm, unfortunately keys are only received after
+      // enter was pressed.
+      uint8_t c;
+      if (!PeekNamedPipe(in, NULL, 1, &retval, NULL, NULL) || !retval)
+        return -1;
+      ReadFile(in, &c, 1, &retval, NULL);
+      return retval == 1 ? c : -1;
+    }
     /*check if there are input events*/
 	if(!GetNumberOfConsoleInputEvents(in,&retval))
 	{