Changeset 98500 in vbox for trunk/src/VBox/Frontends/VirtualBox
- Timestamp:
- Feb 8, 2023 12:59:38 PM (2 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp
r98482 r98500 61 61 #include "CHostNetworkInterface.h" 62 62 #include "CHostOnlyNetwork.h" 63 #include "CKeyboard.h" 63 64 #include "CMediumAttachment.h" 64 65 #include "CNATNetwork.h" … … 922 923 QApplication::translate("UIMessageCenter", "Failed to assign update agent parameter.") + 923 924 UIErrorString::formatErrorInfo(comAgent)); 925 } 926 927 /* static */ 928 void UINotificationMessage::cannotChangeKeyboardParameter(const CKeyboard &comKeyboard) 929 { 930 createMessage( 931 QApplication::translate("UIMessageCenter", "Keyboard failure ..."), 932 QApplication::translate("UIMessageCenter", "Failed to assign keyboard parameter.") + 933 UIErrorString::formatErrorInfo(comKeyboard)); 924 934 } 925 935 -
trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h
r98482 r98500 72 72 class CCloudProfile; 73 73 class CEmulatedUSB; 74 class CKeyboard; 74 75 class CNetworkAdapter; 75 76 class CVirtualBox; … … 381 382 * @param comAgent Brings the object parameter being changed for. */ 382 383 static void cannotChangeUpdateAgentParameter(const CUpdateAgent &comAgent); 384 /** Notifies about inability to change IKeyboard parameter. 385 * @param comKeyboard Brings the object parameter being changed for. */ 386 static void cannotChangeKeyboardParameter(const CKeyboard &comKeyboard); 383 387 /** Notifies about inability to change IVirtualSystemDescription parameter. 384 388 * @param comVsd Brings the object parameter being changed for. */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
r98451 r98500 61 61 #include "UIMouseHandler.h" 62 62 #include "UINotificationCenter.h" 63 #include "UISession.h"64 63 #ifdef VBOX_WS_MAC 65 64 # include "UICocoaApplication.h" … … 74 73 # include "VBoxUtils-x11.h" 75 74 #endif 76 77 /* COM includes: */78 #include "CKeyboard.h"79 75 80 76 /* Other VBox includes: */ … … 440 436 codes << ((idxCode & 0x7F) | 0x80); 441 437 } 442 keyboard().PutScancodes(codes);438 uimachine()->putScancodes(codes); 443 439 fSentRESEND = true; 444 440 } 445 441 if (m_pressedKeys[i] & IsKeyPressed) 446 keyboard().PutScancode(i | 0x80);442 uimachine()->putScancode(i | 0x80); 447 443 else 448 444 { … … 450 446 codes[0] = 0xE0; 451 447 codes[1] = i | 0x80; 452 keyboard().PutScancodes(codes);448 uimachine()->putScancodes(codes); 453 449 } 454 450 } … … 723 719 /* And release left Ctrl key early (if required): */ 724 720 if (m_pAltGrMonitor->isLeftControlReleaseNeeded()) 725 keyboard().PutScancode(0x1D | 0x80);721 uimachine()->putScancode(0x1D | 0x80); 726 722 } 727 723 … … 1090 1086 } 1091 1087 1092 CKeyboard &UIKeyboardHandler::keyboard() const1093 {1094 return machineLogic()->uisession()->keyboard();1095 }1096 1097 1088 /* Event handler for prepared listener(s): */ 1098 1089 bool UIKeyboardHandler::eventFilter(QObject *pWatchedObject, QEvent *pEvent) … … 1241 1232 combo[3] = 0xd7 + (pKeyEvent->key() - Qt::Key_F11); /* F11-F12 up */ 1242 1233 } 1243 keyboard().PutScancodes(combo);1234 uimachine()->putScancodes(combo); 1244 1235 } 1245 1236 /* Process hot keys not processed in keyEvent() (as in case of non-alphanumeric keys): */ … … 1593 1584 } 1594 1585 1595 void UIKeyboardHandler::keyEventReleaseHostComboKeys(const CKeyboard &constKeyboard)1596 {1597 /* Get keyboard: */1598 CKeyboard keyboard(constKeyboard);1599 /* We have to make guest to release pressed keys from the host-combination: */1600 QList<uint8_t> hostComboScans = m_pressedHostComboKeys.values();1601 for (int i = 0 ; i < hostComboScans.size(); ++i)1602 {1603 uint8_t uScan = hostComboScans[i];1604 if (m_pressedKeys[uScan] & IsKeyPressed)1605 {1606 keyboard.PutScancode(uScan | 0x80);1607 }1608 else if (m_pressedKeys[uScan] & IsExtKeyPressed)1609 {1610 QVector<LONG> scancodes(2);1611 scancodes[0] = 0xE0;1612 scancodes[1] = uScan | 0x80;1613 keyboard.PutScancodes(scancodes);1614 }1615 m_pressedKeys[uScan] = 0;1616 }1617 }1618 1619 1586 bool UIKeyboardHandler::keyEvent(int iKey, uint8_t uScan, int fFlags, ulong uScreenId, wchar_t *pUniKey /* = 0 */) 1620 1587 { … … 1749 1716 for (uint i = 0; i < uCodesCount; ++i) 1750 1717 scancodes.append(pCodes[i]); 1751 keyboard().PutScancodes(scancodes);1718 uimachine()->putScancodes(scancodes); 1752 1719 } 1753 1720 … … 1755 1722 if (isHostComboStateChanged && m_bIsHostComboPressed) 1756 1723 { 1757 keyEventReleaseHostComboKeys(keyboard()); 1724 /* We have to make guest to release pressed keys from the host-combination: */ 1725 foreach (const uint8_t &uScan, m_pressedHostComboKeys.values()) 1726 { 1727 if (m_pressedKeys[uScan] & IsKeyPressed) 1728 { 1729 uimachine()->putScancode(uScan | 0x80); 1730 } 1731 else if (m_pressedKeys[uScan] & IsExtKeyPressed) 1732 { 1733 QVector<LONG> scancodes(2); 1734 scancodes[0] = 0xE0; 1735 scancodes[1] = uScan | 0x80; 1736 uimachine()->putScancodes(scancodes); 1737 } 1738 m_pressedKeys[uScan] = 0; 1739 } 1758 1740 } 1759 1741 } … … 1931 1913 if (!(ns & IsKeyPressed)) 1932 1914 codes[0] |= 0x80; 1933 keyboard().PutScancode(codes[0]);1915 uimachine()->putScancode(codes[0]); 1934 1916 } 1935 1917 else if ((os & IsExtKeyPressed) != (ns & IsExtKeyPressed)) … … 1939 1921 if (!(ns & IsExtKeyPressed)) 1940 1922 codes[1] |= 0x80; 1941 keyboard().PutScancodes(codes);1923 uimachine()->putScancodes(codes); 1942 1924 } 1943 1925 } -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.h
r98451 r98500 55 55 class UIMachineView; 56 56 class UIMachineWindow; 57 class CKeyboard;58 57 #ifdef VBOX_WS_WIN 59 58 class WinAltGrMonitor; … … 148 147 UIActionPool *actionPool() const; 149 148 UIMachine *uimachine() const; 150 151 /** Returns the console's keyboard reference. */152 CKeyboard &keyboard() const;153 149 154 150 /* Event handler for registered machine-view(s): */ … … 171 167 bool keyEventHostComboHandled(int iKey, wchar_t *pUniKey, bool isHostComboStateChanged, bool *pfResult); 172 168 void keyEventHandleHostComboRelease(ulong uScreenId); 173 void keyEventReleaseHostComboKeys(const CKeyboard &keyboard);174 169 /* Separate function to handle most of existing keyboard-events: */ 175 170 bool keyEvent(int iKey, uint8_t uScan, int fFlags, ulong uScreenId, wchar_t *pUniKey = 0); -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.cpp
r98490 r98500 441 441 { 442 442 return uisession()->isGuestSupportsSeamless(); 443 } 444 445 void UIMachine::putScancode(LONG iCode) 446 { 447 uisession()->putScancode(iCode); 448 } 449 450 void UIMachine::putScancodes(const QVector<LONG> &codes) 451 { 452 uisession()->putScancodes(codes); 453 } 454 455 void UIMachine::putCad() 456 { 457 uisession()->putCad(); 458 } 459 460 void UIMachine::releaseKeys() 461 { 462 uisession()->releaseKeys(); 463 } 464 465 void UIMachine::putUsageCode(LONG iUsageCode, LONG iUsagePage, BOOL fKeyRelease) 466 { 467 uisession()->putUsageCode(iUsageCode, iUsagePage, fKeyRelease); 443 468 } 444 469 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.h
r98490 r98500 314 314 /** Returns the keyboard-state. */ 315 315 int keyboardState() const { return m_iKeyboardState; } 316 317 /** Sends a scan @a iCode to VM's keyboard. */ 318 void putScancode(LONG iCode); 319 /** Sends a list of scan @a codes to VM's keyboard. */ 320 void putScancodes(const QVector<LONG> &codes); 321 /** Sends the CAD sequence to VM's keyboard. */ 322 void putCad(); 323 /** Releases all keys. */ 324 void releaseKeys(); 325 /** Sends a USB HID @a iUsageCode and @a iUsagePage to VM's keyboard. 326 * The @a fKeyRelease flag is set when the key is being released. */ 327 void putUsageCode(LONG iUsageCode, LONG iUsagePage, BOOL fKeyRelease); 316 328 /** @} */ 317 329 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
r98451 r98500 312 312 { 313 313 return uisession()->mouse(); 314 }315 316 CKeyboard& UIMachineLogic::keyboard() const317 {318 return uisession()->keyboard();319 314 } 320 315 … … 2040 2035 { 2041 2036 QWidget *pCenterWidget = windowManager().realParentWindow(activeMachineWindow()); 2042 m_pSoftKeyboardDialog = new UISoftKeyboard(0, uimachine(), uisession(), 2043 pCenterWidget, machine().GetName()); 2037 m_pSoftKeyboardDialog = new UISoftKeyboard(0, uimachine(), pCenterWidget, machine().GetName()); 2044 2038 connect(m_pSoftKeyboardDialog, &UISoftKeyboard::sigClose, this, &UIMachineLogic::sltCloseSoftKeyboardDefault); 2045 2039 } … … 2067 2061 void UIMachineLogic::sltTypeCAD() 2068 2062 { 2069 keyboard().PutCAD(); 2070 AssertWrapperOk(keyboard()); 2063 uimachine()->putCad(); 2071 2064 } 2072 2065 … … 2081 2074 sequence[4] = 0x38 | 0x80; /* Alt up */ 2082 2075 sequence[5] = 0x1d | 0x80; /* Ctrl up */ 2083 keyboard().PutScancodes(sequence); 2084 AssertWrapperOk(keyboard()); 2076 uimachine()->putScancodes(sequence); 2085 2077 } 2086 2078 #endif /* VBOX_WS_X11 */ … … 2095 2087 sequence[4] = 0x46 | 0x80; /* Break up */ 2096 2088 sequence[5] = 0x1d | 0x80; /* Ctrl up */ 2097 keyboard().PutScancodes(sequence); 2098 AssertWrapperOk(keyboard()); 2089 uimachine()->putScancodes(sequence); 2099 2090 } 2100 2091 … … 2106 2097 sequence[2] = 0xE0; /* Extended flag */ 2107 2098 sequence[3] = 0x52 | 0x80; /* Insert up */ 2108 keyboard().PutScancodes(sequence); 2109 AssertWrapperOk(keyboard()); 2099 uimachine()->putScancodes(sequence); 2110 2100 } 2111 2101 … … 2121 2111 sequence[6] = 0xE0; /* Extended flag */ 2122 2112 sequence[7] = 0x2A | 0x80; /* Print.. up */ 2123 keyboard().PutScancodes(sequence); 2124 AssertWrapperOk(keyboard()); 2113 uimachine()->putScancodes(sequence); 2125 2114 } 2126 2115 … … 2138 2127 sequence[8] = 0x2A | 0x80; /* Print.. up */ 2139 2128 sequence[9] = 0x38 | 0x80; /* Alt up */ 2140 keyboard().PutScancodes(sequence); 2141 AssertWrapperOk(keyboard()); 2129 uimachine()->putScancodes(sequence); 2142 2130 } 2143 2131 … … 2165 2153 } 2166 2154 2167 keyboard().PutScancodes(codes); 2168 AssertWrapperOk(keyboard()); 2155 uimachine()->putScancodes(codes); 2169 2156 } 2170 2157 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
r98451 r98500 60 60 class CGuest; 61 61 class CMouse; 62 class CKeyboard;63 62 class CMachineDebugger; 64 63 class CSnapshot; … … 131 130 /** Returns the console's mouse reference. */ 132 131 CMouse& mouse() const; 133 /** Returns the console's keyboard reference. */134 CKeyboard& keyboard() const;135 132 /** Returns the console's debugger reference. */ 136 133 CMachineDebugger& debugger() const; -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
r98490 r98500 264 264 265 265 return fOk; 266 } 267 268 void UISession::putScancode(LONG iCode) 269 { 270 CKeyboard comKeyboard = keyboard(); 271 comKeyboard.PutScancode(iCode); 272 if (!comKeyboard.isOk()) 273 UINotificationMessage::cannotChangeKeyboardParameter(comKeyboard); 274 } 275 276 void UISession::putScancodes(const QVector<LONG> &codes) 277 { 278 CKeyboard comKeyboard = keyboard(); 279 comKeyboard.PutScancodes(codes); 280 if (!comKeyboard.isOk()) 281 UINotificationMessage::cannotChangeKeyboardParameter(comKeyboard); 282 } 283 284 void UISession::putCad() 285 { 286 CKeyboard comKeyboard = keyboard(); 287 comKeyboard.PutCAD(); 288 if (!comKeyboard.isOk()) 289 UINotificationMessage::cannotChangeKeyboardParameter(comKeyboard); 290 } 291 292 void UISession::releaseKeys() 293 { 294 CKeyboard comKeyboard = keyboard(); 295 comKeyboard.ReleaseKeys(); 296 if (!comKeyboard.isOk()) 297 UINotificationMessage::cannotChangeKeyboardParameter(comKeyboard); 298 } 299 300 void UISession::putUsageCode(LONG iUsageCode, LONG iUsagePage, BOOL fKeyRelease) 301 { 302 CKeyboard comKeyboard = keyboard(); 303 comKeyboard.PutUsageCode(iUsageCode, iUsagePage, fKeyRelease); 304 if (!comKeyboard.isOk()) 305 UINotificationMessage::cannotChangeKeyboardParameter(comKeyboard); 266 306 } 267 307 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
r98490 r98500 232 232 /** @} */ 233 233 234 /** @name Keyboard stuff. 235 ** @{ */ 236 /** Sends a scan @a iCode to VM's keyboard. */ 237 void putScancode(LONG iCode); 238 /** Sends a list of scan @a codes to VM's keyboard. */ 239 void putScancodes(const QVector<LONG> &codes); 240 /** Sends the CAD sequence to VM's keyboard. */ 241 void putCad(); 242 /** Releases all keys. */ 243 void releaseKeys(); 244 /** Sends a USB HID @a iUsageCode and @a iUsagePage to VM's keyboard. 245 * The @a fKeyRelease flag is set when the key is being released. */ 246 void putUsageCode(LONG iUsageCode, LONG iUsagePage, BOOL fKeyRelease); 247 /** @} */ 248 234 249 /** @name Guest additions stuff. 235 250 ** @{ */ -
trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp
r98384 r98500 57 57 #include "UIMessageCenter.h" 58 58 #include "UIModalWindowManager.h" 59 #include "UISession.h"60 59 #include "UISoftKeyboard.h" 61 60 #include "UICommon.h" … … 3924 3923 *********************************************************************************************************************************/ 3925 3924 3926 UISoftKeyboard::UISoftKeyboard(QWidget *pParent, UIMachine *pMachine, UISession *pSession,3925 UISoftKeyboard::UISoftKeyboard(QWidget *pParent, UIMachine *pMachine, 3927 3926 QWidget *pCenterWidget, QString strMachineName /* = QString() */) 3928 3927 : QMainWindowWithRestorableGeometryAndRetranslateUi(pParent) 3929 3928 , m_pMachine(pMachine) 3930 , m_pSession(pSession)3931 3929 , m_pCenterWidget(pCenterWidget) 3932 3930 , m_pMainLayout(0) … … 3988 3986 } 3989 3987 } 3990 keyboard().ReleaseKeys();3988 m_pMachine->releaseKeys(); 3991 3989 emit sigClose(); 3992 3990 event->ignore(); … … 4041 4039 void UISoftKeyboard::sltPutKeyboardSequence(QVector<LONG> sequence) 4042 4040 { 4043 keyboard().PutScancodes(sequence);4041 m_pMachine->putScancodes(sequence); 4044 4042 } 4045 4043 … … 4047 4045 { 4048 4046 for (int i = 0; i < sequence.size(); ++i) 4049 keyboard().PutUsageCode(sequence[i].first, sequence[i].second, false);4047 m_pMachine->putUsageCode(sequence[i].first, sequence[i].second, false); 4050 4048 } 4051 4049 … … 4053 4051 { 4054 4052 for (int i = 0; i < sequence.size(); ++i) 4055 keyboard().PutUsageCode(sequence[i].first, sequence[i].second, true);4053 m_pMachine->putUsageCode(sequence[i].first, sequence[i].second, true); 4056 4054 } 4057 4055 … … 4239 4237 if (m_pLayoutEditor) 4240 4238 m_pLayoutEditor->reset(); 4241 keyboard().ReleaseKeys();4239 m_pMachine->releaseKeys(); 4242 4240 update(); 4243 4241 } … … 4377 4375 void UISoftKeyboard::sltReleaseKeys() 4378 4376 { 4379 keyboard().ReleaseKeys();4377 m_pMachine->releaseKeys(); 4380 4378 } 4381 4379 … … 4472 4470 } 4473 4471 4474 CKeyboard& UISoftKeyboard::keyboard() const4475 {4476 return m_pSession->keyboard();4477 }4478 4479 4472 #include "UISoftKeyboard.moc" -
trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.h
r98384 r98500 43 43 44 44 /* Forward declarations: */ 45 class CKeyboard;46 45 class QHBoxLayout; 47 46 class QToolButton; … … 49 48 class UILayoutSelector; 50 49 class UIMachine; 51 class UISession;52 50 class UISoftKeyboardKey; 53 51 class UISoftKeyboardSettingsWidget; … … 72 70 public: 73 71 74 UISoftKeyboard(QWidget *pParent, UIMachine *pMachine, UISession *pSession,72 UISoftKeyboard(QWidget *pParent, UIMachine *pMachine, 75 73 QWidget *pCenterWidget, QString strMachineName = QString()); 76 74 ~UISoftKeyboard(); … … 130 128 void updateStatusBarMessage(const QString &strLayoutName); 131 129 void updateLayoutSelectorList(); 132 CKeyboard& keyboard() const;133 130 134 131 UIMachine *m_pMachine; 135 UISession *m_pSession;136 132 QWidget *m_pCenterWidget; 137 133 QHBoxLayout *m_pMainLayout;
Note:
See TracChangeset
for help on using the changeset viewer.