Index: /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp	(revision 79780)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp	(revision 79781)
@@ -700,4 +700,5 @@
     void sigShowHideSidePanel();
     void sigShowSettingWidget();
+    void sigResetKeyboard();
 
 public:
@@ -718,4 +719,5 @@
     QToolButton  *m_pLayoutListButton;
     QToolButton  *m_pSettingsButton;
+    QToolButton  *m_pResetButton;
     QLabel       *m_pMessageLabel;
 };
@@ -3250,4 +3252,5 @@
     , m_pLayoutListButton(0)
     , m_pSettingsButton(0)
+    , m_pResetButton(0)
     , m_pMessageLabel(0)
 {
@@ -3261,4 +3264,6 @@
     if (m_pSettingsButton)
         m_pSettingsButton->setToolTip(UISoftKeyboard::tr("Settings"));
+    if (m_pResetButton)
+        m_pResetButton->setToolTip(UISoftKeyboard::tr("Reset the keyboard and release all keys"));
 }
 
@@ -3296,4 +3301,16 @@
         connect(m_pSettingsButton, &QToolButton::clicked, this, &UISoftKeyboardStatusBarWidget::sigShowSettingWidget);
         pLayout->addWidget(m_pSettingsButton);
+    }
+
+    m_pResetButton = new QToolButton;
+    if (m_pResetButton)
+    {
+        m_pResetButton->setIcon(UIIconPool::iconSet(":/hd_release_16px.png"));
+        m_pResetButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+        const int iIconMetric = QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize);
+        m_pResetButton->resize(QSize(iIconMetric, iIconMetric));
+        m_pResetButton->setStyleSheet("QToolButton { border: 0px none black; margin: 0px 0px 0px 0px; } QToolButton::menu-indicator {image: none;}");
+        connect(m_pResetButton, &QToolButton::clicked, this, &UISoftKeyboardStatusBarWidget::sigResetKeyboard);
+        pLayout->addWidget(m_pResetButton);
     }
 
@@ -3675,4 +3692,14 @@
 }
 
+void UISoftKeyboard::sltResetKeyboard()
+{
+    if (m_pKeyboardWidget)
+        m_pKeyboardWidget->reset();
+    if (m_pLayoutEditor)
+        m_pLayoutEditor->reset();
+    keyboard().ReleaseKeys();
+    update();
+}
+
 void UISoftKeyboard::prepareObjects()
 {
@@ -3745,4 +3772,5 @@
     connect(m_pStatusBarWidget, &UISoftKeyboardStatusBarWidget::sigShowHideSidePanel, this, &UISoftKeyboard::sltShowHideSidePanel);
     connect(m_pStatusBarWidget, &UISoftKeyboardStatusBarWidget::sigShowSettingWidget, this, &UISoftKeyboard::sltShowHideSettingsWidget);
+    connect(m_pStatusBarWidget, &UISoftKeyboardStatusBarWidget::sigResetKeyboard, this, &UISoftKeyboard::sltResetKeyboard);
 
     connect(m_pSettingsWidget, &UISoftKeyboardSettingsWidget::sigShowOSMenuKeys, this, &UISoftKeyboard::sltShowHideOSMenuKeys);
@@ -3866,12 +3894,3 @@
 }
 
-void UISoftKeyboard::reset()
-{
-    if (m_pKeyboardWidget)
-        m_pKeyboardWidget->reset();
-    if (m_pLayoutEditor)
-        m_pLayoutEditor->reset();
-    keyboard().ReleaseKeys();
-}
-
 #include "UISoftKeyboard.moc"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.h	(revision 79780)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.h	(revision 79781)
@@ -90,4 +90,5 @@
     void sltShowHideNumPad(bool fShow);
     void sltHandleColorCellClick(int iColorRow);
+    void sltResetKeyboard();
 
 private:
@@ -101,5 +102,4 @@
     void updateLayoutSelectorList();
     void setDialogGeometry(const QRect &geometry);
-    void reset();
     CKeyboard& keyboard() const;
 
