diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-02-28 00:24:01 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-02-28 00:24:01 +0000 |
commit | 6961b9ef7098440a7e1e31dc9908e3b3b30c23fb (patch) | |
tree | e14fb95aad6cc2a09643903aeac1ce489dd4dab4 | |
parent | aa4388fea4da75c798523fa55392ed7b5a0210a2 (diff) |
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
-rw-r--r-- | osdep/getch2-win.c | 11 |
1 files changed, 10 insertions, 1 deletions
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 <stdio.h> +#include <stdint.h> #include <string.h> #include <windows.h> #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)) { |