Index: trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 51398)
@@ -437,4 +437,5 @@
         case RuntimeMenuMachineActionType_TakeScreenshot:    strResult = "TakeScreenshot"; break;
         case RuntimeMenuMachineActionType_InformationDialog: strResult = "InformationDialog"; break;
+        case RuntimeMenuMachineActionType_KeyboardSettings:  strResult = "KeyboardSettings"; break;
         case RuntimeMenuMachineActionType_MouseIntegration:  strResult = "MouseIntegration"; break;
         case RuntimeMenuMachineActionType_TypeCAD:           strResult = "TypeCAD"; break;
@@ -470,4 +471,5 @@
     keys << "TakeScreenshot";    values << RuntimeMenuMachineActionType_TakeScreenshot;
     keys << "InformationDialog"; values << RuntimeMenuMachineActionType_InformationDialog;
+    keys << "KeyboardSettings";  values << RuntimeMenuMachineActionType_KeyboardSettings;
     keys << "MouseIntegration";  values << RuntimeMenuMachineActionType_MouseIntegration;
     keys << "TypeCAD";           values << RuntimeMenuMachineActionType_TypeCAD;
Index: trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 51398)
@@ -264,16 +264,17 @@
     RuntimeMenuMachineActionType_TakeScreenshot    = RT_BIT(2),
     RuntimeMenuMachineActionType_InformationDialog = RT_BIT(3),
-    RuntimeMenuMachineActionType_MouseIntegration  = RT_BIT(4),
-    RuntimeMenuMachineActionType_TypeCAD           = RT_BIT(5),
+    RuntimeMenuMachineActionType_KeyboardSettings  = RT_BIT(4),
+    RuntimeMenuMachineActionType_MouseIntegration  = RT_BIT(5),
+    RuntimeMenuMachineActionType_TypeCAD           = RT_BIT(6),
 #ifdef Q_WS_X11
-    RuntimeMenuMachineActionType_TypeCABS          = RT_BIT(6),
+    RuntimeMenuMachineActionType_TypeCABS          = RT_BIT(7),
 #endif /* Q_WS_X11 */
-    RuntimeMenuMachineActionType_Pause             = RT_BIT(7),
-    RuntimeMenuMachineActionType_Reset             = RT_BIT(8),
-    RuntimeMenuMachineActionType_SaveState         = RT_BIT(9),
-    RuntimeMenuMachineActionType_Shutdown          = RT_BIT(10),
-    RuntimeMenuMachineActionType_PowerOff          = RT_BIT(11),
+    RuntimeMenuMachineActionType_Pause             = RT_BIT(8),
+    RuntimeMenuMachineActionType_Reset             = RT_BIT(9),
+    RuntimeMenuMachineActionType_SaveState         = RT_BIT(10),
+    RuntimeMenuMachineActionType_Shutdown          = RT_BIT(11),
+    RuntimeMenuMachineActionType_PowerOff          = RT_BIT(12),
 #ifndef Q_WS_MAC
-    RuntimeMenuMachineActionType_Close             = RT_BIT(12),
+    RuntimeMenuMachineActionType_Close             = RT_BIT(13),
 #endif /* !Q_WS_MAC */
     RuntimeMenuMachineActionType_All               = 0xFFFF
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 51398)
@@ -167,4 +167,47 @@
 };
 
+class UIActionMenuKeyboard : public UIActionMenu
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionMenuKeyboard(UIActionPool *pParent)
+        : UIActionMenu(pParent)
+    {
+        retranslateUi();
+    }
+
+protected:
+
+    void retranslateUi() {}
+};
+
+class UIActionSimpleKeyboardSettings : public UIActionSimple
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionSimpleKeyboardSettings(UIActionPool *pParent)
+        : UIActionSimple(pParent, ":/hostkey_16px.png")
+    {
+        retranslateUi();
+    }
+
+protected:
+
+    QString shortcutExtraDataID() const
+    {
+        return QString("KeyboardSettings");
+    }
+
+    void retranslateUi()
+    {
+        setName(QApplication::translate("UIActionPool", "Configure &Shortcuts"));
+        setStatusTip(QApplication::translate("UIActionPool", "Display the global settings window to configure shortcuts"));
+    }
+};
+
 class UIActionMenuMouseIntegration : public UIActionMenu
 {
@@ -1274,4 +1317,5 @@
     m_pool[UIActionIndexRuntime_Simple_TakeScreenshot] = new UIActionSimplePerformTakeScreenshot(this);
     m_pool[UIActionIndexRuntime_Simple_InformationDialog] = new UIActionSimpleShowInformationDialog(this);
+    m_pool[UIActionIndexRuntime_Simple_KeyboardSettings] = new UIActionSimpleKeyboardSettings(this);
     m_pool[UIActionIndexRuntime_Toggle_MouseIntegration] = new UIActionToggleMouseIntegration(this);
     m_pool[UIActionIndexRuntime_Simple_TypeCAD] = new UIActionSimplePerformTypeCAD(this);
@@ -1335,4 +1379,7 @@
         delete m_pool[UIActionIndexRuntime_Menu_Machine];
     m_pool[UIActionIndexRuntime_Menu_Machine] = new UIActionMenuMachineRuntime(this);
+    if (m_pool[UIActionIndexRuntime_Menu_Keyboard])
+        delete m_pool[UIActionIndexRuntime_Menu_Keyboard];
+    m_pool[UIActionIndexRuntime_Menu_Keyboard] = new UIActionMenuKeyboard(this);
     if (m_pool[UIActionIndexRuntime_Menu_MouseIntegration])
         delete m_pool[UIActionIndexRuntime_Menu_MouseIntegration];
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 51398)
@@ -32,4 +32,6 @@
     UIActionIndexRuntime_Simple_TakeScreenshot,
     UIActionIndexRuntime_Simple_InformationDialog,
