Author: mlytwyn
Date: Mon Mar 10 17:33:49 2014
New Revision: 37739

URL: http://svn.gna.org/viewcvs/gnustep?rev=37739&view=rev
Log:
ALTGR key processing fix

Modified:
    libs/back/branches/gnustep_testplant_branch/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=37739&r1=37738&r2=37739&view=diff
==============================================================================
--- libs/back/branches/gnustep_testplant_branch/Source/win32/WIN32Server.m      
(original)
+++ libs/back/branches/gnustep_testplant_branch/Source/win32/WIN32Server.m      
Mon Mar 10 17:33:49 2014
@@ -2989,32 +2989,79 @@
   if (keyState[VK_CAPITAL] & 128)
     eventFlags |= NSShiftKeyMask;
 
-  if (keyState[VK_MENU] & 128)
-    {
-      if([@"Alt_R" isEqualToString: firstControl] ||
-        [@"Alt_R" isEqualToString: secondControl])
-       eventFlags |= NSControlKeyMask;
-      else if([@"Alt_R" isEqualToString: firstCommand] ||
-             [@"Alt_R" isEqualToString: secondCommand])
-       eventFlags |= NSCommandKeyMask;
-      else
-       eventFlags |= NSAlternateKeyMask;
-    }
-
+  if ([[NSUserDefaults standardUserDefaults] boolForKey:@"USE_ALTGR_FIX"])
+    {
+      // Left ALT Key press???
+      if (keyState[VK_LMENU] & 128)
+      {
+        if([@"Alt_L" isEqualToString: firstControl] ||
+           [@"Alt_L" isEqualToString: secondControl])
+          eventFlags |= NSControlKeyMask;
+        else if([@"Alt_L" isEqualToString: firstCommand] ||
+                [@"Alt_L" isEqualToString: secondCommand])
+          eventFlags |= NSCommandKeyMask;
+        else
+          eventFlags |= NSAlternateKeyMask;
+      }
+      
+      // Right ALT Key press???
+      if (keyState[VK_RMENU] & 128)
+      {
+        if([@"Alt_R" isEqualToString: firstControl] ||
+           [@"Alt_R" isEqualToString: secondControl])
+          eventFlags |= NSControlKeyMask;
+        else if([@"Alt_R" isEqualToString: firstCommand] ||
+                [@"Alt_R" isEqualToString: secondCommand])
+          eventFlags |= NSCommandKeyMask;
+        else
+          eventFlags |= NSAlternateKeyMask;
+      }
+      
+      if ((keyState[VK_LCONTROL] & 128) && (keyState[VK_RMENU] & 128))
+      {
+        // IGNORED - ALtGr key pressed...
+      }
+      else if ((keyState[VK_LCONTROL] & 128) || (keyState[VK_RWIN] & 128))
+      {
+        if([@"Control_L" isEqualToString: firstAlt] ||
+           [@"Control_L" isEqualToString: secondAlt])
+          eventFlags |= NSAlternateKeyMask;
+        else if([@"Control_L" isEqualToString: firstControl] ||
+                [@"Control_L" isEqualToString: secondControl])
+          eventFlags |= NSControlKeyMask;
+        else
+          eventFlags |= NSCommandKeyMask;
+      }
+    }
+  else
+    {
+      if (keyState[VK_MENU] & 128)
+        {
+          if([@"Alt_R" isEqualToString: firstControl] ||
+             [@"Alt_R" isEqualToString: secondControl])
+            eventFlags |= NSControlKeyMask;
+          else if([@"Alt_R" isEqualToString: firstCommand] ||
+                  [@"Alt_R" isEqualToString: secondCommand])
+            eventFlags |= NSCommandKeyMask;
+          else
+            eventFlags |= NSAlternateKeyMask;
+        }
+      
+      if ((keyState[VK_LCONTROL] & 128) || (keyState[VK_RWIN] & 128))
+        {
+          if([@"Control_L" isEqualToString: firstAlt] ||
+             [@"Control_L" isEqualToString: secondAlt])
+            eventFlags |= NSAlternateKeyMask;
+          else if([@"Control_L" isEqualToString: firstControl] ||
+                  [@"Control_L" isEqualToString: secondControl])
+            eventFlags |= NSControlKeyMask;
+          else
+            eventFlags |= NSCommandKeyMask;
+        }
+    }
+  
   if (keyState[VK_HELP] & 128)
     eventFlags |= NSHelpKeyMask;
-
-  if ((keyState[VK_LCONTROL] & 128) || (keyState[VK_RWIN] & 128))
-    {
-      if([@"Control_L" isEqualToString: firstAlt] ||
-        [@"Control_L" isEqualToString: secondAlt])
-       eventFlags |= NSAlternateKeyMask;
-      else if([@"Control_L" isEqualToString: firstControl] ||
-             [@"Control_L" isEqualToString: secondControl])
-       eventFlags |= NSControlKeyMask;
-      else
-       eventFlags |= NSCommandKeyMask;
-    }
   return eventFlags;
 }
 


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

Reply via email to