Don't return characters is key is up
authorGé van Geldorp <ge@gse.nl>
Thu, 6 Jan 2005 15:57:38 +0000 (15:57 +0000)
committerGé van Geldorp <ge@gse.nl>
Thu, 6 Jan 2005 15:57:38 +0000 (15:57 +0000)
svn path=/trunk/; revision=12853

reactos/subsys/csrss/win32csr/conio.c
reactos/subsys/win32k/ntuser/keyboard.c

index 97ca9e5..0b536bf 100644 (file)
@@ -1,5 +1,4 @@
-/* $Id$
- *
+/*
  * reactos/subsys/csrss/win32csr/conio.c
  *
  * Console I/O functions
@@ -1127,7 +1126,7 @@ ConioProcessChar(PCSRSS_CONSOLE Console,
   if (0 == (Console->Mode & ENABLE_LINE_INPUT)
       || Console->EarlyReturn
       || ('\n' == KeyEventRecord->InputEvent.Event.KeyEvent.uChar.AsciiChar
-          && KeyEventRecord->InputEvent.Event.KeyEvent.bKeyDown))
+          && KeyEventRecord->InputEvent.Event.KeyEvent.bKeyDown))
     {
       if ('\n' == KeyEventRecord->InputEvent.Event.KeyEvent.uChar.AsciiChar)
         {
index 9675e39..835a5b8 100644 (file)
@@ -16,8 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id$
- *
+/*
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
  * PURPOSE:          Messages
@@ -342,16 +341,23 @@ int STDCALL ToUnicodeEx( UINT wVirtKey,
                         HKL dwhkl ) {
   int ToUnicodeResult = 0;
 
-  IntLockQueueState;
-  ToUnicodeResult = ToUnicodeInner( wVirtKey,
-                                   wScanCode,
-                                   lpKeyState,
-                                   pwszBuff,
-                                   cchBuff,
-                                   wFlags,
-                                   PsGetWin32Thread() ? 
-                                   PsGetWin32Thread()->KeyboardLayout : 0 );
-  IntUnLockQueueState;
+  if (0 == (lpKeyState[wVirtKey] & KS_DOWN_BIT))
+    {
+      ToUnicodeResult = 0;
+    }
+  else
+    {
+      IntLockQueueState;
+      ToUnicodeResult = ToUnicodeInner( wVirtKey,
+                                       wScanCode,
+                                       lpKeyState,
+                                       pwszBuff,
+                                       cchBuff,
+                                       wFlags,
+                                       PsGetWin32Thread() ? 
+                                       PsGetWin32Thread()->KeyboardLayout : 0 );
+      IntUnLockQueueState;
+    }
 
   return ToUnicodeResult;
 }