Author: dpsimons
Date: Thu Jul 10 06:47:00 2014
New Revision: 37987

URL: http://svn.gna.org/viewcvs/gnustep?rev=37987&view=rev
Log:
fix keys in NSEvent when Ctrl and Shift are used so key equivalents like 
Ctrl-Shift-+ will be recognized

Modified:
    libs/back/branches/gnustep_testplant_branch/ChangeLog
    libs/back/branches/gnustep_testplant_branch/Source/win32/WIN32Server.m

Modified: libs/back/branches/gnustep_testplant_branch/ChangeLog
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/back/branches/gnustep_testplant_branch/ChangeLog?rev=37987&r1=37986&r2=37987&view=diff
==============================================================================
--- libs/back/branches/gnustep_testplant_branch/ChangeLog       (original)
+++ libs/back/branches/gnustep_testplant_branch/ChangeLog       Thu Jul 10 
06:47:00 2014
@@ -1,3 +1,9 @@
+2014-07-09  Doug Simons <[email protected]>
+
+       * Source/win32/WIN32Server.m : Fix process_key_event to set
+       keys and ukeys correctly when control key is down so key
+       equivalents like Ctrl-(Shift)-+ will be recognized.
+
 2013-10-21  Frank Le Grand <[email protected]>
 
     * Source/win32/WIN32Server.m 

Modified: libs/back/branches/gnustep_testplant_branch/Source/win32/WIN32Server.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/back/branches/gnustep_testplant_branch/Source/win32/WIN32Server.m?rev=37987&r1=37986&r2=37987&view=diff
==============================================================================
--- libs/back/branches/gnustep_testplant_branch/Source/win32/WIN32Server.m      
(original)
+++ libs/back/branches/gnustep_testplant_branch/Source/win32/WIN32Server.m      
Thu Jul 10 06:47:00 2014
@@ -3217,7 +3217,20 @@
   
   if (eventFlags & NSShiftKeyMask)
     ukeys = [ukeys uppercaseString];
-  
+
+  if ([keys length] == 0 && ((keyState[VK_CONTROL] & 128) || 
(keyState[VK_LCONTROL] & 128) || (keyState[VK_RCONTROL] & 128)))
+       {
+         // a Control key is down, which may have caused ToUnicodeEx to return 
no key -- try without the control key(s)
+         keyState[VK_CONTROL] = 0;
+         keyState[VK_LCONTROL] = 0;
+         keyState[VK_RCONTROL] = 0;
+         result = ToUnicodeEx(wParam, scan, keyState, unicode, 5, 0, 
GetKeyboardLayout(0));
+         keys = [NSString  stringWithCharacters: unicode length: result];
+         ukeys = keys;
+         if (eventFlags & NSShiftKeyMask)
+           ukeys = [ukeys lowercaseString]; // set ukeys to unshifted version 
iff it's a letter
+       }
+       
   // key events should go to the key window if we have one (Windows' focus 
window isn't always appropriate)
   int windowNumber = [[NSApp keyWindow] windowNumber];
   if (windowNumber == 0)


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to