- Timestamp:
- Jan 23, 2014 5:05:30 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 91760
- Location:
- trunk/src/VBox/Frontends/VirtualBox
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
r50142 r50191 731 731 src/platform/win/VirtualBox.rc \ 732 732 src/platform/win/UIDesktopServices_win.cpp \ 733 src/platform/win/VBoxUtils-win.cpp 733 src/platform/win/VBoxUtils-win.cpp \ 734 src/platform/win/WinKeyboard.cpp 734 735 735 736 VirtualBox_DEFS.darwin += VBOX_DARWIN_USE_NATIVE_CONTROLS -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
r48647 r50191 356 356 357 357 #if defined(Q_WS_WIN) 358 /** Tell keyboard event handler to skip host keyboard events. Used for HID LEDs sync 359 * when on Windows host a keyboard event is generated in order to change corresponding LED. */ 360 void UIKeyboardHandler::winSkipKeyboardEvents(bool fSkip) 361 { 362 m_fSkipKeyboardEvents = fSkip; 363 } 358 364 359 365 bool UIKeyboardHandler::winEventFilter(MSG *pMsg, ulong uScreenId) … … 363 369 * Returning 'false' means passing event to Qt. */ 364 370 bool fResult = false; /* Pass to Qt by default: */ 371 372 /* Skip this event if m_fSkipKeyboardEvents is set by winSkipKeyboardEvents(). */ 373 if (m_fSkipKeyboardEvents) 374 return false; 375 365 376 switch (pMsg->message) 366 377 { … … 681 692 , m_bIsHostkeyInCapture(false) 682 693 , m_iKeyboardHookViewIndex(-1) 694 , m_fSkipKeyboardEvents(false) 683 695 #elif defined(Q_WS_MAC) 684 696 , m_darwinKeyModifiers(0) … … 1204 1216 * (NumLock, CapsLock, ScrollLock) as the X server. 1205 1217 * If not, send KeyPress events to synchronize the state: */ 1206 #if !defined(Q_WS_MAC) 1218 #if !defined(Q_WS_MAC) && !defined(Q_WS_WIN) 1207 1219 if (fFlags & KeyPressed) 1208 1220 fixModifierState(pCodes, puCodesCount); -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.h
r47478 r50191 84 84 #if defined(Q_WS_WIN) 85 85 bool winEventFilter(MSG *pMsg, ulong uScreenId); 86 void winSkipKeyboardEvents(bool fSkip); 86 87 #elif defined(Q_WS_X11) 87 88 bool x11EventFilter(XEvent *pEvent, ulong uScreenId); … … 183 184 HHOOK m_keyboardHook; 184 185 int m_iKeyboardHookViewIndex; 186 /* A flag that used to tell kbd event filter to ignore keyboard events */ 187 bool m_fSkipKeyboardEvents; 185 188 #elif defined(Q_WS_MAC) 186 189 /* The current modifier key mask. Used to figure out which modifier -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
r50165 r50191 87 87 # include "DarwinKeyboard.h" 88 88 #endif 89 #ifdef Q_WS_WIN 90 # include "WinKeyboard.h" 91 #endif 89 92 90 93 /* External includes: */ … … 516 519 return; 517 520 518 #ifdef Q_WS_MAC 519 LogRelFlow(("UIMachineLogic::sltKeyboardLedsChanged: Updating host LED lock states.\n")); 521 #if defined(Q_WS_MAC) 520 522 DarwinHidDevicesBroadcastLeds(m_pHostLedsState, uisession()->isNumLock(), uisession()->isCapsLock(), uisession()->isScrollLock()); 523 #elif defined(Q_WS_WIN) 524 if (!winHidLedsInSync(uisession()->isNumLock(), uisession()->isCapsLock(), uisession()->isScrollLock())) 525 { 526 keyboardHandler()->winSkipKeyboardEvents(true); 527 WinHidDevicesBroadcastLeds(uisession()->isNumLock(), uisession()->isCapsLock(), uisession()->isScrollLock()); 528 keyboardHandler()->winSkipKeyboardEvents(false); 529 } 530 else 531 LogRel2(("HID LEDs Sync: already in sync\n")); 532 #else 533 LogRelFlow(("UIMachineLogic::sltKeyboardLedsChanged: Updating host LED lock states does not supported on this platform.\n")); 521 534 #endif 522 535 } … … 604 617 , m_pDockPreviewSelectMonitorGroup(0) 605 618 , m_DockIconPreviewMonitor(0) 619 #endif /* Q_WS_MAC */ 606 620 , m_pHostLedsState(NULL) 607 #endif /* Q_WS_MAC */608 621 { 609 622 } … … 2397 2410 return; 2398 2411 2399 #ifdef Q_WS_MAC 2400 LogRelFlow(("UIMachineLogic::sltSwitchKeyboardLedsToGuestLeds: keep host LED lock states and broadcast guest's ones.\n")); 2412 #if defined(Q_WS_MAC) 2401 2413 if (m_pHostLedsState == NULL) 2402 2414 m_pHostLedsState = DarwinHidDevicesKeepLedsState(); 2403 2415 DarwinHidDevicesBroadcastLeds(m_pHostLedsState, uisession()->isNumLock(), uisession()->isCapsLock(), uisession()->isScrollLock()); 2404 #endif /* Q_WS_MAC */ 2416 #elif defined(Q_WS_WIN) 2417 if (m_pHostLedsState == NULL) 2418 m_pHostLedsState = WinHidDevicesKeepLedsState(); 2419 keyboardHandler()->winSkipKeyboardEvents(true); 2420 WinHidDevicesBroadcastLeds(uisession()->isNumLock(), uisession()->isCapsLock(), uisession()->isScrollLock()); 2421 keyboardHandler()->winSkipKeyboardEvents(false); 2422 #else 2423 LogRelFlow(("UIMachineLogic::sltSwitchKeyboardLedsToGuestLeds: keep host LED lock states and broadcast guest's ones does not supported on this platform.\n")); 2424 #endif 2405 2425 } 2406 2426 … … 2417 2437 2418 2438 /* Here we have to restore host LED lock states. */ 2419 #ifdef Q_WS_MAC2420 LogRelFlow(("UIMachineLogic::sltSwitchKeyboardLedsToPreviousLeds: restore host LED lock states.\n"));2421 2422 2439 if (m_pHostLedsState) 2423 2440 { 2424 DarwinHidDevicesApplyAndReleaseLedsState(m_pHostLedsState); 2441 #if defined(Q_WS_MAC) 2442 DarwinHidDevicesApplyAndReleaseLedsState(m_pHostLedsState); 2443 #elif defined(Q_WS_WIN) 2444 keyboardHandler()->winSkipKeyboardEvents(true); 2445 WinHidDevicesApplyAndReleaseLedsState(m_pHostLedsState); 2446 keyboardHandler()->winSkipKeyboardEvents(false); 2447 #else 2448 LogRelFlow(("UIMachineLogic::sltSwitchKeyboardLedsToPreviousLeds: restore host LED lock states does not supported on this platform.\n")); 2449 #endif 2425 2450 m_pHostLedsState = NULL; 2426 } 2427 #endif /* Q_WS_MAC */ 2451 } 2428 2452 } 2429 2453 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
r50165 r50191 275 275 QActionGroup *m_pDockPreviewSelectMonitorGroup; 276 276 int m_DockIconPreviewMonitor; 277 #endif /* Q_WS_MAC */ 278 277 279 void *m_pHostLedsState; 278 #endif /* Q_WS_MAC */279 280 280 281 /* Friend classes: */
Note:
See TracChangeset
for help on using the changeset viewer.