Augusto Arcoverde da Rocha : x11drv: Fixed handling of XK_KP_Separator.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Apr 4 05:37:50 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: d5d878f23221cf20250cda1327f77edfe91dacd1
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=d5d878f23221cf20250cda1327f77edfe91dacd1

Author: Augusto Arcoverde da Rocha <agarobr.listas at gmail.com>
Date:   Thu Mar  9 18:05:07 2006 -0300

x11drv: Fixed handling of XK_KP_Separator.

---

 dlls/x11drv/keyboard.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/dlls/x11drv/keyboard.c b/dlls/x11drv/keyboard.c
index 202bff9..d9d843a 100644
--- a/dlls/x11drv/keyboard.c
+++ b/dlls/x11drv/keyboard.c
@@ -1059,7 +1059,7 @@ static const WORD nonchar_key_scan[256] 
     0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x4B, 0x48,              /* FF90 */
     0x4D, 0x50, 0x49, 0x51, 0x4F, 0x4C, 0x52, 0x53,              /* FF98 */
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,              /* FFA0 */
-    0x00, 0x00, 0x37, 0x4E, /*?*/ 0, 0x4A, 0x53, 0x135,          /* FFA8 */
+    0x00, 0x00, 0x37, 0x4E, 0x53, 0x4A, 0x53, 0x135,             /* FFA8 */
     0x52, 0x4F, 0x50, 0x51, 0x4B, 0x4C, 0x4D, 0x47,              /* FFB0 */
     0x48, 0x49, 0x00, 0x00, 0x00, 0x00,                          /* FFB8 */
     /* function keys */
@@ -1089,8 +1089,9 @@ static WORD EVENT_event_to_vkey( XIC xic
     else
         XLookupString(e, buf, sizeof(buf), &keysym, NULL);
 
-    if ((keysym >= 0xFFAE) && (keysym <= 0xFFB9) && (keysym != 0xFFAF)
-	&& (e->state & NumLockMask))
+    if ((e->state & NumLockMask) &&
+        (keysym == XK_KP_Separator || keysym == XK_KP_Decimal ||
+         (keysym >= XK_KP_0 && keysym <= XK_KP_9)))
         /* Only the Keypad keys 0-9 and . send different keysyms
          * depending on the NumLock state */
         return nonchar_key_vkey[keysym & 0xFF];
@@ -2377,6 +2378,9 @@ INT X11DRV_ToUnicodeEx(UINT virtKey, UIN
     if (virtKey==VK_DECIMAL)
         e.keycode = XKeysymToKeycode(e.display, XK_KP_Decimal);
 
+    if (virtKey==VK_SEPARATOR)
+        e.keycode = XKeysymToKeycode(e.display, XK_KP_Separator);
+
     if (!e.keycode && virtKey != VK_NONAME)
       {
 	WARN("Unknown virtual key %X !!!\n", virtKey);




More information about the wine-cvs mailing list