https://bugs.winehq.org/show_bug.cgi?id=50067
Bug ID: 50067 Summary: Duplicate keyboard message if call PeekMessage from WH_KEYBOARD hook Product: Wine Version: 5.20 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: user32 Assignee: wine-bugs@winehq.org Reporter: psn8402@gmail.com Distribution: ---
In the VerseQ keyboard simulator, hotkey events are duplicated. For example F1 opens 2 help windows. Below is an excerpt from the log, where you can see that while the hook is active, PeekMessage is called, and it receives the same keypress event. I've added a test for this case. It passes under Windows but fails in Wine. It looks like on Windows the message is removed from the queue before the hook is called. Possibly the same problem exists with mouse messages and rawinput but I haven't tested them.
VerseQ download link https://www.verseq.ru/files/VerseQ.2011.12.31.zip Please note that it only has a Russian interface.
Log excerpt 342097.147:0024:Call user32.PeekMessageA(0031fb10,00000000,00000000,00000000,00000001) ret=005d98cc 342097.148:0024:trace:msg:peek_message got type 7 msg 100 (WM_KEYDOWN) hwnd 000300AA wp 73 lp 3e0001 342097.148:0024:Call hook proc 004141A8 (id=WH_KEYBOARD,code=0,wp=00000073,lp=003e0001) 342097.148:0024:Call user32.PeekMessageA(0031f164,00000000,00000000,00000000,00000001) ret=005d98cc 342097.148:0024:trace:msg:peek_message got type 7 msg 100 (WM_KEYDOWN) hwnd 000300AA wp 73 lp 3e0001 342097.148:0024:Call hook proc 004141A8 (id=WH_KEYBOARD,code=0,wp=00000073,lp=003e0001) 342097.149:0024:Ret hook proc 004141A8 (id=WH_KEYBOARD,code=0,wp=00000073,lp=003e0001) retval=00000000 0024: accept_hardware_message( hw_id=00000095 ) 0024: accept_hardware_message() = 0 342097.151:0024:Ret user32.PeekMessageA() retval=00000001 ret=005d98cc 342097.166:0024:Ret hook proc 004141A8 (id=WH_KEYBOARD,code=0,wp=00000073,lp=003e0001) retval=00000000 0024: accept_hardware_message( hw_id=00000095 ) 0024: accept_hardware_message() = 0 342097.166:0024:Ret user32.PeekMessageA() retval=00000001 ret=005d98cc
https://bugs.winehq.org/show_bug.cgi?id=50067
--- Comment #1 from Sergey Petrushkin psn8402@gmail.com --- Created attachment 68523 --> https://bugs.winehq.org/attachment.cgi?id=68523 testcase patch
https://bugs.winehq.org/show_bug.cgi?id=50067
--- Comment #2 from Sergey Petrushkin psn8402@gmail.com --- Created attachment 68524 --> https://bugs.winehq.org/attachment.cgi?id=68524 fix
https://bugs.winehq.org/show_bug.cgi?id=50067
--- Comment #3 from Sergey Petrushkin psn8402@gmail.com --- Created attachment 68525 --> https://bugs.winehq.org/attachment.cgi?id=68525 wine log
https://bugs.winehq.org/show_bug.cgi?id=50067
--- Comment #4 from Sergey Petrushkin psn8402@gmail.com --- VerseQ is a typewriter trainer, not keyboard simulator. Google translate is so google translate.
https://bugs.winehq.org/show_bug.cgi?id=50067
Sergey Petrushkin psn8402@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, patch, testcase
https://bugs.winehq.org/show_bug.cgi?id=50067
Sergey Petrushkin psn8402@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |psn8402@gmail.com