Mercurial > mplayer.hg
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)) {