From 6961b9ef7098440a7e1e31dc9908e3b3b30c23fb Mon Sep 17 00:00:00 2001 From: reimar Date: Sun, 28 Feb 2010 00:24:01 +0000 Subject: Add support for reading key events from MinGW xterm. Unfortunately keys only arrive after enter was pressed and SetNamedPipeHandleState does not seem to help. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30784 b3059339-0415-0410-9bf9-f77b7e298cf2 --- osdep/getch2-win.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'osdep/getch2-win.c') diff --git a/osdep/getch2-win.c b/osdep/getch2-win.c index dd6268b06a..7218e81a5a 100644 --- a/osdep/getch2-win.c +++ b/osdep/getch2-win.c @@ -25,6 +25,7 @@ #include "config.h" #include +#include #include #include #include "keycodes.h" @@ -64,7 +65,15 @@ static int getch2_internal(void) 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)) { -- cgit v1.2.3