Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 50512)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 50513)
@@ -1131,6 +1131,14 @@
                      * As we have no ipc between threads of different VMs
                      * we are using 100ms timer as lazy sync timout: */
-                    keyboardHandler()->winSkipKeyboardEvents(true);
-                    QTimer::singleShot(100, this, SLOT(sltSwitchKeyboardLedsToGuestLeds()));
+                    
+                    /* On Windows host we should do that only in case if sync
+                     * is enabled. Otherwise, keyboardHandler()->winSkipKeyboardEvents(false)
+                     * won't be called in sltSwitchKeyboardLedsToGuestLeds() and guest
+                     * will loose keyboard input forever. */
+                    if (isHidLedsSyncEnabled())
+                    {
+                        keyboardHandler()->winSkipKeyboardEvents(true);
+                        QTimer::singleShot(100, this, SLOT(sltSwitchKeyboardLedsToGuestLeds()));
+                    }
 #else /* Q_WS_WIN */
                     /* Trigger callback synchronously for now! */