+    UIActionIndexRuntime_Menu_Keyboard,
+    UIActionIndexRuntime_Simple_KeyboardSettings,
     UIActionIndexRuntime_Menu_MouseIntegration,
     UIActionIndexRuntime_Toggle_MouseIntegration,
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 51398)
@@ -855,4 +855,6 @@
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_TakeScreenshot));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_InformationDialog));
+    m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_Keyboard));
+    m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_KeyboardSettings));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_MouseIntegration));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Toggle_MouseIntegration));
@@ -891,4 +893,6 @@
     connect(gActionPool->action(UIActionIndexRuntime_Simple_InformationDialog), SIGNAL(triggered()),
             this, SLOT(sltShowInformationDialog()));
+    connect(gActionPool->action(UIActionIndexRuntime_Simple_KeyboardSettings), SIGNAL(triggered()),
+            this, SLOT(sltShowKeyboardSettings()));
     connect(gActionPool->action(UIActionIndexRuntime_Toggle_MouseIntegration), SIGNAL(toggled(bool)),
             this, SLOT(sltToggleMouseIntegration(bool)));
@@ -1198,4 +1202,14 @@
 }
 
+void UIMachineLogic::sltShowKeyboardSettings()
+{
+    /* Do not process if window(s) missed! */
+    if (!isMachineWindowsCreated())
+        return;
+
+    /* Open Global Preferences: Input page: */
+    showGlobalPreferences("#input", "m_pMachineTable");
+}
+
 void UIMachineLogic::sltToggleMouseIntegration(bool fOff)
 {
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 51398)
@@ -191,4 +191,5 @@
     void sltToggleGuestAutoresize(bool fEnabled);
     void sltAdjustWindow();
+    void sltShowKeyboardSettings();
     void sltToggleMouseIntegration(bool fDisabled);
     void sltTypeCAD();
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 51398)
@@ -251,4 +251,13 @@
     bool fSeparator2 = false;
 
+    /* Keyboard Settings action: */
+    if (m_pSession->allowedActionsMenuMachine() & RuntimeMenuMachineActionType_KeyboardSettings)
+    {
+//        pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_KeyboardSettings));
+//        fSeparator2 = true;
+    }
+    else
+        gActionPool->action(UIActionIndexRuntime_Simple_KeyboardSettings)->setEnabled(false);
+
     /* Mouse Integration action: */
     if (m_pSession->allowedActionsMenuMachine() & RuntimeMenuMachineActionType_MouseIntegration)
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 51398)
@@ -93,4 +93,12 @@
 }
 
+void UIMachineLogicNormal::sltPrepareKeyboardMenu()
+{
+    QMenu *pMenu = qobject_cast<QMenu*>(sender());
+    AssertMsg(pMenu, ("This slot should be called only on Keyboard menu show!\n"));
+    pMenu->clear();
+    pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_KeyboardSettings));
+}
+
 void UIMachineLogicNormal::sltPrepareMouseIntegrationMenu()
 {
@@ -121,4 +129,6 @@
     connect(gActionPool->action(UIActionIndexRuntime_Menu_VideoCapture)->menu(), SIGNAL(aboutToShow()),
             this, SLOT(sltPrepareVideoCaptureMenu()));
+    connect(gActionPool->action(UIActionIndexRuntime_Menu_Keyboard)->menu(), SIGNAL(aboutToShow()),
+            this, SLOT(sltPrepareKeyboardMenu()));
     connect(gActionPool->action(UIActionIndexRuntime_Menu_MouseIntegration)->menu(), SIGNAL(aboutToShow()),
             this, SLOT(sltPrepareMouseIntegrationMenu()));
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.h	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.h	(revision 51398)
@@ -43,4 +43,5 @@
     void sltPrepareSharedFoldersMenu();
     void sltPrepareVideoCaptureMenu();
+    void sltPrepareKeyboardMenu();
     void sltPrepareMouseIntegrationMenu();
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 51397)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 51398)
@@ -182,4 +182,10 @@
             gActionPool->action(UIActionIndexRuntime_Menu_MouseIntegration)->menu()->exec(pEvent->globalPos());
     }
+    /* Show keyboard LED context menu: */
+    else if (pIndicator == indicatorsPool()->indicator(IndicatorType_Keyboard))
+    {
+        if (gActionPool->action(UIActionIndexRuntime_Menu_Keyboard)->isEnabled())
+            gActionPool->action(UIActionIndexRuntime_Menu_Keyboard)->menu()->exec(pEvent->globalPos());
+    }
 }
 
@@ -352,4 +358,6 @@
             pIndicatorBoxHLayout->addWidget(pContainerWidgetHostkey);
         }
+        connect(pLedKeyboard, SIGNAL(contextMenuRequested(QIStateIndicator*, QContextMenuEvent*)),
+                this, SLOT(sltShowIndicatorsContextMenu(QIStateIndicator*, QContextMenuEvent*)));
     }
 
