aAHello all. I know I'm technically a wine newby (having only just installed the codeweavers preview 2) but I have a code change request. Deep within the file ~/windows/x11drv/keyboard.c in the function X11DRV_ToUnicode is the comment 'More areas where X11 returns characters but Windows does not CTRL + number or CTRL + symbol'. Whilst this is a reasonable assumption, this is in fact incorrect as Windows will indeed return CTRL+symbol. Indeed if it didn't, my C++ Builder Wyse120-based emulator application wouldn't be able to detect and send CTRL-\ keystrokes to cKermit or CTRL-] keystrokes to telnet sessions on all my linux and unix servers. My delight at the slick installation and configuration of preview 2 was dampened when my killer app failed to return my control to Kermit. After a little investigation in the source files, I traced the problem to the above function. I don't quite know whether you want to remove the section entirely, but my patch runs as follows...(diff output) 1568d1567 < /* Oh yes it does! - Andy Johnson */ 1571c1570 < /* if (((keysym>=33) && (keysym < 'A')) || ---> if (((keysym>=33) && (keysym < 'A')) ||1577d1575 < */ Hope this patch is recieved in the spirit in which it is sent. Wine has come so far in the last two years and whilst the goalposts are constantly being moved by MS is certainly nearing an extremely significant milestone. I know I can wait for Borland to produce a C++ version of Kylix and then port my app over to native linux but in the short term Wine is the only method I can use to get my app onto Linux and away from dual-booting. Andy Johnson
lawson_whitney@juno.com
2001-Mar-09 18:00 UTC
Code change required in x11drv keyboard driver
On Fri, 9 Mar 2001, Andy Johnson wrote:> aAHello all. I know I'm technically a wine newby (having only just > installed the codeweavers preview 2) but I have a code change request. > > Deep within the file ~/windows/x11drv/keyboard.c in the function > X11DRV_ToUnicode is the comment 'More areas where X11 returns characters > but Windows does not CTRL + number or CTRL + symbol'. > > Whilst this is a reasonable assumption, this is in fact incorrect as > Windows will indeed return CTRL+symbol. Indeed if it didn't, my C++ > Builder Wyse120-based emulator application wouldn't be able to detect > and send CTRL-\ keystrokes to cKermit or CTRL-] keystrokes to telnet > sessions on all my linux and unix servers. > > My delight at the slick installation and configuration of preview 2 was > dampened when my killer app failed to return my control to Kermit. After > a little investigation in the source files, I traced the problem to the > above function. I don't quite know whether you want to remove the > section entirely, but my patch runs as follows...(diff output) > > 1568d1567 > < /* Oh yes it does! - Andy Johnson */ > 1571c1570 > < /* if (((keysym>=33) && (keysym < 'A')) || > --- > > if (((keysym>=33) && (keysym < 'A')) || > 1577d1575 > < */Wow, not only can you read C code, you try and hack it. Now if you will just read a little bit of doco from the README... :-) " If you add something, or fix a bug, please send a patch ('diff -u' format preferred) to julliard@winehq.com or to the wine-patches@winehq.com mailing list for inclusion in the next release. -- Alexandre Julliard julliard@winehq.com "> > Hope this patch is recieved in the spirit in which it is sent. Wine has > come so far in the last two years and whilst the goalposts are > constantly being moved by MS is certainly nearing an extremely > significant milestone. I know I can wait for Borland to produce a C++ > version of Kylix and then port my app over to native linux but in the > short term Wine is the only method I can use to get my app onto Linux > and away from dual-booting. > > Andy Johnson >If you think about it a little, you can see why diff -u format is preferable for such a large and distributed project as Wine, where the particular copy you are changing might not be exactly the same version I am using. Also, it is easier to apply a patch that says in the patch which file it is patching. And I had to use --reverse to apply yours. :-). See if the one I attach doesn't look better. Maybe you would like to offer it on wine-patches. Maybe whoever put that code in can come up with a reason some app needs to be protected from seeing control-]; maybe it is a win16/win32 thing or there is some filter or some other thing we don't know about in that big ugly API... Dont forget a ChangeLog entry. See <wine>/ChangeLog to see what is a ChangeLog entry, or subscribe to wine-patches for a little while and you will see some. Lawson panic: detected rogue system administrator!! ---cut here -------------- next part -------------- diff -ur was/windows/x11drv/keyboard.c is/windows/x11drv/keyboard.c --- was/windows/x11drv/keyboard.c Mon Mar 5 23:47:15 2001 +++ is/windows/x11drv/keyboard.c Fri Mar 9 14:10:50 2001 @@ -1565,6 +1565,7 @@ else { /* ret != 0 */ /* We have a special case to handle : Shift + arrow, shift + home, ... X returns a char for it, but Windows doesn't. Let's eat it. */ + /* Oh yes it does! - Andy Johnson */ if (!(e.state & NumLockMask) /* NumLock is off */ && (e.state & ShiftMask) /* Shift is pressed */ && (keysym>=XK_KP_0) && (keysym<=XK_KP_9)) @@ -1577,12 +1578,13 @@ CTRL + number or CTRL + symbol*/ if (e.state & ControlMask) { - if (((keysym>=33) && (keysym < 'A')) || +/* if (((keysym>=33) && (keysym < 'A')) || ((keysym > 'Z') && (keysym < 'a'))) { *(char*)lpChar = 0; ret = 0; } +*/ } /* We have another special case for delete key (XK_Delete) on an