http://bugs.winehq.com/show_bug.cgi?id=1162
------- Additional Comments From winebug@flonet.net 2003-28-06 09:31 ------- Bug comments restored from Gmane.org:
This game runs almost perfect in wine. The only problem that I have is that it has a screen for parents to use that is inaccesable. The way it is supposed to be accessed is through pressing Ctrl-P. This does not work... any help suggestions..
------- Additional Comments From andi@rhlx01.fht-esslingen.de 2002-11-22 06:32 ------- Check out a --debugmsg+relay,+keyboard,+key,+event,+x11drv,+message,+msg,+sendmsg logfile to find out why this key combo doesn't get recognized or gets lost (especially event and keyboard should be helpful). (remove some debugmsg options if needed)
------- Additional Comments From tony_lambregts@telusplanet.net 2002-11-24 12:48 ------- Created an attachment (id=341) --> (http://bugs.winehq.com/attachment.cgi?id=341&action=view) 11000 line log (snipped) +relay,+keyboard,+key,+event,+x11drv,+message,+msg,+sendmsg
------- Additional Comments From tony_lambregts@telusplanet.net 2002-11-25 19:01 ------- I snipped down the log some on my own and ran across this section as I was doing so
0874e8e0:Call USER.106: GETKEYSTATE(0070) ret=029f:0a36 ds=0397 trace:msg:GetKeyState key (0x50) -> 0 0874e8e0:Ret USER.106: GETKEYSTATE() retval=0000 ret=029f:0a36 ds=0397
Now ascii(70) is lower case p and ascii (50) is upper case P. After playing around a bit I found that GetKeyState is defined in /windows/message.c and this function converts the keypressed to upper for whatever reason so I commented it out as in the following patch and now ctrl-P works.
Index: message.c =================================================================== RCS file: /home/wine/wine/windows/message.c,v retrieving revision 1.148 diff -u -r1.148 message.c --- message.c 30 Oct 2002 23:45:38 -0000 1.148 +++ message.c 26 Nov 2002 00:40:19 -0000 @@ -665,7 +665,7 @@ { INT retval;
- if (vkey >= 'a' && vkey <= 'z') vkey += 'A' - 'a'; +/* if (vkey >= 'a' && vkey <= 'z') vkey += 'A' - 'a'; */ retval = ((WORD)(QueueKeyStateTable[vkey] & 0x80) << 8 ) | (QueueKeyStateTable[vkey] & 0x80) | (QueueKeyStateTable[vkey] & 0x01);
Now I suspect that this is not the "Right Fix" tm but I am going to submit it to wine-devel anyway.