[MPlayer-cvslog] r30784 - trunk/osdep/getch2-win.c
reimar
subversion at mplayerhq.hu
Sun Feb 28 01:24:02 CET 2010
Author: reimar
Date: Sun Feb 28 01:24:01 2010
New Revision: 30784
Log:
Add support for reading key events from MinGW xterm.
Unfortunately keys only arrive after enter was pressed
and SetNamedPipeHandleState does not seem to help.
Modified:
trunk/osdep/getch2-win.c
Modified: trunk/osdep/getch2-win.c
==============================================================================
--- trunk/osdep/getch2-win.c Sun Feb 28 01:23:58 2010 (r30783)
+++ trunk/osdep/getch2-win.c Sun Feb 28 01:24:01 2010 (r30784)
@@ -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))
{
More information about the MPlayer-cvslog
mailing list