[Bug 29857] New: GetAsyncKeyState says Escape key is permanently down once it has been pressed
wine-bugs at winehq.org
wine-bugs at winehq.org
Fri Feb 10 09:45:59 CST 2012
http://bugs.winehq.org/show_bug.cgi?id=29857
Bug #: 29857
Summary: GetAsyncKeyState says Escape key is permanently down
once it has been pressed
Product: Wine
Version: 1.3.28
Platform: x86
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: -unknown
AssignedTo: wine-bugs at winehq.org
ReportedBy: silas-wine at flatline.org.uk
Classification: Unclassified
I am debugging a Windows application that has a long-running processing thread
which periodically checks for interrupts using
GetAsyncKeyState(VK_ESCAPE) < 0
This worked fine on WINE 1.2.2, but on 1.3.28 the app kept behaving as if it
were interrupted immediately when it had not been. Further investigation
showed that, after Escape has been pressed just once, any future calls to
GetAsyncKeyState (no matter how many events have been processed in the
meantime) always return ffff8001. In other words, if you press Escape just
once while running your app, any future calls that app makes to
GetAsyncKeyState(VK_ESCAPE) will behave as though the Escape key is still down.
Again this does not happen with WINE 1.2.2, only with 1.3.28.
I was able to work around this bug by adding a call to GetKeyState(VK_ESCAPE)
just before the test for GetAsyncKeyState(VK_ESCAPE) < 0. I ignored the return
value of GetKeyState
(http://msdn.microsoft.com/en-us/library/windows/desktop/ms646301%28v=vs.85%29.aspx
says it should be called in response to a message; it doesn't say what happens
if it's called when there has been no message, so I assume we can't rely on it
to return meaningful values if called at just any time) however somehow the
presence of the GetKeyState call caused WINE 1.3.28's GetAsyncKeyState to
behave correctly.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list