copy&paste enhancement
patch by "brbak"
(see bug 749)
Modified: trunk/reactos/subsys/win32k/ntuser/input.c

Modified: trunk/reactos/subsys/win32k/ntuser/input.c
--- trunk/reactos/subsys/win32k/ntuser/input.c	2005-09-13 11:57:50 UTC (rev 17829)
+++ trunk/reactos/subsys/win32k/ntuser/input.c	2005-09-13 14:34:48 UTC (rev 17830)
@@ -516,7 +516,7 @@
                ModifierState |= fsModifiers;
 
                if (ModifierState == fsModifiers &&
-                     (fsModifiers == MOD_ALT || fsModifiers == MOD_WIN))
+                     (fsModifiers == MOD_ALT || fsModifiers == MOD_WIN || fsModifiers == MOD_CONTROL))
                {
                   /* First send out special notifications
                    * (For alt, the message that turns on accelerator
@@ -637,7 +637,29 @@
                else
                   msg.message = WM_SYSKEYUP;
             }
-            else
+            else if (ModifierState & MOD_CONTROL)
+			{
+			   if(NextKeyInput.MakeCode == 0x2E)/* Ctrl-C */
+			   {
+			      DPRINT1("Ctrl-C pressed\n");
+			      co_MsqPostKeyboardMessage(WM_COPY,0,0);
+                  continue;
+			   }
+			   else if(NextKeyInput.MakeCode == 0x2F) /* Ctrl-V */
+			   {
+				 DPRINT1("Ctrl-V pressed\n");
+				 co_MsqPostKeyboardMessage(WM_PASTE,0,0);
+                 continue;
+			   }
+			   else
+			   {
+				  DPRINT1("Ctrl with unknown combination %04x\n",NextKeyInput.MakeCode);
+                  if (!(KeyInput.Flags & KEY_BREAK))
+                    msg.message = WM_KEYDOWN;
+                  else
+                    msg.message = WM_KEYUP;
+			   }
+			}else
             {
                if (!(KeyInput.Flags & KEY_BREAK))
                   msg.message = WM_KEYDOWN;