Keyboard patch (rewind port)

Lionel Ulmer lionel.ulmer at free.fr
Mon Jun 10 14:55:20 CDT 2002


Changelog:
  David Hammerton <david at transgaming.com>
  MapVirtualKey actually returns uppercase keys in Windows.

-- 
		 Lionel Ulmer - http://www.bbrox.org/
-------------- next part --------------
Index: dlls/x11drv/keyboard.c
===================================================================
RCS file: /home/wine/wine/dlls/x11drv/keyboard.c,v
retrieving revision 1.3
diff -u -r1.3 keyboard.c
--- dlls/x11drv/keyboard.c	31 May 2002 23:40:57 -0000	1.3
+++ dlls/x11drv/keyboard.c	10 Jun 2002 19:53:39 -0000
@@ -1358,15 +1358,22 @@
 		        return 0; }
 
 		case 2: { /* vkey-code to unshifted ANSI code */
-			/* (was FIXME) : what does unshifted mean ? 'a' or 'A' ? */
-		        /* My Windows returns 'A'. */
+                        /* we still don't know what "unshifted" means. in windows VK_W (0x57)
+                         * returns 0x57, which is upercase 'W'. So we have to return the uppercase
+                         * key.. Looks like something is wrong with the MS docs?
+                         * This is only true for letters, for example VK_0 returns '0' not ')'.
+                         * - hence we use the lock mask to ensure this happens.
+                         */
 			/* let's do vkey -> keycode -> (XLookupString) ansi char */
 			XKeyEvent e;
 			KeySym keysym;
 			int keyc;
 			char s[2];
 			e.display = display;
-			e.state = 0; /* unshifted */
+
+			e.state = LockMask;
+			/* LockMask should behave exactly like caps lock - upercase
+			 * the letter keys and thats about it. */
 
 			e.keycode = 0;
 			/* We exit on the first keycode found, to speed up the thing. */


More information about the wine-patches mailing list