From: nethack.allison Date: Sat, 1 Nov 2003 23:56:24 +0000 (+0000) Subject: win32tty hung NetHack fix X-Git-Tag: MOVE2GIT~1614 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c9c0732cbc4fce612bb9d1d5a310217bf2d569b;p=nethack win32tty hung NetHack fix If a Key-down event didn't meet the expected criteria, the event was ignored in the "peek" loop, but it was never removed from the input queue either, so it remained at the top of the queue. It isn't clear if this fixes the dedicated arrow keys hanging, but if those were resulting in strange event values too, it just might. --- diff --git a/sys/winnt/nh340key.c b/sys/winnt/nh340key.c index fd078269d..56e94ba03 100644 --- a/sys/winnt/nh340key.c +++ b/sys/winnt/nh340key.c @@ -196,7 +196,11 @@ INPUT_RECORD *ir; if (ch || iskeypad(scan) || altseq) { done = 1; /* Stop looking */ retval = 1; /* Found what we sought */ + } else { + /* Strange Key event; let's purge it to avoid trouble */ + ReadConsoleInput(hConIn,ir,1,&count); } + } else if ((ir->EventType == MOUSE_EVENT && (ir->Event.MouseEvent.dwButtonState & MOUSEMASK))) { diff --git a/sys/winnt/nhdefkey.c b/sys/winnt/nhdefkey.c index ec2e3905b..9402471d4 100644 --- a/sys/winnt/nhdefkey.c +++ b/sys/winnt/nhdefkey.c @@ -230,7 +230,11 @@ INPUT_RECORD *ir; if (ch || iskeypad(scan) || altseq) { done = 1; /* Stop looking */ retval = 1; /* Found what we sought */ + } else { + /* Strange Key event; let's purge it to avoid trouble */ + ReadConsoleInput(hConIn,ir,1,&count); } + } else if ((ir->EventType == MOUSE_EVENT && (ir->Event.MouseEvent.dwButtonState & MOUSEMASK))) { diff --git a/sys/winnt/nhraykey.c b/sys/winnt/nhraykey.c index e057d8d85..66e744285 100644 --- a/sys/winnt/nhraykey.c +++ b/sys/winnt/nhraykey.c @@ -551,7 +551,11 @@ INPUT_RECORD *ir; if (ch || iskeypad(scan) || altseq) { done = 1; /* Stop looking */ retval = 1; /* Found what we sought */ + } else { + /* Strange Key event; let's purge it to avoid trouble */ + ReadConsoleInput(hConIn,ir,1,&count); } + } else if ((ir->EventType == MOUSE_EVENT && (ir->Event.MouseEvent.dwButtonState & MOUSEMASK))) {